mcpField
S
seo-crawl-render

seo-crawl-render

github.com/hainrixzマーケティング・グロース79204 回インストール3 日前に更新
リポジトリ

seo-crawl-render について

seo-crawl-render は、Web ページを取得・解析して PageSnapshot v2 を作る Claude Code スキルです。ページのシグナルに応じてレンダリング方法を選び、単一ページと複数ページの処理に対応します。

主な機能

  1. 01単一ページと複数ページの取得
  2. 02静的・JavaScript レンダリングの選択
  3. 03ページ解析とサイト成果物の生成
  4. 04簡潔な実行サマリーの出力

活用シーン

  1. 01レスポンスヘッダーとステータスの監査
  2. 02サンプリングと robots ルールに沿ったクロール
  3. 03SEO 監査モジュールへのスナップショット提供

MCP 対応

Playwright または Firecrawl MCP で取得したレンダリング済み DOM ファイルを受け取り、外部レンダリング結果をスナップショットに含められます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/hainrixz/claude-seo-ai --skill seo-crawl-render

インストール後、Claude Code で/seo-crawl-renderを入力して読み込まれたか確認します。

詳細

seo-crawl-render

すべてのモジュールで使用される PageSnapshot(v2)を生成します。スクリプトが取得、解析、レンダリング、保存を行い、このスキルは実行するコマンドを選び、簡潔な標準出力の概要だけを読み取ります。Claude Code の WebFetch が返すのは、ヘッダー、ステータスコード、生の HTML を含まない情報損失のあるモデル要約であり、ホストをまたぐリダイレクトにも追従しません。そのため、取得手段として使用することはありません。

取得

  • 単一ページまたはローカルパス:node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <url|path> --out "${CLAUDE_PLUGIN_DATA}/runs" [--render auto|static|js] [--ua default|googlebot|bingbot|gptbot|oai-searchbot|claude-searchbot] [--renderer auto|chrome|playwright|none] [--rendered-file <dom.html>] [--max-bytes 5000000] [--json] — デフォルト以外の --ua を指定すると、pages/<slug>.ua-<preset>.json が書き込まれます。
  • 複数ページ:node "${CLAUDE_PLUGIN_ROOT}/scripts/crawl.mjs" <url> [--pages 12] [--max 40] [--per-template 2] [--depth 3] --out "${CLAUDE_PLUGIN_DATA}/runs" — ホームページとターゲットは常に含まれ、その後、検出されたテンプレートごとに最大 --per-template ページが対象になります。robots のルールに従い、スキップはすべて crawl.json.sampling に記録されます。--concurrency、--delay、--include/--exclude、--seeds、--sitemap-sample、--link-status、--no-robots も指定できます。
  • 標準出力の概要(実行ディレクトリ、スラッグ、件数、レンダリング判定、警告)だけを読み取ります。HTML を会話に貼り付けないでください。モジュールは pages/<slug>.json を Read し、pages/<slug>.html を Grep します。
  • ローカルディレクトリはビルド済み HTML として読み込まれます(status: null、ヘッダーは空)。ビルド済みの出力がないフレームワークのソースは終了コード 2 で終了します。先にビルドするか、デプロイ済みの URL を指定してください。

レンダリングの判定(スクリプト内で実行)

--render auto は、語数が 150 未満の場合、ページが依然として内容の少ない状態でハイドレーションマーカー(__NEXT_DATA__、__NUXT_DATA__、self.__next_f、空の #app/#__next ルート)が見つかった場合、アンカーが 3 個未満で h1 がない場合、または <noscript> の JS に関する通知がある場合に、レンダリングが必要と判定します。--render static はレンダリングせず、--render js は常にレンダリングを試みます。デフォルトは実行方法によって異なります。snapshot.mjs のデフォルトは auto ですが、crawl.mjs と audit.mjs のデフォルトは static です。ヘッドレス実行または複数ページの実行では、明示的に指定しない限りブラウザーは起動しません。

  • デフォルトの --renderer auto は、ヘッドレス Chrome/Chromium/Edge/Brave を自動検出します($CLAUDE_SEO_AI_CHROME → $CHROME_PATH → $PUPPETEER_EXECUTABLE_PATH → PATH → デフォルトのアプリパス → Playwright キャッシュ)。--renderer playwright は明示的な指定が必要で、すでにインストールされている場合にのみ使用されます。自動インストールされることはありません。--renderer none はレンダリングを完全に無効にします。--rendered-file <html> は、Playwright/Firecrawl MCP またはユーザーが取得した DOM を受け付けます。
  • render.needed && render.used === "none" の場合、スナップショットには confidence: reduced と render.hint が含まれます。M4.render.not_rendered を needs_api(重要度 3、軸 both、fixable: advisory)として出力し、ヒント("install Chrome, or pass --rendered-file from a render MCP")を引用してください。レンダリング済みのコンテンツを見たかのように扱ってはいけません。

PageSnapshot v2 — <run_dir>/pages/<slug>.json

{ target: {kind: "url"|"path", value},  request: {ua, accept_language, timeout_ms},
  status_chain: [{url, status, location, ms}],  redirects: {http_to_https, host_changed, www_normalized, trailing_slash_changed, hops},
  headers: {…},                                   // final response; set-cookie → cookie names only
  robots_directives: {header, meta: [], effective},
  body: {bytes, truncated, charset, sha256},  timing: {ttfb_ms, download_ms},
  raw_html_path, rendered_html_path,              // files beside the JSON; rendered is null when not rendered
  render: {needed, signals: [], used: "chrome"|"playwright"|"external"|"none", confidence: "high"|"reduced", available: [], hint, delta},
  parsed: {…},  parsed_rendered: {…}|null,         // parseDocument(): title, metas, robots_meta, canonicals, hreflang, anchors, headings, images, scripts, jsonld, landmarks, markers, word_count, text_sample …
  site: {robots: "site/robots.json", sitemaps: "site/sitemaps.json", discovery: "site/discovery.json"},
  tier: 0|1|2 }

サイトのアーティファクトは実行ごとに一度だけ構築されます:site/robots.json(解析済み REP とボットごとの判定)、site/sitemaps.json(インデックスの幅優先探索、gzip、lastmod 統計)と site/sitemap-urls.txt、site/discovery.json(/llms.txt、/llms-full.txt、/agents.md、/.well-known/ucp、/.well-known/ai-catalog.json、/sitemap_agentic_discovery.xml、/api/ucp/mcp のプローブ、および http:// → HTTPS の強制)。

ティア

  • 0 — スクリプト:実際のステータスチェーン、ヘッダー、生の HTML、解析済みドキュメント、サイトのアーティファクト。このティアにはすべての監査が到達します。レンダリングもフィールドデータもありません。
  • 1 — レンダラーおよび/または PSI を追加:自動検出されたヘッドレス Chrome またはオプトインの Playwright(または --rendered-file)、および/またはフィールド CWV 用の PageSpeed Insights キー。
  • 2 — アカウントデータを追加:Search Console/Merchant Center へのアクセスと、手動でエクスポートした Search Console の生成 AI データ。 モジュールは、スナップショットの tier より高いティアが必要な検出結果を needs_api として示します。暗黙に合格とすることはありません。

コメント