ブログ運用スクリプトをローカルgitで管理するようにした話

IT・自動化
この記事は約5分で読めます。

ブログ運用スクリプトをローカルgitで管理するようにした話

この記事を読んで得られること

  • ブログ運用スクリプトをgitで履歴管理するメリットと、「メモで管理する」との違いがわかります。
  • ローカルgit(リモートなし)でどこまでできるか、コストゼロで始める最小構成がわかります。
  • Claude Codeと組み合わせると、gitがさらに活きるという話がわかります。

背景・きっかけ

このブログでは、WordPress投稿・記事チェック・インデックス申請といった繰り返し作業をPythonスクリプトで自動化しています。Claude Codeと一緒に作って、改善を重ねてきたものです。

ところが、改善を繰り返すうちにこんな状態になっていました。

「前回なんでこのコードを変えたんだっけ?」

スクリプトを見ても、変更した理由が残っていないのです。コードは最新版しかなく、なぜそうなっているかはClaude Codeとの会話の中に埋もれています。会話は長くなるにつれて圧縮されるので、経緯がだんだん追えなくなっていました。

解決策を考えた

最初に思いついたのは「変更理由をメモに残す」方法です。context/ ディレクトリに判断ログを書いておいて、Claude Codeがそれを読み込む、というやり方です。

ただ、このやり方にはいくつか問題があります。

  • 書き漏れが起きる。毎回律儀にメモを書くのは続きません。
  • メモが古くなる。コードは変わっているのにメモが追いついていない状態になります。
  • Claude Codeがメモ全文を毎回読み込むので、トークン(APIコスト)がかさみます。

比較して、gitには次の特徴があります。

  • コミットというかたちで、「いつ・何を・なぜ変えたか」が事実として残ります。
  • Claude Codeが git log --oneline -- <ファイル名> で必要な履歴だけ読み込めます。全文を読む必要がないのでトークン効率がよいです。
  • ローカルに閉じた運用ならコスト・セキュリティともにゼロリスクです。

結論として、ローカルgit(リモートなし) を導入することにしました。

実際にやったこと

1. gitリポジトリ化

git init でブログ運用フォルダをリポジトリにしました。

cd ~/ClaudeProjects/satosmemo
git init -b main

2. .gitignoreで除外するものを決める

satosmemoフォルダの構成(Finder)

機密情報と大容量ファイルは除外します。

# 機密情報(認証キー・APIキー)
_meta/wp-credentials.env
_meta/gcp-indexing-key.json
_meta/gemini-credentials.env

# 画像(163MB・バイナリ履歴は無駄が多い)
images/

# OS・エディタのゴミ
.DS_Store
__pycache__/

画像は大きいのでgit管理外にしました。画像と記事の対応関係は、Markdownドラフト内に書く画像挿入マップで追跡しています。

記事ファイル(published/, drafts/)は含めました。記事の改稿履歴も追えるようにするためです。

3. 初回コミット

現時点のスナップショットとして、全ファイルを一括コミットしました。

git add -A
git commit -m "初回コミット: ブログ運用環境の現状をスナップショット"
ターミナルでgit log --onelineを実行した結果。コミット3本が色付きで表示されている

58ファイル、.git ディレクトリのサイズは540KB程度でした。画像を除外しているので非常にコンパクトです。

4. コミット粒度とメッセージのルールを決める

「何を変えたか(what)」はdiffを見れば分かります。コミットメッセージには「なぜ変えたか(why)」を書くようにルール化しました。

wp_post.py: status明示を必須化(draft→publish事故対策)

こういう1行が、半年後に見たときに一番役立ちます。

5. 記事公開時にgitコミットを自動化

wp_post.py--publish オプションがあります。WordPressへの公開が成功したあとに git commit が走るように処理を追加しました。

毎回 git add && git commit をするのは続かないので、スクリプト内に組み込んでしまう方が確実です。

6. CLAUDE.mdに運用ルールを明文化

Claude Codeが自律的に動けるよう、CLAUDE.mdに以下を追記しました。

  • スクリプトの改修経緯を知りたいときは、メモより先に git log を叩く
  • コミット粒度と「why」重視のメッセージルール
  • クリティカルな操作(force push, reset –hard等)はユーザーに確認

Claude Codeはプロジェクトのルールファイルを毎回読むので、ここに書いておけば会話をまたいで同じ行動をしてくれます。

やってみてわかったこと

「Claudeが必要なときだけgit logを叩く」というシンプルな動作で説明コストの低減に成功しました。

以前は、スクリプト改修のたびに「前回どんな経緯でこうしたんだっけ」という説明を私がしなければなりませんでした。gitを入れてからは、Claude Codeが git log --oneline -- _meta/wp_post.py を自分で叩いて文脈を拾ってきます。

wp_post.pyの改修履歴だけを絞り込んで表示した結果

リモートリポジトリは作っていません。GitHubはプライベートリポジトリも無料ですが、下書き記事や運用スクリプトを外部サーバーに置く必要性を感じないため、今はローカル完結で運用しています。WordPressに本番データがあるので、ローカルのファイルが消えても困る部分は限られています。

コストのまとめ

項目 内容
金銭コスト 無料(ローカルのみ)
セットアップ時間 30分程度
.gitのサイズ 540KB(画像除外のため)
リモート なし(不要と判断)

まとめ

ブログ運用の自動化スクリプトは、書いて終わりではなく継続的に改善されるものです。「なぜこうなっているか」を記録に残す仕組みとして、ローカルgitは最小コストで最大の効果がありました。

Claude Codeと組み合わせることで「AIが自分でgit logを読んで文脈を把握する」という動きができるようになり、毎回の説明コストも下がりました。

WordPressブログの運用をスクリプトで自動化している方には、記事本体と一緒にgit管理することをおすすめします。Claude Codeを使った自動化の別の事例として、保育園の連絡帳を自動生成するアプリを作った話も参考にしてみてください。


コメント

タイトルとURLをコピーしました