はてなブログに残していた旧記事はすべてこのサイトにリダイレクトするようにしていました(当時の手順はこちら)。とはいえ最近「一部記事がインデックスされない」現象が起きており、旧ブログ側に記事全文が残っていることで重複コンテンツ判定を受けているのではと疑ったため、今回は SEO を意識して旧記事本文を「要点+新サイトへの導線」に置き換えるバッチを作りました。

やりたかったこと

  • 旧記事は削除したくないが、全文を残す必要もない
  • 自分のドメインに移転済みの記事へ誘導したい
  • 184件もあるので手作業は無理

実装メモ

  • app/hatena_summary/hatena_summary.py に Python スクリプトを実装
  • Hatena の AtomPub API を WSSE 認証で叩いて記事一覧を取得
  • このリポジトリの _posts からタイトル一致で新サイトの本文を取得し、先頭 3 文を要点として抽出
  • 旧記事本文を「移転しました」+「要点メモ」+「続きを読むリンク」に置き換え
  • --dry-run で出力確認→実行。本番は 1 記事ずつ PUT

コマンド例:

python app/hatena_summary/hatena_summary.py --dry-run --limit 1
python app/hatena_summary/hatena_summary.py

環境変数 HATENA_BLOG_ID / HATENA_BLOG_DOMAIN / HATENA_API_KEY / NEW_SITE_URL をセットすれば他の記事にも使えます。詳しい手順は app/hatena_summary/README.md にまとめました。

結果

184 件のうち、下書きの 2 件を除いて全記事を置き換えました。旧 URL からアクセスしても要点だけが表示され、続きはこのサイトに誘導されるようになりました。

Updated: