Claude Codeで実現するnote完全自動投稿:Playwright×画像生成AIを用いた自律エージェントの構築ガイド

  • URLをコピーしました!

「AIに文章を書かせる」という話はもう珍しくない時代です。

でもいま注目されているのは、ネタの選定から執筆、画像生成、そしてnoteへの投稿まで——一切人間の手を介さずにこなす「自律型エージェント」の存在ですよね。

この記事では、AnthropicのClaude Codeを核として、Playwright・Imagen 4.0・cronを組み合わせた「毎朝7時の自動投稿システム」を技術的に解説します。 アーキテクチャ設計からコスト最適化、法的コンプライアンスまで、実際に運用できるレベルの情報をまとめました。

ぜひ最後までご覧ください。


目次

自律エージェントとは何か——従来の自動化との決定的な違い

スクリプト型とエージェント型の比較

従来の自動化は、事前に書いたスクリプトが決められた手順を実行するだけでした。 エラーが出れば止まる、想定外の状況には対応できない——それが普通でした。

Claude Codeがもたらしたのは、それとは根本的に異なる「エージェント型」の考え方です。 状況を判断し、失敗すれば自ら修正を試みる。 この自律的なループが、複雑なワークフローの完全自動化を可能にしています。

比較軸従来のスクリプトClaude Code(エージェント型)
エラー対応停止する自ら原因を推定して修正を試みる
状況判断不可文脈に応じて行動を変える
実行環境との統合手動設定が必要OS・CLI・npmと直接連携
指示の記述方法コード(手続き的)自然言語+構造化されたスキル

Claude CodeのCLI優位性

Claude Codeが他のAIチャットツールと異なる最大の特徴は、OSのシェルと直接対話できるCLIツールである点です。

claude -p というヘッドレスモードを使えば、人間の操作なしにプロセスを起動・完結させられます。 WindowsのタスクスケジューラやUNIXのcronとも相性が良く、既存インフラへの組み込みがスムーズです。

エージェント・ループの3ステップ

Claude Codeの内部では、以下のサイクルが繰り返されています。

  1. Context collection——現在の状況・ファイル・ログを収集する
  2. Action execution——最適な行動を選んで実行する
  3. Result verification——結果を検証し、次のアクションを決める

このループが再帰的に回り続けることで、人間が関与しなくても「考えながら進む」動作が実現します。


スキルという設計思想——再利用可能な実行知識のパッケージ

スキルの構成要素

Claude Codeには「スキル」と呼ばれる独自の仕組みがあります。 特定のタスクを実行するための手順・テンプレート・コンテキストを一つのディレクトリにまとめた、いわば「実行可能な業務マニュアル」です。

コンポーネント役割
SKILL.mdメタデータと手順書。YAMLフロントマターでトリガー条件を定義する
scripts/Python・Bash・TypeScriptによる補助処理
templates/noteの仕様に合わせたMarkdown形式の出力フォーマット
references/過去のヒット記事パターンや投稿制限などの参照知識

プログレッシブ・ディスクロージャーによる文脈窓の効率化

スキルの賢いところは、必要なときだけ詳細を読み込む設計になっている点です。

Claude Codeは通常、スキルのメタデータだけをメモリに保持しています。 タスクに必要だと判断した瞬間にのみ、詳細な指示をロードする。 これにより、20万トークンの文脈窓を無駄なく使えるわけです。


コンテンツ・パイプラインの設計——ネタ選定から執筆まで

トピック・キューの動的最適化

「毎朝7時に投稿」を支えるのが、トピック・キューと呼ばれるネタの在庫管理システムです。

ローカルのJSONまたはSQLiteに蓄積されたトピックに対し、Claude CodeのPlan Modeが優先順位を評価します。 優先されるのは次の順番です。

  1. ユーザーが手動で投入した独自の知見を含むネタ
  2. WebFetchツールによるリアルタイムのトレンド解析
  3. 過去記事の反応パターンから生成されたテーマ提案

「関心は高いが、まだ十分に解説されていない領域」を特定して記事化する——この判断をAIが自律的に行います。

段階的執筆による品質の担保

