【実践ガイド】Gemini Sparkで構築するブログ投稿自動化パイプライン — ハーネス制御とWP REST API連携

アイキャッチ画像 AI・自動化

例えるなら、本システムが実現するブログ自動化パイプラインは「記者が手書きした原稿のメモを渡すだけで、専門チームがリサーチ・校閲・写真手配・組版を行い、輪転機を回して美麗な新聞に仕上げる全自動印刷ファクトリー」です。

ブログや技術メディアを継続的に運用し、質の高い情報を発信し続けることは、多くのクリエイターにとって時間との戦いです。1つの記事を世に送り出すまでには、企画立案、ファクトリサーチ、本文執筆、推敲・校正、アイキャッチや図解の作成、WordPressでの入稿と装飾といった、膨大で定型的なプロセスが存在します。

「生成AIで記事作成を自動化したい」と考えたとき、単一の長大なプロンプトで記事全体を一括出力させようとすると、途中で論理が破綻したり、事実誤認(ハルシネーション)が混入したり、画像ブロックのHTML属性が壊れてエディタが無効コンテンツエラーを起こすといった深刻なトラブルに直面しがちです。

本記事を読むことで、以下の3大ベネフィットが3分でスッキリ理解できます。

  • 専門サブエージェントによる分業パイプライン: 企画(01_plan)からリサーチ・執筆・校正・画像生成・WP成形までを星型アーキテクチャで自律連携させる設計手法
  • 双方向リライトと事前クロスバリデーション: 既存記事のフェッチ(wp_fetcher)、事前バックアップ、Gutenbergブロック破損を未然に防ぐ4大バリデーション
  • 投稿直後の自動ブラウザ実画面検証: 画面崩れやエラーを人間が気づく前に機械的に検知・自己修復するハーネスエンジニアリング
アイキャッチ: ブログ投稿自動化パイプライン
図解: ブログ自動化パイプラインの7フェーズ連携&ハーネス安全監視アーキテクチャ

スポンサーリンク

1. ブログ自動化システムのアーキテクチャと3階層ルール

1. ブログ自動化システムのアーキテクチャと3階層ルール

システム全体を堅牢かつ拡張しやすくするために、本システムでは3階層ルール (3-Tier Directives) による責任とルールのカプセル化(分離管理)を採用しています。

/Users/totsu00/spark_work/
├── GEMINI.md                          # 第2階層: プロジェクト指示書 (動作環境・パス定義)
├── main.py                            # 統一CLIエントリーポイント
│
├── hooks/                             # 宣言的ライフサイクルフック
│   ├── pre_task.md                    # 実行前フック(過去失敗ログの自動点検)
│   └── post_task.md                   # 実行後フック(詳細ログ出力+シートサマリー)
│
├── agents/blog_orchestrator/          # オーケストレーターエージェント
│   ├── AGENT.md                       # 第3階層: エージェント仕様書
│   ├── agent.py                       # パイプライン制御プログラム
│   └── state.json                     # 実行状態・進捗管理(レジューム用)
│
├── skills/                            # 専門サブスキル群(単一責任原則)
│   ├── blog_researcher/
│   ├── blog_writer/
│   ├── blog_image_generator/
│   ├── blog_wp_publisher/            # wp_fetcher, wp_poster, verify_post_browser
│   └── sheets_logger/
│
└── output/blog/                       # 成果物出力先
    └── drafts/{YYYYMMDD}_{slug}/      # 記事別専用フォルダ
        ├── state.json                 # 該当記事の進捗メタデータ
        ├── 01_plan.md                 # 企画書
        ├── 02_research.md             # リサーチ資料
        ├── 03_draft.md                # 初稿原稿
        ├── 04_proofread.md            # 校正後原稿
        ├── 05_wp_data.md              # WP投稿用プレーンHTML成形データ
        ├── wp_post_input.json         # API送信用ペイロード
        └── images/                    # 実画像ファイル群

3階層指示ルールの基本原則

  1. 第1階層(Global Directive): クラウド上の gemini-spark-instructions。対話トーン、プランモード、全フェーズでのサブエージェントレビュー必須化、ファクトチェック原則などの全域共通規範を規定します。
  2. 第2階層(Project Directive): 接続フォルダ直下の GEMINI.md。作業ルート (/Users/totsu00/spark_work/)、ドメイン別成果物出力パス(output/blog/drafts/)、Python 3.12仮想環境の厳格運用を定義します。
  3. 第3階層(Agent / Skill Spec): 各フォルダ内の AGENT.md や SKILL.md。単一責任原則に基づき、個別の入出力フォーマットや具体的スクリプト呼出手順をカプセル化します。

2. 専門サブスキルによる自律連携パイプライン

2. 専門サブスキルによる自律連携パイプライン

一連の投稿プロセスは、料理の厨房のように役割分担された「専門サブスキル」が順序立ててバトンリレー方式で処理を行います。各サブスキルは前のステップが作成した成果物ファイルをインプットとして受け取り、自身の役割に特化したアウトプットを出力します。

