Bloggerで公開した記事のURLをGoogle Indexing APIに自動通知し、インデックス登録作業を自動化するためのバッチプログラムです。Firestoreで各URLの通知日時を管理し、結果をメールで通知します。
- Blogger APIから全記事URLを取得し、FirestoreのURLを事前取得したキャッシュと突き合わせて登録・管理します。
- Firestoreで各URLの通知日時を管理し、通知日時が古い順に指定件数だけURLを抽出してGoogle Indexing APIへ通知します。
- 通知結果をHTML形式でまとめ、指定アドレスへメール送信します。
- 各種設定値は環境変数で管理します。
- 標準出力に実行ログを出力します(ファイル出力はありません)。
| 変数名 | 用途 |
|---|---|
| BLOGGER_INDEX_REGIST_API_KEY | Blogger APIキー |
| BLOG_ID | 対象ブログのID |
| MAIL_FROM | 送信元メールアドレス(Gmail) |
| MAIL_PASSWORD | 送信元メールアドレスのアプリパスワード |
| MAIL_TO | 通知先メールアドレス |
blogger_register.py 冒頭で定義されています。用途に応じて値を調整してください。
| 定数名 | 用途 | デフォルト値 |
|---|---|---|
| BATCH_SIZE | 1回のバッチで通知するURLの最大件数 | 5 |
| SLEEP_SECONDS | 1件ごとに通知後の待機秒数(API制限緩和用) | 10 |
| SMTP_SERVER | メール送信に利用するSMTPサーバー | "smtp.gmail.com" |
| SMTP_PORT | SMTPサーバーのポート番号 | 587 |
| INITIAL_TIMESTAMP | 新規URL登録時のlast_sent初期値 | Unix epoch (1970年1月1日) |
| MIN_NOTIFY_INTERVAL_DAYS | 通知間隔の最小日数。この日数以内に通知されたURLはバッチ対象から除外される(0以下=制限なし) | 0 |
| FIRESTORE_BATCH_LIMIT | Firestoreの取得・書き込みバッチ上限 | 500 |
- Blogger APIから取得した記事URL
- Firestoreコレクション
url_notifications
- Google Indexing APIへの通知
- Firestoreの
last_sentフィールド更新 - 通知結果のHTMLメール
- コレクション名:
url_notifications - ドキュメントID: URLをBase64エンコードした文字列
- フィールド:
url: 記事URLlast_sent: 最終通知日時(タイムスタンプ)
Google Cloud Functions等のサーバーレス環境での実行を想定していますが、ローカル実行も可能です。
python blogger_register/blogger_register.py※必要な環境変数を事前に設定してください。
- 環境変数から各種設定値を取得
- Google認証セッションを初期化
- Blogger APIから記事URL一覧をFirestoreに登録
- Firestoreから通知日時が古い順に指定件数だけURLを抽出
- Google Indexing APIへ通知し、結果をFirestoreに反映
- 全通知結果をHTMLメールで送信
本プログラムは並列実行を想定していません。URL一覧のキャッシュは実行開始時のスナップショットであり、複数プロセスの同時実行時に競合が発生する可能性があります。
- 新規URL: Firestore登録時に Unix epoch (1970年1月1日) を設定し、優先的に通知されるようにします。
- 既存URLでlast_sentなし: Unix epoch で初期化します。
- 既存URLでlast_sentあり: 更新不要のため書き込みを行いません。
- 通知成功後: バッチ終了時にまとめて現在時刻へ更新され、次回実行時の優先度が下がります。
- 環境変数未設定: エラー出力し処理中断
- API通知失敗: 標準出力にエラー内容を出力し、処理は継続
- メール送信失敗: 標準出力にエラー内容を出力
- 通知結果はHTML形式でメール送信されます。
- 件名は通知結果に応じて自動で変化します。
- 失敗が1件でもあれば「【エラー】インデックス通知バッチ結果: 件数」
- 全て成功の場合は「【完了】インデックス通知バッチ結果: 件数」
- メール本文のサンプルは
メール通知プレビュー.htmlを参照してください。
- このプログラムはMITライセンスに基づいて提供されます。
| ライブラリ名 | バージョン | ライセンス |
|---|---|---|
| cachetools | 5.5.2 | Apache License 2.0 |
| certifi | 2025.6.15 | Mozilla Public License 2.0 |
| charset-normalizer | 3.4.2 | MIT License |
| google-api-core | 2.25.1 | Apache License 2.0 |
| google-api-python-client | 2.175.0 | Apache License 2.0 |
| google-auth | 2.40.3 | Apache License 2.0 |
| google-auth-httplib2 | 0.2.0 | Apache License 2.0 |
| googleapis-common-protos | 1.70.0 | Apache License 2.0 |
| httplib2 | 0.22.0 | MIT License |
| idna | 3.10 | BSD 3-Clause License |
| proto-plus | 1.26.1 | Apache License 2.0 |
| protobuf | 6.31.1 | BSD 3-Clause License |
| pyasn1 | 0.6.1 | BSD 2-Clause License |
| pyasn1_modules | 0.4.2 | BSD 2-Clause License |
| pyparsing | 3.2.3 | MIT License |
| requests | 2.32.4 | Apache License 2.0 |
| rsa | 4.9.1 | Apache License 2.0 |
| uritemplate | 4.2.0 | Apache License 2.0 |
| urllib3 | 2.5.0 | MIT |
- VSCode バージョン 1.101.2
- Python 3.12.10
| バージョン | 日付 | 内容 |
|---|---|---|
| 1.0.0 | 2025-07-31 | 初版リリース |