CrawlForge
Laman UtamaPlaygroundKes PenggunaanIntegrasiHargaDokumentasiBlog
Automasikan Audit SEO dengan CrawlForge MCP
Use Cases
Kembali ke Blog
Kes Penggunaan

Automasikan Audit SEO dengan CrawlForge MCP

C
CrawlForge Team
Pasukan Kejuruteraan
6 April 2026
9 min bacaan
Dikemas kini 14 April 2026

Pada halaman ini

Menjalankan audit SEO teknikal secara manual pada laman 500 halaman mengambil masa 6-8 jam. Menyemak teg meta, mengesahkan hierarki tajuk, mencari pautan rosak, menganalisis kualiti kandungan -- ia kerja yang membosankan dan terdedah kepada kesilapan yang kebanyakan pasukan lakukan paling kerap setiap suku tahun (alat audit Lighthouse milik Google sendiri membantu, tetapi tidak boleh diskalakan untuk rangkak seluruh laman). Pada masa anda selesai, separuh daripada isu telah pun menjejaskan kedudukan anda.

CrawlForge menukar audit SEO sepanjang hari menjadi aliran kerja automatik selama 15 minit. Panduan ini menunjukkan cara membina saluran paip audit SEO yang lengkap yang menyemak setiap halaman pada laman anda untuk 20+ faktor kedudukan dan menjana laporan tindakan yang diutamakan.

Jadual Kandungan

  • Apa yang Diliputi oleh Audit SEO Ini
  • Gambaran Keseluruhan Seni Bina
  • Langkah 1: Rangkak dan Petakan Laman Anda
  • Langkah 2: Ekstrak dan Sahkan Metadata
  • Langkah 3: Analisis Kualiti Kandungan
  • Langkah 4: Semak Pautan dan Struktur Laman
  • Langkah 5: Jana Laporan Audit
  • Analisis Kos Credit
  • Hasil dan Manfaat
  • Soalan Lazim

Apa yang Diliputi oleh Audit SEO Ini

Audit automatik ini menyemak faktor SEO teknikal yang paling berkesan:

KategoriSemakanKesan
Teg metaPanjang tajuk, penerangan, Open Graph, kanonikalTinggi
KandunganBilangan perkataan, hierarki tajuk, ketumpatan kata kunciTinggi
PautanPautan rosak, halaman yatim, rantaian ubah halaSederhana
StrukturLiputan peta laman, kedalaman rangkak, corak URLSederhana
PrestasiSaiz halaman, masa respons, sumber yang menyekat pemaparanSederhana

Apakah itu audit SEO teknikal? Ia ialah semakan sistematik faktor kesihatan teknikal laman web yang menjejaskan rangkak, pengindeksan, dan kedudukan enjin carian. Tidak seperti audit kandungan yang memberi tumpuan kepada apa yang anda tulis, audit teknikal memberi tumpuan kepada cara enjin carian menemui dan memproses halaman anda -- termasuk isyarat seperti Core Web Vitals dan konfigurasi robots.txt yang betul.

Gambaran Keseluruhan Seni Bina

Saluran paip audit menggunakan lima alat CrawlForge:

LangkahAlatCreditsTujuan
Penemuan lamanmap_site3Jana inventori URL yang lengkap
Rangkak mendalamcrawl_deep5Lalui struktur laman dan cari isu
Semakan metadataextract_metadata1Sahkan teg meta setiap halaman
Analisis kandungananalyze_content3Skor kualiti kandungan dan kebolehbacaan
Audit pautanextract_links1Cari pautan rosak dan yatim

Langkah 1: Rangkak dan Petakan Laman Anda

Mulakan dengan inventori lengkap setiap halaman pada laman anda.

Typescript
import { Client } from '@modelcontextprotocol/sdk/client/index.js';

const client = new Client({
  name: 'seo-auditor',
  version: '1.0.0',
});

interface SiteAuditConfig {
  url: string;
  maxPages: number;
  maxDepth: number;
}

async function crawlSite(config: SiteAuditConfig) {
  // First, get the sitemap for a complete URL list
  const siteMap = await client.callTool({
    name: 'map_site',
    arguments: {
      url: config.url,
      max_urls: config.maxPages,
      include_sitemap: true,
      include_metadata: true,
      group_by_path: true,
    },
  });

  const mapResult = JSON.parse(siteMap.content[0].text);

  // Then crawl to discover pages not in the sitemap
  const crawlResult = await client.callTool({
    name: 'crawl_deep',
    arguments: {
      url: config.url,
      max_pages: config.maxPages,
      max_depth: config.maxDepth,
      extract_content: true,
      respect_robots: true,
    },
  });

  const crawled = JSON.parse(crawlResult.content[0].text);

  // Combine and deduplicate
  const allUrls = new Set([
    ...mapResult.urls,
    ...crawled.pages.map((p: { url: string }) => p.url),
  ]);

  // Flag pages in crawl but missing from sitemap
  const missingFromSitemap = crawled.pages
    .filter((p: { url: string }) => !mapResult.urls.includes(p.url))
    .map((p: { url: string }) => p.url);

  return {
    totalPages: allUrls.size,
    urls: Array.from(allUrls),
    missingFromSitemap,
    crawlDepthDistribution: crawled.depthDistribution,
  };
}

