VIEW

PIGNOTE

2026.07.01

SEO運用をAIエージェント(Claude Code)で半自動化する方法 | 入稿・サムネ・計測・カニバリ検出まで実装

SEO
AIエージェントによるSEO運用自動化 記事アイキャッチ

PIGNOTEは、運営担当がほぼ1人で回しています。

具体的には、コンテンツ戦略、執筆、入稿、サムネ作成、GA4・GSCでの計測、リライト判断までの、すべての作業です。

そんな環境で一番業務を効率化できたのが、Anthropic の Claude Code(ターミナルで動くAIエージェント)でした。本記事では、PIGNOTEで実際に動いている実装の中身を、媒体特有のハマりどころまで含めて公開します。

「AIで業務効率化」のような抽象論ではなく、具体的なAPI叩き方やWAF回避まで踏み込みます。

Claude Codeのホーム画面。セッション数や合計トークン数、アクティブ日数などの利用状況が表示されている

PIGNOTEのSEO運用フロー全体像

PIGNOTEのSEO運用は、おおまかに以下のフローで回しています。

フェーズ作業内容Claude Code化
分析GA4・GSCでデータ取得・トレンド検出
戦略カニバリ検出、リライト優先度判定◎(候補抽出まで)
制作記事執筆、サムネ生成△(指示出しベース)
入稿WordPress入稿、メタ設定
計測公開後の動向追跡、Slack通知

担当者が判断するのは「戦略を立てる部分」と「最終OK出し」だけ。それ以外の手作業はほぼClaude Codeに渡しています。

1日のフロー例

:Claude Codeが自動でGA4・GSCをまとめた朝レポートをSlackへ通知。それを見て動向チェック

午前:順位やセッションが落ちている記事があれば「記事14006のセッションが先月から半減してる。GSCで直近の主流入KWと順位変動を出して、本文の見出し構成と現1〜3位を比較して、原因仮説を3つ挙げて」のように指示。Claude CodeがGSC・本文・SERPを横断的にチェックして、原因仮説と改善案を提示

午後:リライト・新規執筆。原稿のたたきはClaude Codeに作らせ、担当者はトーン・一次情報の差し込みに集中

夕方:入稿・サムネ生成・記事管理表更新は丸投げ、担当者は最終確認だけ

機械的な作業はAIに、判断と表現は人間に」というシンプルな分業です。

実装1:WordPress REST APIで記事を入稿する

WordPress管理画面で、API経由で入稿された記事が編集中になっている様子

PIGNOTEはWordPressで動いており、入稿を完全自動化するには REST API(外部プログラムからWordPressを操作するための窓口)を叩く必要があります。ここで一番ハマったのが認証問題でした。

ロリポップのWAFが Authorization ヘッダー(本人確認情報)を剥がす

WordPressのREST API認証は通常、Application Password による Basic認証(ユーザー名とパスワードを直接送るシンプルな認証方式)で通します。ところが、PIGNOTEのサーバー環境(ロリポップ)では プロキシ(利用者とサーバーの間で通信を中継する仕組み)が Authorization ヘッダー(HTTPリクエストで本人確認情報を送る項目)をサーバーに到達する前に削除するという挙動があり、Basic Authが機能しません。

# Basic Authでは認証エラーになる(プロキシがヘッダーを剥がすため)
curl -u "user:app_password" https://www.pignus.co.jp/wp-json/wp/v2/posts/123
# → 401 Unauthorized

解決策: カスタムヘッダー認証

WordPressの functions.php に、独自ヘッダーを受け取って認証する処理を追加します。

add_filter('determine_current_user', function ($user) {
    $key = $_SERVER['HTTP_X_PIGNUS_API_KEY'] ?? null;
    if ($key && hash_equals(get_option('pignus_api_key'), $key)) {
        return get_user_by('login', 'pignus')->ID;
    }
    return $user;
});

これでPIGNUS独自の合言葉(X-Pignus-Api-Key という名前のAPIキー)経由でアクセス元を識別できるようになり、curlコマンドから記事データを取得・更新できるようになり、サーバーからは 200 OK(「成功」を意味する応答コード)が返るようになります。

# カスタムヘッダー認証 → 通る
curl -H "X-Pignus-Api-Key: $WP_API_KEY" \
  https://www.pignus.co.jp/wp-json/wp/v2/column/5005
# → 200 OK

カスタム投稿タイプ(CPT)のエンドポイントに注意

PIGNOTEの記事は column というカスタム投稿タイプ(CPT、標準の「投稿」とは別建てで管理される記事タイプ)です。WordPress標準の記事用エンドポイントは /wp/v2/posts ですが、PIGNOTEはカスタム記事タイプのため /wp/v2/column/{id} を叩く必要があります。これに気付かず半日溶かしました。

WAF(不正アクセスを防ぐ仕組み)がブロックする記事タイプにも注意

shellコマンドや plist XML を本文に含む記事を入稿しようとすると、ロリポップのWAFが「攻撃と判定」してsilent fail(HTTP 200 が返るのに保存されない状態)で弾きます。HTTPは200で返ってくるのに、本文が更新されていないという困った挙動。

コードブロックを多用する技術記事は、本文部分だけ手動コピペが安全です。

実装2:サムネをHTMLテンプレート→PNGで自動生成する

