※ 本記事にはアフィリエイト広告が含まれます。
「AIブログって、結局どこまで自動なの?」と聞かれたら、「7割は人間がやってる」と答えるしかない。
このブログ「AIビルドログ」は、Python 36スクリプトと設定ファイル群で半自動運営している。ニュースのクロールからWordPress投稿まで1コマンドで流せるパイプラインを組んだ。ただし「1コマンドで全部OK」とはならなかった。AIが書いた文章の”っぽさ”を消す作業が想定の3倍重くて、完全自動化は早々に諦めた。この記事では、仕組みの全体像と、設計段階で転んだポイントをそのまま書いていく。
なぜ今これをやるのか
2026年3月24日にこのブログを立ち上げて、翌日までに28本の記事を生成した。合計39,784字、画像27枚。手で書いてたら1ヶ月かかる量を2日で出せたのは、パイプラインを先に設計したから。
ただ、動機は「ラクしたい」じゃない。AI副業ブログをやるなら、記事を量産すること自体がコンテンツになる。「どう作ったか」を透明に見せることで、E-E-A-T(経験・専門性・権威性・信頼性)のうち「経験」と「専門性」を同時に稼げる。記事ネタに困らないし、開発ログがそのまま信頼性の証拠になる。一石三鳥を狙った設計だった。
もうひとつ。AIブログの仕組み化について書いてる記事は多いけど、実際のコードとgitログを晒してるものはほぼない。「Pythonで自動化しました」と書いてあってもスクリプトの中身が見えない記事は、読んでも再現できない。このブログでは、パイプラインの構造をそのまま公開する方針でやってる。
設計思想——「全自動」を捨てたら速くなった
最初のプランは完全自動だった。クロールから投稿まで人間の介入ゼロで回す構想。3時間で諦めた。
理由はシンプルで、AIが生成する文章はそのまま出すと「AIが書きました」と自己紹介してるようなものだから。「〜と言えるでしょう」「〜ではないでしょうか」が連発する、箇条書きが7個並ぶ、段落の長さが均一——こういう特徴を消す作業は、現時点ではルールベースで自動化しきれない。
そこで設計方針を切り替えた。自動化するのは「判断不要な繰り返し作業」だけ。人間がやるのは「構成の最終判断」と「AI臭の除去リライト」の2つ。
具体的な分担はこう。

- AI担当: ニュースクロール、E-E-A-Tコンテキスト構築、下書き生成、画像生成、HTMLバリデーション、6ペルソナレビュー、WordPress投稿、メトリクス収集
- 人間担当: 記事構成の最終決定、リライト(文体調整・体験談の差し込み)、公開前の目視チェック
この分担に落ち着くまでに、記事3本分の試行錯誤があった。
生成フロー——パイプライン本体がやっていること
パイプラインの中核はパイプライン本体(run_pipeline.py)のフル実行モード。1つの記事IDを渡すと、以下の8ステップを順番に実行する。

ステップ1〜3: データ収集
ニュースソースのクロール、AI関連サービスの価格収集、サイト統計の取得。この3つは外部データを最新化するフェーズで、記事の内容には直接関係しないけど、E-E-A-Tコンテキストの鮮度を保つために毎回走らせてる。
ステップ4: E-E-A-Tコンテキスト構築
E-E-A-Tコンテキスト構築ツール(build_eeat_context.py)が、クロールしたデータ・過去の記事実績・サイト統計をまとめてJSONファイルに書き出す。このデータをドラフト生成時にプロンプトへ注入することで、「このブログは実際にこういう実績がある」という裏付けをAIに渡せる。AIに嘘の実績を書かせないための仕組み。
ステップ5: ドラフト生成
Claude Opusに構成指示とE-E-A-Tコンテキストを渡して、Markdown形式のドラフトを生成する。ここで使うプロンプトは記事ごとにプロンプト定義ファイル(ai_prompt.md)として管理していて、キーワード・ペルソナ・禁止表現・構成指示を全部含んでる。
ステップ6: 画像生成 + 注入
画像生成ツール(generate_inline_images.py)がドラフト内の AUTO_IMAGE マーカーを検出して画像を生成し、画像注入ツール(inject_inline_images.py)がWordPress用の <figure> タグに差し替える。画像生成の裏側については後述するけど、ここが一番苦労した工程。
ステップ7: バリデーション + レビュー
HTMLバリデーター(validate_post_html.py)が品質チェック(alt属性の欠落、混合コンテンツ、空見出し、口語表現の使いすぎ検出)を走らせる。その後、6ペルソナによる自動レビュー。レビューに通らないと投稿ステップに進めないゲートがかかってる。
ステップ8: 投稿 + メトリクス収集
WordPress REST APIで投稿し、パイプラインの実行時間やトークン使用量をメトリクス集約ファイル(build_log_data.json)に記録する。各ステップの所要時間も個別に計測していて、どこがボトルネックかを後から追える。
6ペルソナ自動レビュー——合格率100%の裏側
パイプラインの中で一番「作ってよかった」と思ってるのが、ペルソナレビューの仕組み。
記事タイプに応じて3〜6人のペルソナがドラフトを読んで、それぞれの専門領域からフィードバックを返す。具体的には以下の6人。