Langkah ini mengenal pasti halaman yatim (boleh dirangkak tetapi tiada dalam peta laman anda) dan memberi anda taburan kedalaman yang menunjukkan berapa banyak klik diperlukan untuk mencapai setiap halaman.

Langkah 2: Ekstrak dan Sahkan Metadata

Semak setiap halaman untuk isu teg meta yang menjejaskan kedudukan.

Typescript
interface MetaIssue {
  url: string;
  type: 'error' | 'warning';
  message: string;
}

async function auditMetadata(urls: string[]): Promise<MetaIssue[]> {
  const issues: MetaIssue[] = [];

  // Batch process metadata extraction
  const batchResult = await client.callTool({
    name: 'batch_scrape',
    arguments: {
      urls: urls.map(url => ({ url })),
      includeMetadata: true,
      maxConcurrency: 15,
    },
  });

  const results = JSON.parse(batchResult.content[0].text);

  for (const page of results.results) {
    const meta = page.metadata;
    const url = page.url;

    // Title checks
    if (!meta?.title) {
      issues.push({ url, type: 'error', message: 'Missing title tag' });
    } else if (meta.title.length > 60) {
      issues.push({ url, type: 'warning', message: `Title too long (${meta.title.length} chars, max 60)` });
    } else if (meta.title.length < 30) {
      issues.push({ url, type: 'warning', message: `Title too short (${meta.title.length} chars, min 30)` });
    }

    // Description checks
    if (!meta?.description) {
      issues.push({ url, type: 'error', message: 'Missing meta description' });
    } else if (meta.description.length > 155) {
      issues.push({ url, type: 'warning', message: `Description too long (${meta.description.length} chars)` });
    }

    // Open Graph checks
    if (!meta?.ogTitle) {
      issues.push({ url, type: 'warning', message: 'Missing og:title' });
    }
    if (!meta?.ogImage) {
      issues.push({ url, type: 'warning', message: 'Missing og:image' });
    }

    // Canonical check
    if (!meta?.canonical) {
      issues.push({ url, type: 'warning', message: 'Missing canonical URL' });
    }
  }

  return issues;
}

Langkah 3: Analisis Kualiti Kandungan

Gunakan analyze_content untuk menskor kebolehbacaan, kehadiran kata kunci, dan kedalaman kandungan bagi halaman paling penting anda.

Typescript
interface ContentScore {
  url: string;
  wordCount: number;
  readabilityScore: number;
  topTopics: string[];
  sentiment: string;
  issues: string[];
}

async function analyzePageContent(url: string): Promise<ContentScore> {
  // First extract clean content
  const content = await client.callTool({
    name: 'extract_content',
    arguments: { url },
  });

  const extracted = JSON.parse(content.content[0].text);

  // Then analyze it
  const analysis = await client.callTool({
    name: 'analyze_content',
    arguments: {
      text: extracted.content,
    },
  });

  const result = JSON.parse(analysis.content[0].text);
  const issues: string[] = [];

  // Flag thin content (under 300 words)
  if (result.wordCount < 300) {
    issues.push(`Thin content: only ${result.wordCount} words (recommend 800+)`);
  }

  // Flag low readability
  if (result.readabilityScore < 40) {
    issues.push('Content may be too complex for general audience');
  }

  return {
    url,
    wordCount: result.wordCount,
    readabilityScore: result.readabilityScore,
    topTopics: result.topics || [],
    sentiment: result.sentiment || 'neutral',
    issues,
  };
}

Langkah 4: Semak Pautan dan Struktur Laman

Pautan rosak menjejaskan kedua-dua pengalaman pengguna dan SEO. Ekstrak semua pautan dan sahkan bahawa ia diselesaikan dengan betul.

Typescript
interface LinkIssue {
  sourceUrl: string;
  targetUrl: string;
  type: 'broken' | 'redirect' | 'external-nofollow';
  statusCode?: number;
}