3,000〜5,000字の長文を一度に生成するのは品質上のリスクがあります。 そこでClaude Codeが採用しているのが「段階的執筆」です。

まずアウトラインを作成し、各セクションを順番に詳細化していく流れですね。 2026年時点のClaude 4.5/4.6系モデルでは、スキル内にultrathinkというキーワードを含めることで、より深い推論プロセスを経た出力が得られます。

執筆時には以下が自動で統合されます。

  • 構造化データ:技術比較はMarkdownテーブルに自動整理
  • ブランドボイスの維持CLAUDE.mdに定義した執筆ルールを常に参照
  • 過去記事との整合性:同じ主張の繰り返しや矛盾を検知して修正

画像生成の自動化——Imagen 4.0との統合

パラメータ設計の考え方

記事内容に即した画像を自動生成するため、Google GeminiのImagen 4.0 APIを組み込みます。 Claude Codeが記事の要約をもとに画像プロンプトを構築し、以下のパラメータでAPIを叩きます。

パラメータ設定値意図
modelimagen-4.0-ultra-generate-001テキストレンダリングに優れた最上位モデル
aspect_ratio3:4 または 16:9noteの推奨サイズに動的対応
person_generationDONT_ALLOW肖像権リスクを回避し抽象的な図解に特化
output_mime_typeimage/png画質劣化を防ぎ透過処理にも対応

挿入位置のインテリジェントな判定

画像を等間隔に並べるだけでは、読者体験の向上にはつながりません。 このシステムでは、エージェントが文章の区切りやトピックの転換点を自動検知して挿入位置を決定します。

具体的には、## 見出しの直前や、長い解説が続く中間点にマーカーを配置します。 「読者が視覚的な休息を必要とするタイミング」を予測するようにトレーニングされたスキルが、この判断を担っています。


Playwrightによるブラウザ操作——note公式APIがない問題を突破する

認証状態の永続化

noteは公式APIを提供していません。 そのため、Playwrightでブラウザを操作して「人間らしい投稿行為」を再現する必要があります。

毎回ログインし直す方法は二要素認証の壁があります。 解決策は storageState.json を使ったセッションの保存と復元です。

ただし、note.comのようなSPA(シングルページアプリ)では、ログイン直後にCookieがセットされる前にセッションを保存しようとすると、JSONが空になる問題が発生しやすいです。 これを防ぐため、page.waitForSelector でマイページの表示を確認してから保存するという待機処理が必須になります。

contenteditable要素への対応

noteのエディタは、標準的な <input> ではなく contenteditable="true"<div> で構成されています。 Playwrightの fill() メソッドを使うだけでは、エディタ内部のReact/Vueステートが更新されないことがあります。