【新規執筆フロー】
[Phase 1: 企画会議] ──> [Phase 2: リサーチ] ──> [Phase 3: 執筆] ──> [Phase 4: 校正]
  01_plan.md              02_research.md           03_draft.md           04_proofread.md
                                                                               │
[Phase 7: WP投稿] <── [Phase 6: WP成形] <── [Phase 5: 画像生成] <─────────────┘
  wp_poster.py            05_wp_data.md           generate_blog_images.py

【閉ループ・リライトフロー】
WordPress (REST API) ──> wp_fetcher.py ──> 00_original.md / 03_draft_rewrite.md
                                                         │
WordPress (更新) <── wp_poster.py <── 04_proofread.md <── リード改善・FAQ・内部リンク追加
         │
verify_post_browser.py (実画面自動検証)

パイプラインの各フェーズと詳細役割

  1. 企画・編集会議 (blog-editor-meeting): ターゲットペルソナ、狙い目キーワード、H2/H3構成案を策定し、01_plan.md を作成します。
  2. ファクトリサーチ (blog-researcher): Web検索ツールを活用し、信頼性の高い技術ドキュメントや最新事例を調査して 02_research.md へ出力します。
  3. 本文執筆 (blog-writer): 専門用語に日常アナロジーを交え、コピペで動く設定・コード例を省略せずに記述して 03_draft.md を作成します。
  4. 校正・SEO最適化 (blog-proofreader): 誤字脱字、ファクト照合、重要検索キーワードの配置、リーガルリスクを点検し、04_proofread.md を完成させます。
  5. 画像企画・一括自動生成 (blog-image-generator): 原稿から視覚的概念を抽出し、アイキャッチや本文図解画像を images/ ディレクトリへ全自動生成します。
  6. WordPress投稿データ生成 (blog-wp-publisher): Gutenbergブロック完全準拠のHTML構造へ成形し、05_wp_data.md および wp_post_input.json を生成します。
  7. WordPress API自動投稿・更新 (wp_poster.py): メディアアップロード、URLピンポイント置換、下書き保存・更新を実行し、投稿直後に verify_post_browser.py で自動画面検証を行います。

3. 双方向リライトと4大事前クロスバリデーション

2026年9月の最新アップデートで配備されたのが、「双方向リライトパイプライン(Closed-Loop Rewrite)」と、投稿事故を物理的にゼロにする「4大事前クロスバリデーション」です。

① wp_fetcher.py による既存記事とメタデータの自動取得

WordPress REST API から既存記事をID指定で取得し、タイトル、本文(raw / rendered)、カテゴリ名、タグ名、アイキャッチ情報を自動解決してローカルワークスペースへ配備します。これにより、過去記事のリライトが数秒で着手可能になります。

② 4大事前クロスバリデーション(wp_poster.py)