async function auditLinks(urls: string[]): Promise<LinkIssue[]> {
  const issues: LinkIssue[] = [];

  for (const url of urls) {
    const linksResult = await client.callTool({
      name: 'extract_links',
      arguments: {
        url,
        base_url: urls[0], // Use site root as base
      },
    });

    const links = JSON.parse(linksResult.content[0].text);

    // Check each internal link
    for (const link of links.internal || []) {
      try {
        const check = await client.callTool({
          name: 'fetch_url',
          arguments: { url: link.href, timeout: 5000 },
        });

        const response = JSON.parse(check.content[0].text);

        if (response.statusCode >= 400) {
          issues.push({
            sourceUrl: url,
            targetUrl: link.href,
            type: 'broken',
            statusCode: response.statusCode,
          });
        } else if (response.statusCode >= 300) {
          issues.push({
            sourceUrl: url,
            targetUrl: link.href,
            type: 'redirect',
            statusCode: response.statusCode,
          });
        }
      } catch {
        issues.push({
          sourceUrl: url,
          targetUrl: link.href,
          type: 'broken',
        });
      }
    }
  }

  return issues;
}

Langkah 5: Jana Laporan Audit

Gabungkan semua penemuan ke dalam laporan yang diutamakan.

Typescript
interface SEOAuditReport {
  siteUrl: string;
  auditDate: string;
  totalPages: number;
  overallScore: number;
  criticalIssues: number;
  warnings: number;
  sections: {
    metadata: MetaIssue[];
    content: ContentScore[];
    links: LinkIssue[];
    sitemapGaps: string[];
  };
}

async function generateReport(siteUrl: string): Promise<SEOAuditReport> {
  // Run all audit steps
  const site = await crawlSite({
    url: siteUrl,
    maxPages: 200,
    maxDepth: 4,
  });

  const metaIssues = await auditMetadata(site.urls);
  const linkIssues = await auditLinks(site.urls.slice(0, 50)); // Top 50 pages

  // Analyze top pages by importance
  const topPages = site.urls.slice(0, 20);
  const contentScores: ContentScore[] = [];
  for (const url of topPages) {
    contentScores.push(await analyzePageContent(url));
  }

  const criticalCount = metaIssues.filter(i => i.type === 'error').length
    + linkIssues.filter(i => i.type === 'broken').length;

  const warningCount = metaIssues.filter(i => i.type === 'warning').length
    + contentScores.reduce((sum, s) => sum + s.issues.length, 0);

  // Score: start at 100, deduct for issues
  const score = Math.max(0, 100 - (criticalCount * 5) - (warningCount * 2));

  return {
    siteUrl,
    auditDate: new Date().toISOString(),
    totalPages: site.totalPages,
    overallScore: score,
    criticalIssues: criticalCount,
    warnings: warningCount,
    sections: {
      metadata: metaIssues,
      content: contentScores,
      links: linkIssues,
      sitemapGaps: site.missingFromSitemap,
    },
  };
}

Analisis Kos Credit

Untuk audit laman 200 halaman:

OperasiAlatCreditsKuantitiSubjumlah
Pemetaan lamanmap_site313
Rangkak mendalamcrawl_deep515
Metadata (kelompok)batch_scrape54 kelompok20
Analisis kandungananalyze_content320 halaman60
Pengekstrakan kandunganextract_content220 halaman40
Pengekstrakan pautanextract_links150 halaman50
Pengesahan pautanfetch_url1200 semakan200
Jumlah setiap audit378 credits

Menjalankan audit bulanan menelan kos kira-kira 378 credits -- jauh dalam lingkungan 3,000 credits bulanan pelan Hobby. Peringkat Free (1,000 credits) meliputi 2-3 audit penuh.

Hasil dan Manfaat

Audit SEO automatik dengan CrawlForge menyampaikan:

  • Kelajuan: Lengkapkan audit 200 halaman dalam 15 minit dan bukannya 8 jam
  • Konsistensi: Semakan yang sama setiap kali, tiada jurang pengawasan manusia
  • Kekerapan: Beralih daripada audit suku tahunan kepada mingguan tanpa kos tambahan
  • Pengutamaan: Isu disusun mengikut keterukan supaya anda membaiki perkara yang penting dahulu

Pasukan yang menggunakan audit SEO automatik biasanya melihat peningkatan 15-25% dalam skor SEO teknikal dalam masa 3 bulan, menurut penyelidikan Ahrefs tentang kesan SEO teknikal.

Soalan Lazim

Bagaimanakah ini dibandingkan dengan alat audit SEO berbayar seperti Screaming Frog?

