PR

Claude Codeでブログ記事生成を完全自動化した全工程|36スクリプトの実験記録

eyecatch-b01 Claude Code活用

※ 本記事にはアフィリエイト広告が含まれます。

「ブログ自動化」と聞くと大げさに感じるかもしれないけど、やってることは泥臭い。Claude Codeと36本のスクリプトで記事生成パイプラインを組んだ全工程を、開設1日目・33本の実験データとともに晒す。1記事あたり平均5.4分、コストは月1,452円。夢のある数字に見えるけど、ここに至るまでの試行錯誤がかなりある。


なぜClaude Codeでブログ自動化なのか

1記事194秒。これが直近のパイプライン実行記録。

もともとは「AIでブログ書いたら楽じゃない?」くらいの動機だった。ChatGPTでもGeminiでもよかったはず。ただ、Claude Codeを選んだのには理由がある。

ターミナルから直接ファイル操作ができる。これがデカい。記事のMarkdownを生成して、画像を作って、WordPressにアップロードして——この一連の流れを1つのツールチェーンで完結させたかった。APIを叩くラッパーを自分で書く方法も試したけど、Claude Code SDKを使えばスクリプトからエージェントを呼べるので、結局そっちに寄せた。

アオキ所長
アオキ所長

正直、最初の2日間はChatGPT APIで組もうとしてた。途中でClaude Codeに乗り換えたのは「ファイル操作が自然にできる」の一点。

なぜ「今」これをやるのか

このブログ「AIビルドログ」は2026年3月24日に開設した。運営1日目の段階で6本公開している。手動で1本ずつ書いていたら、この本数は無理だった。

もうひとつ。Claude Codeの進化スピードが速すぎて、3ヶ月後に同じ手順が通用する保証がない。だから「今の時点での実験記録」として残しておく価値がある。完成品の紹介じゃなくて、スナップショットとして読んでほしい。


システム全体像と設計思想

Claude Codeブログ自動化パイプラインの全体像を示すフロー図、ネタ出しから公開までの8ステージ
36スクリプトで構成された記事生成パイプラインの流れ

スクリプト総数は36本。多いと思うかもしれない。自分でも「やりすぎたかな」と途中で何度か思った。

ただ、1つ1つは小さい。設計思想としては「1スクリプト1責務」を徹底した。記事生成、画像生成、レビュー、投稿——それぞれ独立して動かせるようにしてある。全部まとめて1本の巨大スクリプトにする案もあったけど、デバッグが地獄になるのが目に見えてたのでやめた。

コアの判断として大きかったのは3つ。

Claude Code SDKをパイプラインの中心に据えたこと。 スクリプトからClaude Codeのエージェントを呼び出す形にしたことで、プロンプトの管理がコード側に寄った。CLAUDE.mdにプロジェクト全体の指示を書き、個別のプロンプトは各スクリプトから渡す。この設計パターンの詳細はCLAUDE.mdの設計パターン集に書いた。

画像生成をAI画像ではなくHTML→Playwright変換にしたこと。 AI画像生成は日本語テキストがまともに出ない。何度か試して諦めて、HTMLテンプレートをPlaywrightでスクリーンショットする方式に切り替えた。

6ペルソナによる自動レビューを公開ゲートにしたこと。 レビューを通過しないと公開されない仕組み。これは後述する。


パイプラインの8ステージ解説

直近3本の実行時間を並べると——L01が194秒、L02が382秒、L03が404秒。記事の複雑さで倍くらいブレる。

ブログ記事自動生成パイプラインの8ステージを難易度順に整理したステップ図
各ステージの実装難易度と概要

ステージ1-3:仕込み

キーワード調査、構成設計、データ収集。ここは正直あまり面白くない。キーワードをもとに見出し構成をJSON形式で吐き出して、補足データ(サーバー料金、運営実績など)を自動取得してくる。エックスサーバーのスタンダードプラン月額1,320円みたいな価格情報も、スクレイピングで最新値を引っ張ってきている。

構成設計で地味に時間がかかったのが「記事タイプ」の定義。trustタイプ(権威性確立)、howtoタイプ(手順解説)、listタイプ(まとめ)——タイプごとにプロンプトの構成を変えている。この分岐ロジックだけで3時間くらい溶けた。

ステージ4:本文生成

ここがClaude Code SDKの出番。スクリプトからエージェントを起動して、構成JSONと補足データを食わせる。

ポイントは、CLAUDE.mdにペルソナ(アオキ所長)の文体ルールを全部書いてあること。「居酒屋の先輩が教えてくれる感じ」とか「箇条書き3つ以上連続禁止」とか。SDKから呼ぶときもこのCLAUDE.mdが読み込まれるので、文体の一貫性が保たれる。

