Communityコーディング&開発github.com

ummydev/index-push

新しいページや変更されたページをGoogleやBingに迅速にクロール・インデックス登録させるためのスキル。デプロイ後に使用し、ユーザーが「インデックス登録して」「Googleに送信」「BingにURL送信」などと指示した際に、IndexNow、Search Console、Bing Webmaster Tools、優先順位付きキューを活用して対応します。

index-push とは?

このスキルは、ウェブサイトに新しいページや更新されたページを公開した際に、GoogleやBingなどの検索エンジンに迅速にクロール・インデックス登録を依頼するための包括的なワークフローを提供します。通常、サイトマップから発見されたURLがインデックスされるまで数週間かかることがありますが、このスキルはIndexNow、Google Search ConsoleのURL検査・インデックス登録リクエスト、サイトマップ再送信、Bing Webmaster ToolsへのURL送信という4つのチャネルを組み合わせることで、待ち時間を大幅に短縮します。特に、Google Search Consoleでの個別インデックス登録リクエストが効果的で、「不明」や「検出済み」のURLがリクエストから約1日でインデックスされた事例があります。スキルは、各チャネルの制限(例:Googleは1プロパティあたり1日約10件、Bingは100件)を考慮し、優先順位付きキューを使って効率的に処理します。また、インデックスされないページの診断方法(「参照ページが検出されませんでした」等のステータス分析)や、内部リンク追加による改善策も含んでいます。対応プラットフォームは、Claude Code、Cursor、CodexなどのAIエージェントで、ブラウザ操作が必要なSearch ConsoleやBing Webmaster Toolsは人間が操作することを前提としています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ummydev/marketing-team-skills/tree/HEAD/skills/index-push

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

インデックスプッシュ

ページを公開しても、すぐにクロールされるわけではありません。新しいドメインでは、Googleがサイトマップで見つけたURLを数週間放置することがあります。このスキルは、ページが公開された日からインデックスされるまでのルーティンワークです。4つのチャネルをすべて使用してください。それぞれ異なるエンジンに到達し、異なる制限があります。

チャネル到達先1日の制限方法
IndexNow(scripts/indexnow.mjs)Bing、Yandex、Naver、Seznam、Yep。Googleは含まないリクエストあたり10,000 URL1コマンド
Search Console URL検査 → インデックス登録をリクエストGoogleプロパティあたり約10 URL。米国太平洋時間の深夜頃にリセットブラウザ、1回に1 URL
Search Console サイトマップ → 再送信Google実質的に制限なしブラウザ、1フィールド
Bing Webmaster Tools → URL送信Bing100 URLブラウザ、リストを貼り付け

インデックス登録リクエストは、私たちにとってGoogleを動かした方法です。「不明」または「検出済み」だった8つのURLが、リクエストから約1日後にはすべてインデックスされました。サイトマップとIndexNowだけではGoogleのページは待たされたままでした。

ブラウジングルール。 Search ConsoleとBing Webmasterはサインインが必要なサイトです。人間のペースで1ページずつ作業し、UIをスクリプト化しないでください。ソーシャルサイトについても同様です。サイトがレート制限やブロックをかけてきたら、停止してユーザーに伝えてください。