WordPressへデータを送信する直前に、以下の4重チェックが自動実行されます。不整合が1件でもあれば即座に送信を緊急停止(Abort)します。

  • Check 1: 異物キーワード混入検知: プロンプト指示文や内部査読メモ、開発者向け中間ログ等の不要テキストがタイトル・本文に誤混入していないかを完全監視。
  • Check 2 & 3: 画像実在証明: 本文中の <img src="..."> や画像ペイロードに指定されたファイルがローカルに実在するかを検証し、404リンク切れを遮断。
  • Check 4: Gutenberg無効ブロック検知: エディタで「想定されていないコンテンツ」エラーを起こしやすい非推奨コメント(wp:cocoon-blocks/* 等)を排除し、Cocoon標準ショートコード(...)への統一を強制。

③ 公開ステータス保護と自動バックアップ

すでに公開されている記事をリライト更新する際、誤って下書き(draft)に戻してしまう事故を防止する「ステータス保持ガードレール」が作動します。また、更新直前の完全な現行データが backup_before_update_{id}_{timestamp}.json として自動バックアップされるため、いつでもワンクリックで原状復帰が可能です。

④ 投稿直後の自動ブラウザ実画面検証(verify_post_browser.py)

投稿・更新が完了した直後、スクリプトが自律的に公開URLをHTTPおよびブラウザレンダリングで検証し、ブロックエラーの有無やブログカードの表示を実画面レベルで検査します。


4. 実装コード解説:事前バリデータとステータスガード

本システムを支える核心コードの一部を紹介します。

# skills/blog_wp_publisher/scripts/wp_poster.py より抜粋
def validate_input_cross_reference(post_data, base_dir):
    """送信直前の事前クロスバリデーション (異物混入 & 画像実在証明)"""
    title = post_data.get("title", "")
    content = post_data.get("content", "")
    images = post_data.get("images", [])
    errors = []

    # 1. 異物キーワードの混入チェック
    for kw in EVALUATION_KEYWORDS:
        if kw in title or kw in content:
            errors.append(f"[Check 1 FAIL] 評価キーワード '{kw}' が混入しています。")

    # 2. Gutenbergブロック無効化エラーの事前検知チェック
    invalid_blocks = re.findall(r'<!--\s*wp:cocoon-blocks/[^\s>]+', content)
    if invalid_blocks:
        errors.append(f"[Check 4 FAIL] Gutenberg無効コンテンツエラーの原因となる非推奨ブロックが検出されました: {invalid_blocks}")

    if errors:
        print("[ABORT] 事前クロスバリデーション失敗 (送信緊急停止)")
        sys.exit(1)

このように、コードレベルで厳格な安全装置を設けることで、AIの出力ゆらぎに左右されない安定した運用基盤が実現します。


よくある質問(FAQ)

Q1. リライト時に公開中の記事が勝手に下書きに戻ってしまう心配はありませんか?

心配ありません。wp_poster.py には「公開中記事の下書き誤戻しを防止するステータス保護ガードレール」が標準搭載されています。更新対象の記事が publish(公開中)である場合、意図的な --status draft 指定がない限り元の公開状態が自動維持されます。また、更新直前のデータはタイムスタンプ付きJSONで自動退避保存されます。

Q2. Gutenbergのブロック破損エラーはどのように未然防止していますか?

Cocoonなどのテーマ特有の独自ブロック構文(wp:cocoon-blocks/*)を直接書き込むと属性不整合でブロック破損が起きやすいため、本パイプラインでは標準段落とCocoon標準ショートコード(...)への自動置換をルール化しています。さらに送信前の Check 4 バリデーションおよび投稿直後の verify_post_browser.py による実画面自動検証の二重防御でエラーを根絶しています。

Q3. スプレッドシートへの実行ログ追記はパイプラインの速度に影響しませんか?

影響しません。Zero-Prompt Harness の append_log.py は threading.Thread(daemon=True) により完全非同期・バックグラウンドで実行されます。通信障害時にはローカルの pending_sheets_queue.json に安全退避され、次回タスク実行時に自動で再送(セルフヒーリング)されるため、メインの投稿処理は常に最速で完了します。


あわせて読みたい:ブログ自動化&ハーネスエンジニアリング関連記事

【図解でわかる】なぜ今「ハーネスエンジニアリング」なのか?〜AIエージェントの暴走を防ぎポテンシャルを100%引き出す動的制御の技術〜
生成AI(LLM)を自社プロダクトや業務フローに組み込み、「AIエージェント」として自律動作させる試みが急速に広がっています。しかし開発が進むにつれ、「プロンプトをどれほど調整してもハルシネーションが止まらない」「無限ループや誤操作で高額な...
日本国内本格展開!Googleの「24時間自律稼働AI」Gemini Sparkがもたらす衝撃と、それを支える裏側の技術
毎日のデスクワークを例えるなら、Googleが本格展開を開始した「Gemini Spark」は、オフィスのデスクで24時間365日黙々と資料を作成し、連絡や手配を代行してくれる「超有能な専属執事」です。「AIに指示を出したものの、回答待ちで...
【箇条書きから図解化】Gemini スライド作成術!Googleスライド AIで自動生成する神プロンプト
「明日の会議で使うスライド、伝えたいことを詰め込んだら文字ばかりで真っ黒になってしまった……」「図解やレイアウトを綺麗に整えようとしても、四角形や矢印の微調整に何時間もかかって本質的な仕事が進まない……」企画書や提案資料、社内報告のスライド...
【完全ガイド】Gemini Sparkの使い方と活用法|Gemとの違いからMac版・自動化スキルまで解説
「Gemini Sparkの使い方が知りたい」「従来のGemと何が違うの?」とお悩みではありませんか?例えるなら、従来の対話型AI(Gem)が「電話口で的確な助言をくれる優秀な相談役」だとすれば、自律型AIエージェント「Gemini Spa...

📖 さらに理解を深めたい方へ!おすすめの関連書籍

AIによる自動化とスクリプト処理を組み合わせることで、散らかったファイルの整理や定型データ処理などの退屈な手作業を完全に自動化するための基礎知識と実践アイデアが詰まった世界的名著です。仕事の効率を何倍にも引き上げたい方に必読の一冊です。

まとめ

本記事では、Gemini Sparkを活用したブログ投稿自動化パイプラインのアーキテクチャ、3階層ルール、ハーネス制御、そして最新の双方向リライトと事前クロスバリデーション機構を解説しました。

  1. 3階層ルールによる責任分離: グローバル指示、プロジェクト指示、個別スキルを明確に分離。
  2. 双方向リライトループの確立: wp_fetcher で取得し、改善原稿を作成して安全に上書き更新。
  3. 送信前4大バリデーション: 異物混入、画像未実在、Gutenberg無効ブロックを物理的に事前遮断。
  4. 投稿後自動ブラウザ検証: 実画面レンダリング状態を自動検査し、安心の運用体制を担保。

定型的な入稿作業をAIエージェントに任せ、人間が本来の創造性を発揮する新しいWebコンテンツ制作スタイルを、皆さんもぜひ体感してみてください。

コメント