サブエージェントを並列で走らせる実験もしている。セクションごとに別エージェントに書かせて結合する方式。これはサブエージェント活用術の記事で詳しく書いたけど、結合部分の文体統一がまだ課題。

ステージ5:画像生成

HTMLテンプレートを用意して、記事データを流し込み、Playwrightでキャプチャする。この記事に入っているインフォグラフィック画像も全部この方式。

AI画像生成(Stable Diffusion系)を試した時期もあったけど、日本語の文字入れが壊滅的だった。5回試して5回とも文字化け。HTMLテンプレート方式に切り替えてからは安定している。

ステージ6-7:レビューとリライト

6人のペルソナ(SEO担当、読者目線、ライター目線など)がそれぞれ記事を読んでスコアをつける。全ペルソナのスコアが基準を超えないと公開されない。

L02とL03はレビュー通過まで含めてそれぞれ382秒、404秒。レビューで落ちた場合はリライトが走るので、もう少しかかる。

ステージ8:WordPress投稿

REST API経由で投稿。アイキャッチ画像のアップロード、カテゴリ・タグ設定、メタディスクリプション——全部自動。ここは一番枯れてる部分で、トラブルもほぼない。


詰まったポイントと解決策

やってみて詰まった点

一番きつかったのは「AIっぽさ」の排除。 33本書いて28本リライトした。「〜と言えるでしょう」「〜ではないでしょうか」——Claude が好んで使うこの手の表現をプロンプトで禁止しても、別の形で出てくる。結局、レビューペルソナに「AI検出チェック」を持たせて、スコアリングに組み込むのが一番効いた。

2番目がプロンプトの肥大化。 文体ルール、構成ルール、禁止事項……全部盛り込んでいったらプロンプトが4,000字を超えた。トークン効率が落ちるし、指示の優先順位がClaude側で曖昧になる。対策として、CLAUDE.mdに共通ルールを置き、記事タイプ固有のルールだけスクリプトから渡す二層構造にした。

アオキ所長
アオキ所長

プロンプトが長くなりすぎると、逆にClaude が指示を飛ばすようになる。2,500字くらいが個人的な限界ラインだった。

3番目がSNS連携。 X(旧Twitter)のAPI認証で401エラーが出て、まだ解決できていない。自動投稿の導線が組めていないのは痛い。

ブログ自動化で詰まったポイント3つの解決状況を比較した図
解決済み2件、未解決1件の現状

運用コストと今後の展望

月額コストはサーバー代の1,452円のみ。Claude Codeの利用料はサブスクリプションに含まれているので、追加の従量課金は今のところ発生していない。

1記事あたりの生成時間は平均5.4分。人間が書いたら1本2〜3時間はかかる内容なので、時間効率は20倍以上。ただし「パイプライン構築にかけた時間」を含めると、まだ回収できていない。33本×2.5時間=82.5時間分の節約に対して、パイプライン構築に突っ込んだ時間は……正直まだ計測しきれていない。少なくとも数十時間は使っている。

ブログ自動化の運用コスト内訳と手動執筆との時間比較を示した図
月額コストと時間効率の現状

次に試すこと

Zenn・noteへの自動マルチ投稿。 WordPressだけじゃなく、Zennとnoteにも同時投稿する仕組みを作っている途中。プラットフォームごとに文体を微調整する必要があるので、そこのプロンプト分岐が次の実験テーマ。

X API認証の修正。 401エラーの原因を潰す。SNS導線ができないと、記事を書いても誰の目にも触れない。

レビュースコアと実際の読者反応の相関分析。 今はレビューペルソナのスコアで公開を判断しているけど、実際にPVや滞在時間と相関があるのかはまだ検証できていない。データが溜まったら分析する予定。

サブエージェントの本格活用。 セクション並列生成の文体統一問題が解ければ、生成時間をさらに半分に縮められる可能性がある。


開設1日目で33本。数字だけ見ると順調に見えるかもしれないけど、パイプラインの構築と調整にほぼ全時間を溶かしている。記事の質も、レビューシステムを入れてからだいぶマシになったとはいえ、まだ手動リライトが必要な箇所が出る。

完全自動化というよりは「8割自動・2割人間」が現実的な着地点だと思っている。その2割をどこまで縮められるかが、次のフェーズの勝負になりそう。


📬 パイプラインの改善記録や新しい実験結果は、メルマガで先に流しています。ブログに載せる前の生データや失敗ログも共有しているので、自動化の裏側に興味があれば覗いてみてください。

コメント

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