サムネは HTML テンプレート(1200×630)を Headless Chrome でPNG化しています。テンプレートにカテゴリ・タイトル・アクセントカラーを差し込むだけで、統一感のあるサムネが数秒で量産可能です。

詳細は別記事で解説しています。

サムネイルとは?クリック率を上げる作り方とコツ

実装3:GA4を毎朝Slackに自動レポートする

Slackに自動投稿されたPIGNOTEデイリーレポートの通知画面

GA4 Data API を Claude Code から MCP(Model Context Protocol、AIエージェントが外部ツールやAPIに接続するための共通規格)経由で叩き、前日比・前週比・直近リライト記事の動向まで含めた朝レポートをSlackに自動投稿しています。

実装の詳細・つまづきポイントは別記事にまとめました。

AIでGA4自動Slackレポート構築!つまずいた3つの罠と解決策

実装4:GSCデータからカニバリ・低CTRを検出する

Claude Codeが3019・5005・20229のカニバリ候補をテーブル形式で出力した画面

PIGNOTE運用で最も「Claude Codeに任せて良かった」と感じているのがカニバリ検出です。

カニバリの3軸判定ロジック

Google Search Console の Search Analytics API で page × query 単位のデータを取り、以下3軸で判定します。

チェック内容
タイトル軸記事タイトルと実流入KWがマッチしているか(意図とコンテンツのズレ検出)
実流入KW軸同じKWで複数記事がランクインしていないか
imp軸impは取れているのに順位が35-55位で停滞 = 「正規ページ判定」が分散しているシグナル

3軸すべてに該当する記事クラスタが見つかったら、それは統合候補です。

実際の検出は、Claude Codeに以下のような指示を出すだけで動きます。

「直近3ヶ月のGSCデータから、同一KWで複数記事がランクインしているクラスタを抽出して。imp上位の記事と、imp下位の瀕死記事を分けて表示」

すると、ページ×クエリの全データを取得→KW単位でグループ化→imp/順位の分布で判定、までやってくれます。担当者はその出力を見て統合戦略を決めるだけ。

統合判断は人間が、実装は Claude Code が

統合戦略(どの記事を主軸にし、どれを301で吸収するか)は人が決めます。Claude Codeは以下を引き受けてくれます。

  • 各記事の本文をAPI経由で取得し、構造を比較
  • 主軸記事に統合用のH2セクションをマージ
  • 旧記事を Redirection プラグインの REST API で301設定

Redirection プラグインも REST API で操作可

Redirectionプラグインの管理画面で、API経由で作成された301リダイレクト一覧

Redirection プラグインの REST API /wp-json/redirection/v1/redirect は、先ほどのカスタムヘッダー認証でそのまま通ります。WP管理画面に入らずにリダイレクト設定までスクリプト化できます。

curl -X POST \
  -H "X-Pignus-Api-Key: $WP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"/column/content/1647/","action_data":{"url":"/column/content/5005/"},"match_type":"url","action_type":"url","action_code":301,"group_id":1}' \
  https://www.pignus.co.jp/wp-json/redirection/v1/redirect

AIエージェントに任せていい作業 / 任せてはいけない作業

ここまで「半自動化」と書きましたが、実際は任せていい/ダメな線引きを強く意識して運用しています。

任せていい作業

  • データ集計(GA4・GSC API叩き)
  • 機械的に判定できる検出作業(カニバリ、404、メタ抜け)
  • 定型のAPI操作(入稿、リダイレクト設定)
  • サムネ生成、画像リサイズ
  • メモリーへの知見蓄積と引き出し

任せてはいけない / 慎重にすべき作業

  • 記事の戦略判断(どの記事を主軸にするか、どのKWを狙うか)
  • トーン・ブランドに関わる文章表現
  • 既存記事の大規模リライト(AIに丸投げするとブランドの一貫性が崩れる)
  • 公開直前の最終チェック(誤情報、URL間違いなど)

戦略は人間、実装と運用はAI」という分業がうまくいく境界線でした。

まとめ

PIGNOTEで実装しているSEO運用の自動化を、実装レベルで公開しました。

自動化対象効果
WordPress入稿1記事あたり10-15分の入稿作業がほぼゼロ秒
サムネ生成デザインソフト不要、テンプレ流用で数秒生成
朝のGA4レポート毎朝Slackに自動通知、確認だけで済む
カニバリ検出GSCを1記事ずつ見る必要がなく、リスト化される

「AIで業務効率化」と一括りにされがちですが、実装レベルまで踏み込まないと、本当の生産性は上がりません。とくにロリポップのようにセキュリティ制限があるレンタルサーバーでは、その環境に合わせた地道な調整が欠かせません。

PIGNOTEはこれから、AI Overview や Perplexity などの GEO(生成エンジン最適化)領域も、同じやり方で運用していきます。続報は別記事で書きます。

監修者

PIGNUS

PIGNUS編集部

PIGNUSは「価値を、本気で」をタグラインとし、あらゆるドメインで独自の価値提供を行っています。事業を伸ばすパートナーとしてあらゆるサポートに奔走するWebマーケティング事業、現代に最適化したWeb広告運用を提唱するプロダクト、BtoB購買における情報の非対称を解決するプロダクトを展開しています。

CATEGORY

ご質問やご相談など、お気軽にお問い合わせください。