IndexNowの「No candidate urls need to submit」エラーをGitHub Actionsで解決する方法
Microsoft Bing Webmaster Toolsで「IndexNowが機能していない」という警告が表示されることがある。これは特にAstroなどの静的サイトジェネレーター(SSG)を使用している環境で発生しやすい問題である。
本記事では、複雑な設定を避け、シンプルな curl コマンドで確実に通知を送る方法を解説する。
なぜIndexNowで「No candidate urls need to submit」と表示されるのか?
Section titled “なぜIndexNowで「No candidate urls need to submit」と表示されるのか?”GitHub Actionsで一般的に使われているIndexNow送信用アクション(例: bojieyang/indexnow-action)を使用している際、以下のような現象が発生することがある。
- Actionsのログ:
No candidate urls need to submit.と表示され、送信がスキップされる。 - Bing Webmaster Tools: トップページに「IndexNowが機能していない」旨の警告が表示される。
原因:サイトマップの更新日時判定の不一致
Section titled “原因:サイトマップの更新日時判定の不一致”多くのアクションは、サイトマップ内の <lastmod>(最終更新日時)タグを確認して「前回から更新があったか」を判定する。しかし、Astroなどのデフォルト設定ではサイトマップに更新日時が含まれていない場合があり、アクションが「更新なし」と誤判定して送信をスキップしてしまう。
解決策:curlコマンドで確実にIndexNowを実行する方法
Section titled “解決策:curlコマンドで確実にIndexNowを実行する方法”「賢すぎる判定」を回避し、確実にBingへ通知を届けるには、IndexNowのAPIエンドポイントを直接 curl で叩くのが最も確実で軽量な方法である。
-
IndexNowキーの配置確認 サイトのルートディレクトリ(Astroなら
public/フォルダ直下)に[キー].txtというファイルを作成し、その中身も[キー]と一致していることを確認する。 -
GitHub Secretsにキーを登録 GitHubリポジトリの Settings > Secrets and variables > Actions に、
INDEXNOW_KEYという名前でキーの値を保存する。 -
GitHub Actionsワークフローの修正
.github/workflows/deploy.ymlなどのデプロイフローの最後に、以下のステップを追加する。- name: IndexNow (Bing)run: |curl -i -X GET "https://www.bing.com/indexnow?url=https://[あなたのドメイン]/sitemap-0.xml&key=${{ secrets.INDEXNOW_KEY }}"-iオプション: 実行ログにHTTP/2 200 OKなどのレスポンスが表示されるため、成功の確認が容易になる。- ドメインとファイル名:
https://[あなたのドメイン]/sitemap-0.xmlの部分は、実際の環境に合わせて書き換えること。
この方法(curl直接叩き)のメリットは?
Section titled “この方法(curl直接叩き)のメリットは?”- 判定漏れがゼロ: 実行するたびに通知を強制するため、「更新が検知されない」というトラブルがなくなる。
- 依存関係の排除: 外部のGitHub Actionを利用しないため、メンテナンスの手間が減り、ワークフローも高速化する。
- デバッグが簡単: ログにBingからの生のHTTPレスポンスが表示されるため、エラー時の原因特定が瞬時に行える。
FAQ:IndexNowに関するよくある質問
Section titled “FAQ:IndexNowに関するよくある質問”Q: 手動で通知を送りすぎるとペナルティはあるか?
Section titled “Q: 手動で通知を送りすぎるとペナルティはあるか?”A: IndexNowは1日1万URLまでの制限があるが、サイトマップを1日数回通知する程度であれば、通常の運用範囲内でありペナルティの心配はない。
Q: 通知後、いつBingに反映されるか?
Section titled “Q: 通知後、いつBingに反映されるか?”A: 本サイトの検証では、curl 実行後5分程度でWebmaster Tools上のステータスが「正常」に切り替わった。
- IndexNowアクションの誤判定はサイトマップの
<lastmod>欠落に起因することが多い。 - アクションの自動判定に頼らず、直接
curlコマンドでAPIを叩くのが最も確実な解決策である。 - Actionsのログで
HTTP 200を確認できれば、インデックス登録は正常にリクエストされている。
他の記事を探す