コアレビュアー(全記事で実行)
– プロブロガー(月30万PV): 離脱ポイント、情報密度、水増し検出
– 27歳会社員(ターゲット読者): 共感度、わかりやすさ、説教臭さ
拡張レビュアー(pillar・money記事で追加)
– UXデザイナー: 視覚構成、モバイル読みやすさ
– SEOスペシャリスト: 検索意図との整合、KW配置
– コピーライター: フックの強さ、CTA自然さ
– 競合ブロガー: 差別化、独自性
現時点で3記事×6ペルソナ=18レビューを回して、全部pass。ただこれは「最初から通った」わけじゃない。
初回のレビューでは、プロブロガーペルソナから「各H2に具体的な数字が1つもない。根拠なし」とcritical判定を食らった。ターゲット読者からは「説教に感じる」「もういいよ、わかったから」という指摘。これを受けてプロンプトを書き直し、ライティングルール自体を修正した結果、2ラウンド目で全passになった。
レビュー結果はJSONとサマリーファイルに保存される。致命的(critical)判定が1つでもあると、レビューゲート機能が投稿をブロックする。--force-post フラグで突破もできるけど、今のところ使ったことはない。
必要なデータ——データ収集ツールで手動入力ゼロ
ビルドログ系の記事を書くには一次データが必要になる。記事数、文字数、コミット履歴、レビュー結果、サーバー費用。これを毎回手で集計してたら面倒すぎて続かない。
データ収集ツール(sync_build_log.py)がその問題を解決してる。このスクリプトは5つのソースから自動でデータを引っ張ってくる。
- gitログ:
git log --formatでコミット履歴を取得。各コミットの変更ファイル数・追加行・削除行も--statで拾う - レビュー結果:
generated/*/review_results.jsonをスキャンして、ペルソナ数・pass/fail・致命的判定の有無を集約 - ファイルシステム: 記事ディレクトリをスキャンして、記事数・文字数・画像数を計算
さらにパイプライン設定ファイル(pipeline_config.json)からサーバー費用(月1,452円)を読み込み、トークン使用量からAPI費用の概算も出す。全部まとめてメトリクス集約ファイルに書き出す。
--dry-run オプションで「何が変わるか」を事前確認できるのも気に入ってる。実行はパイプライン本体の最終ステップで自動的に呼ばれるので、普段は意識しない。
やってみて詰まった点
AI画像の日本語テキスト問題——全滅からの方針転換
これが一番時間を溶かした失敗。
インフォグラフィックや解説図に日本語テキストを入れたくて、まずGemini(gemini-2.5-flash-image)で試した。結果、日本語が文字化けするか、意味不明な漢字の羅列になる。DALL-Eに切り替えても同じ。Google Imagenも試したけど、状況は変わらなかった。2026年3月時点で、主要なAI画像生成モデルは日本語テキストの描画がまともにできない。
3つ試して全滅。ここで半日使った。
最終的にたどり着いたのがPlaywright + HTMLテンプレート方式。HTMLとCSSでインフォグラフィックのレイアウトを組み、Playwrightでスクリーンショットを撮ってWebP画像にする。日本語フォントの問題は完全に解消されたし、テンプレートを使い回せるので2枚目以降は5分で作れる。
CSSの肥大化——400行を35行に
CocoonテーマのカスタムCSS、最初は400行近く書いてた。アバター画像の配置、吹き出しのスタイル、色の指定、レスポンシブ対応。でもSILKスキンに切り替えたら、スキンが標準で持ってる機能でほとんどカバーできた。結果、カスタムCSSは35行まで減った。
教訓として、テーマやスキンの標準機能を調べてから独自実装するのは当たり前なんだけど、「早く形にしたい」焦りで飛ばしてしまってた。
品質ゲート——投稿前に何をチェックしてるか
パイプラインには2つのバリデーションスクリプトが組み込まれてる。
HTMLバリデーター は、HTMLに変換したドラフトを検査する。検出するのは以下の4パターン。
<img>タグにalt属性がない(SEOとアクセシビリティ両方でNG)- プレースホルダーリンク(遷移先が未設定のリンク)が残っている
http://の混合コンテンツ(HTTPSサイトでHTTPリソースを読み込もうとしてる)- 空の見出しタグ
加えて、口語表現(「ぶっちゃけ」「正直」「地味に」など)の使用回数もカウントしていて、同じ表現が2回以上出てきたら警告を出す。AIは同じ口語を何度も使いがちなので、このチェックが意外と効く。
ユニーク性チェッカー(validate_uniqueness.py)は、記事間の重複を検出する。タイトルや見出しの類似度をチェックして、「同じような記事を2本書いてないか」を機械的に判定する。28本も記事があると、無意識に似た内容を書いてしまうリスクがあるので、ここは自動化して正解だった。
運用ルール——週2以下、不規則
投稿ペースは意図的に抑えてる。週2本以下で、曜日も固定しない。
理由は2つ。AIで量産してると見られたくないのが1つ。もう1つは、1本ごとのリライト品質を落としたくないから。パイプライン自体は1日10本でも生成できるけど、人間のリライト工程がボトルネックになるので、実質的に1日1本が限界。それを週2に絞ることで、公開前に「翌日の朝イチで読み直す」余裕を確保してる。
パイプライン設定ファイルで投稿先(WordPress / Zenn)の自動投稿ON/OFFを切り替えられるようにしてあるけど、現時点ではWordPressのみ。Zenn連携は仕組みだけ作って、まだ本格運用してない。
使用ツール・技術スタック
このパイプラインを構成してる主要な要素をまとめておく。
AI: Claude Opus(ドラフト生成・ペルソナレビュー)、Gemini 2.5 Flash(画像生成の試行)。メインはClaude Opus。Gemini は画像生成で使おうとして日本語問題にぶつかったので、現在は補助的な位置づけ。
自動化: Python 36スクリプト。パイプライン本体が各スクリプトをインポートして順番に実行する構造。Playwrightはスクリーンショット撮影とインフォグラフィック生成に使用。
インフラ: エックスサーバー(月1,452円)、WordPress + Cocoon(SILKスキン)。ドメインは無料キャンペーンで取得したので初期費用はサーバー代のみ。
設定: パイプライン設定ファイル(全体の挙動制御)、ペルソナ定義ファイル(6ペルソナの役割・判定基準)、テーマ設定(記事テーマ別のクロール対象)、アイキャッチプロンプト集(画像生成の指示)。設定ファイルだけで挙動を変えられるようにして、スクリプト本体はいじらなくていい設計にしてある。
データ管理: gitで全履歴を管理。初日のコミットで30ファイル+1,925行、翌日に30ファイル+2,112行追加・497行削除。メトリクス集約ファイルが全データの集約先。
向いている人 / 向いていない人
この仕組みは万人向けではない。
向いてる人: Pythonが書ける(読めるだけでもOK)、AIツールのAPI連携に抵抗がない、「記事を書く」より「記事を書く仕組みを作る」ほうが楽しいと思える人。あとは、1本の記事に2時間かけることを「効率的」と感じられるかどうか。手書きなら4時間かかるところを2時間に圧縮してる感覚。
向いてない人: 「AIに全部やってほしい」人。現時点では無理。あと、ブログの文章にこだわりがない人もたぶん合わない。AIの出力をそのまま出すなら、この仕組みは過剰。WordPressの管理画面から直接ChatGPTの出力を貼るほうが速い。
仕組み化のコスト(設計・開発・デバッグ)を回収できるのは、月10本以上のペースで記事を出し続ける場合だと思ってる。3本で終わるなら手書きのほうが総工数は少ない。
次に試す実験
パイプラインはv1として動いてるけど、改善したい箇所がいくつかある。
レビューの自動リライト精度を上げる。今はペルソナレビューで指摘を受けた後、Claude Opusに修正を依頼してる。でも修正が表面的(指摘された表現だけ差し替える)になりがちで、文脈を含めた書き直しはまだ人間がやってる。プロンプトの改善で、ここの精度を70%→90%くらいまで引き上げたい。
Zenn・noteへのマルチチャネル展開。WordPress以外への投稿パイプラインは仕組みだけ作ってある。ZennはZenn投稿ステップとして実装済みだけど、Zenn CLIのセットアップが手動で必要なので、まだ本番投入していない。noteはAPIの仕様調査中。
画像生成の自動化率を上げる。Playwright方式は安定してるけど、HTMLテンプレートを毎回書くのが手間。記事の内容から自動でテンプレートを選択して、テキストだけ差し替える仕組みを作りたい。テンプレートは現時点で4パターンあるので、記事タイプとの対応表をパイプライン設定ファイルに追加すればいけるはず。
記事の半自動生成の手順については、AIでブログ記事を半自動生成する手順|構成からWordPress投稿までで実際のワークフローを書いてる。このブログの立ち上げ初月にやったこと全部は、収益化レポート1にまとめる予定。


コメント