2026年時点のベストプラクティスはClipboard APIの活用です。

  1. 生成したMarkdownをHTMLに変換し、クリップボードにコピー
  2. エディタ要素にフォーカス(page.focus()
  3. Control+V(MacはMeta+V)で貼り付け

この手法により、画像を含む複雑なリッチテキストも正確に流し込めます。

堅牢なセレクタ戦略

UI変更に強いスクリプトにするため、セレクタの選び方が重要です。

対象要素推奨セレクタ理由
投稿ボタンpage.getByRole('button', { name: '公開' })UIの変更に強く意味ベースで特定できる
タイトル入力page.getByPlaceholder('タイトル')ユーザーの意図に即した入力欄の特定
画像アップロードpage.waitForEvent('filechooser')非表示の input[type="file"] を確実に捉える

無人実行とエラーハンドリングの設計

cronによるスケジューリング

UNIX環境では cron、Windows環境ではタスクスケジューラを使ってClaude Codeを起動します。 自動実行時の重要なオプションが --permission-mode bypassPermissions です。

これにより、AIがコマンドを実行するたびに確認を求めることなく、自律的にタスクを完了できます。

Discord通知によるエラー監視

エージェントが直面するリスクには、ネットワークエラー・noteの仕様変更・APIのレート制限などがあります。 後処理ステップで実行ログを自動解析し、異常があればDiscordのWebhookへ通知を送る仕組みを組み込みます。

Playwrightで失敗時のスクリーンショットを撮影し、通知に添付することで、原因の特定が一段と速くなります。

セルフ・メンテナンス機能

トピック・キューの残数が閾値を下回ったとき、エージェントが自動的に「追加のネタ探しサブルーティン」を起動します。 過去記事のアクセス数やスキ数を分析し、パフォーマンスの高いテーマに類似したトピックを自動補充する——これが自律的なコンテンツサイクルを維持する仕組みです。


コストの現実——1記事あたりいくらかかるのか

トークンコストの試算

2026年のClaude料金体系(Input: $3/MTok、Output: $15/MTok)に基づくと、1記事あたりのコストは次のようになります。

項目トークン数(推定)キャッシュなしキャッシュあり
システムプロンプト・スキル5,000$0.015$0.0015
Web検索・コンテキスト10,000$0.030$0.003
生成記事(5,000字相当)4,000 (output)$0.060$0.060
合計約$0.105約$0.065

プロンプト・キャッシュを活用することで、固定的な指示部分のコストを最大90%削減できます。

画像生成コストを加えると

Imagen 4.0の標準解像度(1K)は1枚あたり約$0.03〜$0.04です。 1記事に3枚使うとすると、合計コストは1記事あたり約$0.16〜$0.20に収まります。

人件費と比べれば、極めて低い運営コストと言えますね。


ガバナンスと法的遵守——2026年の新しい義務

noteのAIコンテンツ方針

note.comは2026年時点で、AI生成コンテンツへの透明性を求める方針を強化しています。 他者の著作権を侵害する盗作・剽窃は厳禁であり、エージェント側でのクロスチェック機能が必要です。

開示義務への対応

米国の複数州やEUで施行されているAIガバナンス法(HB 1170・SB 129等)では、AIが生成・修正したコンテンツへの開示義務があります。 実装上は、記事末尾に免責事項を自動挿入する機能をスキルの最終ステップとして定義することが推奨されます。

「本記事は自律型エージェントClaude Codeによって、Imagen 4.0の画像と共に自動生成されました」

このような一文を添えることが、透明性の担保につながります。


品質管理と将来展望——Agent Teamsという多層的アプローチ

エージェントの役割分担

2026年の最新機能「Agent Teams」を使えば、1エージェントに全てを任せるリスクを回避できます。

役割担当
Lead Agent全体スケジュールの管理とチームの統率
ResearcherWebFetchを用いたデータ収集とファクトチェック
Writer記事のドラフト作成とトーンの調整
Editor(QA)投稿前のコンプライアンスチェック

人間の編集部に近い多層的な品質管理が、AIだけで実現できる時代になっています。

セキュリティのベストプラクティス

Claude Codeは、BashコマンドをOSレベルのサンドボックスで保護する機能を備えています。 自動化環境では、ネットワークアクセスを許可するドメインを note.comgoogle.com に限定するホワイトリスト設定が、セキュリティ上の基本です。


まとめ

Claude Codeによるnote自動投稿の全体像を整理します。

フェーズ技術要素ポイント
実行基盤Claude Code CLI × cronヘッドレスモードと bypassPermissions で無人化
コンテンツ生成スキル × Claude 4.5/4.6段階的執筆と ultrathink で品質向上
画像生成Imagen 4.0 APIperson_generation: DONT_ALLOW で権利リスク回避
投稿操作Playwright × Clipboard APIcontenteditable 対応と堅牢なセレクタ設計
コスト管理プロンプト・キャッシュ1記事$0.16〜0.20に抑制
ガバナンスAI開示義務への対応記事末尾への自動免責事項挿入

「個人のメディア工場」という表現がありましたが、まさにその言葉が今の時代感を表していると思います。 量と質を同時にスケールさせる手段として、自律型エージェントの活用はもはや選択肢ではなく、競争上の必要条件になりつつあります。

ぜひ、自分のユースケースに合わせてスキルをカスタマイズするところから始めてみてください。 最後までご覧いただき、ありがとうございます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
返信通知を受け取る
通知
guest
0 コメント
最新のコメント
一番古いコメント 投票の多いコメント
Inline Feedbacks
すべてのコメントを表示
目次