
Claude Codeに個人ブログ運営を任せる|実際に事故った私が作った『壊さない自動化』の仕組み
現役のシステムエンジニアが、GCP と Next.js で個人ブログ「kabuman.com」を作り、記事の執筆から公開まで、Claude Code で回しています。その仕組みを公開します。
ブログは、運用が大変
記事を書く → 公開する → 修正する
→ ファクトチェックする → バックアップする → 本番反映する
これだけの作業を、毎回、人間がやるのは大変です。そこで、Claude Codeに任せます。人間がやるのは、体験した事実の用意と、最終判断だけです。
この記事は、ブログ運用を楽にしたい方に向けた記事です。
特に、Claude Codeを使って自分のWebサイトを運用したいエンジニアには、そのまま使える部分が多いと思います。
完成した仕組み
記事を書き込む入口は、コンテンツ操作API 1本だけです。作成・更新・公開だけを受け付けます。
Claude Code
│ ① drafts/<name>/brief.md と画像を読む
│ ② body.md(本文)を書く
▼
投稿コマンド(kb) ── Bearerトークン ──▶ コンテンツ操作API(<API_PREFIX>/*)
│
▼
src/lib/*(全ロジックはここだけ)
│ │
▼ ▼
MySQL GCS(画像)
▲
Next.js(公開ページ)
▲
ホストnginx(60秒キャッシュ)
▲
ロードバランサ(HTTPS)AIがミスをしても、影響は、APIで許した範囲に収まります。ルールは、`CLAUDE.md`(Claude Codeが毎回読む、ルールのファイル)の1か所に書きます。
この構成で、次のことが楽になりました。
記事の作成から公開まで、Claude Codeに一任
下書きは、共有URLで別のAIに共有
公開ページは、nginxのキャッシュで軽量化
デプロイは、失敗したら自動で復旧
DBは、毎日バックアップ
実例は kabuman.com です。
全部は任せません
人間の体験を記事にしてこそ、価値があります。
一方で、AIは事実を間違えることもあります。
そこで、任せていい範囲を決めました。
体験は、人間が用意。AIの推測は禁止
書き込みは、APIだけ。DBへの直接アクセスは禁止
変更を伴うコマンドは、指示があるまで実行禁止
事実は、別のAIと一次情報で確認
どこまで自動化できたか
役割を分けて、AI同士は競わせません。DBのバックアップは、cronが毎日自動で取ります。
人間
| ・ネタと画像を用意する。事実だけを書く
| ・公開とデプロイを、指示する
| ・事実確認の最終判断をする
▼
Claude Code
| ・本文を書き、画像を取り込み、下書きを作る
| ・共有URLを発行する
| ・ChatGPTの指摘を、裏取りして直す
| ・公開する
| ・デプロイを実行し、失敗したら前に戻す
▼
人が、共有URLと指示書を貼る
▼
ChatGPT
| ・公開前の記事を読み、事実の誤りを指摘する
▼
人が、指摘をClaude Codeに転記する
cron(毎日)
| ・DBのバックアップを取るClaudeとChatGPTをAPI連携すれば、もっと楽ですが、
AIコストを最小限にしたかったのと、人間が間に入ることで、
記事内容を、私も把握しながら完成させていくというフローにしてあります。
実際に起きた6つの事故
AIに任せて、実際に起きた事故が以下です。
古い下書きで、本番の手直しが消失
画像が全滅
太字が無効
バックアップが、書いてあるだけで未稼働
SSHが、IAP経由のつもりで全開
依存関係の更新で、本番ビルドが破損
原因と、指示は、有料部分に書いています。
有料部分で手に入るもの
この記事では、単なる考え方ではなく、Claude Codeにそのまま貼って使えるAI指示書を公開しています。
GCP環境構築
安全なコンテンツAPI
デプロイスクリプト
ファクトチェック
バックアップ
さらに、実際に発生した6つの事故について、なぜ失敗したのか/AIに何を指示すれば防げるのかまで公開しています
環境構築のAI指示書において、検証したのは、テスト用の代役コマンドでの動作確認までです。
実際のGCPへのapplyと、実サーバーでのデプロイは、していません。
私自身も、AI指示書を提示しつつ、途中で詰まったら、エラーをそのままClaudeに見せて、GCP環境を簡単に構築できました。