Saluran paip audit CrawlForge lebih fleksibel kerana anda mengawal dengan tepat apa yang disemak dan cara isu diskor. Alat seperti Screaming Frog menelan kos $259/tahun untuk lesen desktop, manakala model credit CrawlForge membenarkan anda menjalankan audit atas permintaan. CrawlForge paling sesuai untuk pasukan yang mahukan aliran kerja SEO yang boleh diprogramkan dan disepadukan dengan AI berbanding alat GUI.

Bolehkah saya menjadualkan audit untuk dijalankan secara automatik?

Ya. Balut fungsi generateReport dalam tugas cron atau fungsi tanpa pelayan (Vercel Cron, AWS Lambda) dan cetuskannya mengikut jadual pilihan anda. Audit mingguan ialah pilihan terbaik untuk kebanyakan laman.

Bagaimana pula dengan halaman yang dipaparkan dengan JavaScript?

CrawlForge mengendalikan pemaparan JavaScript secara automatik. Untuk halaman yang memerlukan interaksi (mengklik tab, mengembangkan bahagian), gunakan scrape_with_actions untuk memaparkan kandungan penuh sebelum analisis.


Mula audit laman anda hari ini. Dapatkan 1,000 credits percuma -- cukup untuk 2-3 audit laman yang lengkap. Tiada kad kredit diperlukan.

Sumber berkaitan:

  • 18 Alat Web Scraping dalam Satu MCP Server
  • Dokumentasi CrawlForge
  • Kes Penggunaan

Cuba sendiri — tiada pendaftaran diperlukan

Jalankan mana-mana daripada 27 alat scraping dan pengekstrakan CrawlForge dalam playground, kemudian mula secara percuma dengan 1,000 credits.

1,000 credits percuma • Isi semula setiap bulan • Tiada kad kredit diperlukan

Tag

seo-audittechnical-seoweb-scrapingautomationsite-crawlingmcpai-engineering

Tentang Penulis

C

CrawlForge Team

Pasukan Kejuruteraan

Membina MCP server web scraping yang paling menyeluruh. Kami mencipta alatan yang membantu pembangun mengekstrak, menganalisis dan mengubah data web untuk aplikasi AI.

Kekal dikemas kini dengan pandangan terkini

Dapatkan tutorial, kemas kini produk dan petua web scraping terus ke peti masuk anda.

Tiada spam. Berhenti melanggan bila-bila masa.

Praktikkan ini

Uji alat CrawlForge pada mana-mana URL — percuma, tanpa pendaftaran.

Pada halaman ini

Artikel Berkaitan

Bina Ejen Penyelidikan dengan CrawlForge Deep Research
Use Cases

Bina Ejen Penyelidikan dengan CrawlForge Deep Research

Cipta ejen penyelidikan AI yang mengumpul, mengesahkan, dan mensintesis maklumat daripada berpuluh-puluh sumber dalam beberapa minit menggunakan CrawlForge deep_research.

C
CrawlForge Team
|
16 Apr
|
10m
Bina Enjin Pengayaan Petunjuk Jualan dengan CrawlForge
Use Cases

Bina Enjin Pengayaan Petunjuk Jualan dengan CrawlForge

Kayakan petunjuk jualan dengan data syarikat, tindanan teknologi, dan butiran hubungan secara automatik. Scrape data perniagaan awam untuk melayakkan petunjuk dan mengutamakan capaian.

C
CrawlForge Team
|
14 Apr
|
10m
Automasi Migrasi Kandungan dengan CrawlForge
Use Cases

Automasi Migrasi Kandungan dengan CrawlForge

Migrasikan kandungan tapak web antara platform CMS secara automatik. Ekstrak halaman, kekalkan struktur, dan bina semula kandungan dalam sistem baharu anda tanpa menulis semula.

C
CrawlForge Team
|
12 Apr
|
9m

Footer

CrawlForge

Web scraping gred perusahaan untuk Ejen AI. 27 alat MCP khusus yang direka untuk pembangun moden yang membina sistem pintar.

Produk

  • Ciri
  • Playground
  • Harga
  • Kes Penggunaan
  • Integrasi
  • Alternatif
  • Changelog

Sumber

  • Mula Bekerja
  • Rujukan API
  • Templat
  • Panduan
  • Blog
  • Glosari
  • Soalan Lazim
  • Peta Laman

Pembangun

  • Protokol MCP
  • Claude Desktop
  • Cursor IDE
  • LangChain
  • LlamaIndex

Syarikat

  • Tentang
  • Hubungi
  • Privasi
  • Terma
  • Penggunaan Boleh Diterima
  • Cookies

Kekal dikemas kini

Dapatkan kemas kini terkini tentang alat dan ciri baharu.

Dibina dengan Next.js dan protokol MCP

© 2025-2026 CrawlForge. Hak cipta terpelihara.