動かざることバグの如し

近づきたいよ 君の理想に

はてなブログのsitemap.xmlをCIで自動送信するようにした

はてなブログのsitemap.xmlひどすぎ問題

これは昔から続いている問題なんだが、はてなブログだとインデックスが上手くいかないケースが有る。

先人の人たちが腐るほどに記事にしてくれている

karupoimou.hatenablog.com

chateau-vulpes.com

www.imaichido.com

kanaxx.hatenablog.jp

記事は消されているけど、はてな公式ですら問題を認識している。ならはよ直せよ。

GoogleSearchConsoleからのサイトマップ送信に失敗する問題について

どうもGoogle公式のAPIでインデックスの送信ができるのを知ったので自動化した。

成果物

ググったらコードあった。感謝

github.com

クローンしたのが以下

github.com

Github Actionsを以下のように作成

name: Github Action CI

on:
  push:
  schedule:
    - cron:  '57 22 * * *'

jobs:
  execute:
    name: Submit sitemap to Google
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: "Install compose packages"
        run: composer install

      - name: "Execute PHP"
        env:
          GCP_CREDENTIALS: ${{ secrets.GCP_CREDENTIALS }}
        run: |-
          echo $GCP_CREDENTIALS | base64 -di > credential.json
          php publish_sitemap_to_indexing_api.php "https://thr3a.hatenablog.com/sitemap_periodical.xml?year=$(date +%Y)&month=$(date +%-m)"

サービスアカウントの作成

ここが結構面倒くさい

  • GCPの管理画面から「Indexing API」「Google Search Console API」のAPIを有効化する
  • API とサービス/認証情報より「サービスアカウント」を新規作成
    • ロールは「閲覧者」でOK
  • 作成したサービスアカウントを選んで認証キーを生成、JSONを保存する
  • サーチコンソールからからユーザー管理を選択
  • さっき作ったサービスアカウントのメールアドレスをユーザー追加
    • 必ず権限は「オーナー」にする

GitHub ActionsのCI設定

ダウンロードしたJSONbase64に変換してSecretsに登録する。CIからは環境変数で渡る

cat credential.json | base64

CI回して全部200ならOK

スクリーンショット 2022-08-07 16.42.26.png

スケージュール入れたので毎日自動送信されるはず