初回セットアップ

  1. Search Console: ドメインプロパティを追加(DNS TXTレコードで確認)。そのTXTレコードは絶対に削除しないでください。削除すると確認が失効します。
  2. Bing Webmaster Tools: 「Google Search Consoleからインポート」が最速です。GSCのドメインプロパティはインポートできません。代わりにBingはURLプレフィックスサイト(https://example.com/)を作成しますが、これは機能します。そこにもサイトマップを送信してください。
  3. IndexNowキーファイル、最初の送信前にデプロイします:
    KEY=$(openssl rand -hex 16)
    printf '%s' "$KEY" > public/$KEY.txt          # サイトルートで提供される任意のフォルダ
    # コミット、デプロイ、その後キーだけが出力されることを確認:
    curl -s "https://example.com/$KEY.txt"
    
    キーは設計上公開されています(誰でもファイルを読める)、そのため package.json に含めることができます: "seo:indexnow": "INDEXNOW_KEY=<key> node scripts/indexnow.mjs --host example.com"
  4. キューファイル docs/seo/index-queue.md(以下のテンプレート)、リポジトリにコミットします。テンポラリフォルダやスクラッチフォルダには置かないでください。

ワークフロー:ページ公開当日

  1. ページがライブであることを確認。 自サイト、順次リクエスト:
    for p in /blog/new-post /zh/blog/new-post; do
      curl -s -o /dev/null -w "%{http_code} $p\n" "https://example.com$p"
    done
    curl -s https://example.com/blog/new-post | grep -o '<link rel="canonical"[^>]*>'
    
    すべてのURLが200を返し(リダイレクトではない)、自己参照カノニカルを持ち、サイトマップに含まれ、Googleがすでにクロールしている少なくとも1つのページ(ホーム、ブログインデックス、フッターの「最新投稿」ブロック、関連記事)からリンクされている必要があります。これらに失敗するものは送信しないでください。
  2. IndexNow。
    npm run seo:indexnow -- /blog/new-post /zh/blog/new-post
    npm run seo:indexnow -- --sitemap        # 大規模リリース後、または変更内容が不明な場合
    
    200または202は受け入れられたことを意味します(202は新しいキーが検証中の間は正常です)。403:キーファイルがライブでないか、内容が異なります。422:URLが別のホストにある場合、通常は www. とベアドメインの違い。
  3. キューを更新。 前回の実行以降の新規URLを、ライブサイトマップとコミットされたスナップショットの差分で見つけます(初回実行時はスナップショットを保存するだけ。--dry-run はキー不要):
    node scripts/indexnow.mjs --host example.com --sitemap --dry-run 2>/dev/null | sort > sitemap-now.txt
    comm -13 docs/seo/sitemap-snapshot.txt sitemap-now.txt     # スナップショット以降に追加されたURL
    mv sitemap-now.txt docs/seo/sitemap-snapshot.txt
    
    キューの順序:(1)本日公開されたページ、新しいものから順に。(2)一次言語を翻訳より先に(例:英語、中国語)。(3)時事情報(リリース、閉鎖など)をエバーグリーンより先に。(4)コンテンツが実質的に変更された既存ページ。他のロケールは最後。
  4. Search Consoleでサイトマップを再送信 多くのURLや新しいセクションを追加した後:サイトマップ → https://example.com/sitemap.xml を入力 → 送信。「検出済みページ」の数を自身のカウントと比較します。古くなることがあります:再送信するまで243と表示されていたのが、再送信後423になりました。
  5. Search Consoleでインデックス登録をリクエスト、キューの先頭から:
    • Search Consoleを開き、URL内のアカウント(/u/0/、/u/1/、/u/2/)がプロパティを表示していることを確認します。インデックスは日によって変わります。リストされている方を使用してください。
    • 上部の検査バーにURLを貼り付け、結果を待ち、「インデックス登録をリクエスト」をクリックし、ライブテストが完了するのを待ちます(約1分)。
    • 「インデックス登録がリクエストされました」ダイアログが表示された場合のみカウントします。ダイアログがなければ送信されていません。多くの場合、アカウントに権限がありません。
    • 初回試行で「Something went wrong」が発生した場合:1回再試行してください。通常は成功します。
    • 「Quota Exceeded」:その日は停止します。クォータは米国太平洋時間の深夜頃にリセットされます。1日約10件を見込んでください。
    • キュー行に日付を記入します。
  6. Bing Submit URLs: Bing Webmaster Tools → URL送信 → URLを送信 → キューから次のURLを1行に1つずつ、ページに表示されている残りのクォータ(1日100件)まで貼り付けます。キュー行に日付を記入します。
  7. 記録 各アクションにつき1行を docs/seo/log.md に、デプロイまたはコミット参照とともに記録します: - main=abc1234 live. IndexNow 18 URLs → 200. GSC requested 10 (Quota Exceeded on the 11th). Bing 100 submitted, 44 left in queue.

フォローアップ、1~3日後

URL検査で最新のページから最初に検査します(Bingにも同様のステータスを持つ独自のURL検査があります):

ステータス意味対応
URL is on Googleインデックス済みインデックス済みとマーク、キューから削除、ログに記録
URL is unknown to GoogleGoogleが読んだサイトマップになく、リンクも見つからないサイトマップを再送信、内部リンクを追加、インデックス登録をリクエスト
Discovered – currently not indexed、Referring page: None detectedGoogleはサイトマップからのみURLを知っており、クロールしていないすでにクロール・訪問されているページからのリンクを追加。外部リンクを獲得。インデックス登録をリクエスト
Crawled – currently not indexedフェッチされたが、まだインデックスする価値がないと判断された薄いコンテンツや重複コンテンツ(翻訳、テンプレート化されたページ)を確認。改善または統合。これ以上のリクエストは役に立たない
Duplicate、Google chose different canonicalカノニカルやhreflangの混乱カノニカルタグを修正。ロケールバージョンが同一でないことを確認
Page with redirect / Not found (404)サイトマップ内の誤ったURLサイトマップを修正

「Referring page: None detected」が重要な手がかりです:修正方法はリンクであって、さらなる送信ではありません。私たちに効果があったのは:ホームページとトップガイドから最新の5つの投稿へのリンクを含むフッターブロック、関連記事間の相互リンク、そしてREADMEがページにリンクしている公開GitHubリポジトリです。

Search Consoleのパフォーマンスデータは2〜3日遅れます。昨日の数値でページを判断しないでください。

キューファイルテンプレート

# インデックスキュー
先頭 = 次に送信。順序:最新のものから順。英語と中国語を他のロケールより先に。
制限:Googleインデックス登録リクエスト 1日約10件/プロパティ(米国太平洋時間の深夜頃リセット)。Bing URL送信 1日100件。

| URL | 追加日 | Googleリクエスト | Bing送信 | インデックス済み |
|---|---|---|---|---|
| https://example.com/blog/new-post | 2026-11-07 | 11-08 | 11-07 | |
| https://example.com/zh/blog/new-post | 2026-11-07 | | 11-07 | |

チェックリスト

  • 各URLがライブ:200、自己カノニカル、サイトマップ内、クロール済みページからのリンクあり
  • IndexNowが新規・変更URLに対して200または202を返した
  • キューが更新され、優先順位でソートされた
  • 大規模追加後にサイトマップを再送信。検出済み数が一致
  • Search Consoleインデックス登録リクエストをクォータまで実行。各リクエストがダイアログで確認済み
  • Bing URL送信をクォータまで実行
  • コミットまたはデプロイ参照を含むログ行が記録された。フォローアップ検査日が記載された

遭遇した落とし穴

  • インデックス登録リクエストが3日間効果なし。 確認ダイアログが一度も表示されませんでした。ブラウザのデフォルトのGoogleアカウントにプロパティへのアクセス権がありませんでした。所有するアカウント(別の /u/N/)でSearch Consoleを開くとすぐに修正されました。数日後、さらに別のインデックスでプロパティが開かれました。
  • 「Invalid sitemap address」。 ドメインプロパティで sitemap.xml と入力すると失敗します。完全な https://example.com/sitemap.xml が必要です。
  • 古いサイトマップカウント。 サイトに100ページあるのに、Search Consoleは再送信するまで11件の検出済みページと表示し続けました。その後、243件対423件になりました。
  • リンクのないページは見えないまま。 内部リンクなしで公開された2つのガイドが、数日後も「GoogleにURLが不明」のままでした。
  • クォータの見積もり誤り。 最初は1日約4リクエストと思っていましたが、実際は約10件でした。11件目は「Quota Exceeded」を返します。
  • その日の最初のリクエストが失敗 し、「Something went wrong」が表示されました。再試行で成功しました。
  • キューを紛失。 テンポラリフォルダに保存していた115 URLのBingリストがセッション再起動で消え、サイトマップから再構築しました。キューはリポジトリに保存してください。
  • キューがクォータより長い。 忙しい日の後、115 URLが100件のBingスロットを待っていました。優先順位で何を先に送るか決めました:英語と中国語の新規投稿を先に、翻訳は後。
  • セッション内にブラウザがない。 Search ConsoleとBingにはブラウザが必要ですが、IndexNowは不要です。IndexNowを実行し、ギャップをログに記録し、次のセッションで追いつきます。
  • 202、その後200。 IndexNowは新しいキーでの最初の送信には202、その後は200を返しました。どちらも成功です。
  • 翻訳がクォータを圧迫。 441のサイトマップURLのうち約392が翻訳でした。それらを手動ですべて送信すると、新しいドメインがめったにインデックスしないページに数日分のクォータを費やすことになります。

関連スキル

  • seo-page:このスキルでインデックス登録するページを構築します。
  • programmatic-pages:一度に多数のURLを公開します。キューの優先順位が最も重要です。
  • multilingual-seo:どのロケールを最初に公開・送信するか。hreflang。
  • competitor-pages、trend-keywords:キューの先頭に来る時事情報のページ。
  • keyword-research:そもそもどのページが存在するかを決定します。
  • ai-search:AIクローラー向けのllms.txtとrobots.txt。BingのインデックスはCopilotも利用します。
  • seo-daily-report:何がインデックスされ、明日何がキューにあるかを報告します。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

ummydev/ai-search

When the user wants to make a site readable, accurate and quotable for AI assistants (ChatGPT, Claude, Perplexity, Gemini, Copilot, Google AI Overviews) so they describe the product correctly and cite it. Use when the user says "llms.txt", "llms-full.txt", "AI search", "GEO", "AEO", "get cited by ChatGPT", "show up in Perplexity answers", "allow AI crawlers", "GPTBot in robots.txt", "AI gets our pricing wrong", "AI confuses us with another product", "brand name collision", "Organization schema sameAs" or "make the site agent-readable". Covers llms.txt, robots.txt for AI crawlers, definition sentences, comparison tables and FAQ, public pricing, Organization and WebSite structured data, and brand naming.

ummydev/remotion-video

When the user wants to make a vertical promo video of their own software product in code with Remotion, rebuilding the product's real UI instead of screen-recording it, with a TTS voice-over, captions timed to the voice and camera moves that zoom into details. Use when the user says "Remotion", "make a product video", "faceless demo video", "UI motion video", "programmatic video", "product reel", "animate our UI", "render the video", or wants a TikTok or Reels video about their app that an agent can re-render after every change.

ummydev/short-video-formats

When the user wants to choose or plan the format of a promo short video for TikTok, Instagram Reels, YouTube Shorts or Xiaohongshu, especially for a software product, dev tool or AI agent. Covers the four formats that carry this category (talking head over a demo, phone filming the screen, faceless UI demo, talking-head open into full-screen demo), screen layout rules, hooks and endings like "comment X and I'll send it", and how to make an AI presenter. Use when the user says "what kind of video should we make", "video format", "talking head", "faceless video", "AI presenter", "AI avatar", "UGC style", "hook ideas", "how should the first frame look", "comment to get the link", or "视频形式".

ummydev/video-retro

When the user wants to review how their short videos performed on TikTok, Instagram Reels or other platforms and decide what to make next. Covers reading views, likes, comments, saves and follows without scraping, the stats log, 24-hour and 72-hour checks, comparing topics, formats and hooks, the daily report and recording what to change. Use when the user says "how did the video do", "video stats", "复盘", "retro", "which videos worked", "why did this flop", "weekly video report", "update the stats", or at the start or end of a short-video working day.

関連スキル