Hatena 要約アップデートスクリプト

Hatena Blog から Jekyll (このリポジトリ) に移行済みの記事を、一括で「要約 + 新サイトへの導線」だけの本文に書き換える Python スクリプトです。AtomPub API を使うため、実行には Hatena ID と API キーが必要です。

セットアップ

python3 -m venv venv
source venv/bin/activate
pip install -r app/hatena_summary/requirements.txt

環境変数か引数で以下を渡します。

変数 説明
HATENA_BLOG_ID Hatena ID
HATENA_BLOG_DOMAIN 例: aoma23.hatenablog.com
HATENA_API_KEY Hatena 開発者設定で取得できる AtomPub API キー
NEW_SITE_URL 省略可。デフォルトは https://aoma23.com
export HATENA_BLOG_ID=xxxx
export HATENA_BLOG_DOMAIN=xxxx.hatenablog.com
export HATENA_API_KEY=xxxxxxxxxxxxxxxxxxxx
export NEW_SITE_URL=https://aoma23.com

使い方

  1. _posts 配下にある Jekyll 記事から、先頭 3 文 (句点 !/? を区切りとみなす) を抽出して要点とします。さらに、https://aoma23.com/<ファイル名から日付を除いた部分>/ という URL を新サイトのリンクとして利用します。
  2. app/hatena_summary/hatena_summary.py を実行すると、Hatena API で取得できた最新記事から順番に本文を書き換えます。
python app/hatena_summary/hatena_summary.py --dry-run --limit 2
python app/hatena_summary/hatena_summary.py   # 実際に更新

主なオプション:

実装メモ

よくある確認フロー

  1. --dry-run --limit 1 でプレビュー
  2. Hatena の管理画面で該当記事が想定通りか確認
  3. バッチで更新 (小分け推奨)
  4. 数ページを Spot check

困ったときは requests.exceptions.HTTPError や XML のログを頼りに、HTTP レスポンスボディを確認してください。