LINE HarnessでAIステップ配信を作る方法|下書き・テスト・誤配信防止
AIでLINEのステップ配信を設計し、下書き、テスト配信、人間承認、本番送信まで安全に進める手順を解説します。 目的と対象を渡し、シナリオ・ステップを下書きから作ります。 対象件数・本文・除外条件を確認してから、明示承認で送信します。 画像アップロード、Flex作成、テンプレート、シナリオ登録を手作業のJSONなしで進めます。
この記事はHarness Academyの教材データを基に、各Harnessの公式リポジトリにある実装箇所と照合して構成しています。秘密情報や本番データを記事・AIチャットへ貼らず、外部送信は必ず検証対象を限定してください。
この記事の目次
最初に確認すること
- AIにステップ配信を下書きさせる: 配信設計をAIへ任せつつ、公開前に人が確認する
- 誤配信を防いでAIから配信する: AI操作でも二重送信・対象間違い・未承認送信を起こさない
- 画像・Flexカード・テキストをAIだけで準備する: 画像URLとFlex JSONで詰まらず、実配信せずにテキスト+カードを準備できる
- AIの誤変更・誤配信を仕組みで止める: 他社のHarnessへ接続しても、確認なしの配信や本番変更が起きない運用を説明できる
AIにステップ配信を下書きさせる
目的と対象を渡し、シナリオ・ステップを下書きから作ります。
この工程のゴール: 配信設計をAIへ任せつつ、公開前に人が確認する
最初はinactiveまたは下書きで作り、trigger、delay、message、除外条件を一覧で確認します。
実データへ適用する前に、テストタグと自分だけの対象で全ステップを短縮検証します。
手順
1. 要件を渡す
商品、対象、ゴール、配信回数、禁止表現を入力します。
2. 下書き作成
AIに既存タグを確認させてからinactiveで作ります。
3. テスト
時間を短縮した複製を自分だけに適用します。
完了条件
- 既存シナリオとの重複確認
- inactiveで保存
- 保存後の内容が再取得で一致
Academy教材: LINEをAIから運用する / Lesson 4-2
誤配信を防いでAIから配信する
対象件数・本文・除外条件を確認してから、明示承認で送信します。
この工程のゴール: AI操作でも二重送信・対象間違い・未承認送信を起こさない
配信は必ずdraft作成とsendを分けます。send直前にアカウント、対象条件、対象件数、本文、予定時刻を固定します。
同じcampaign keyやbroadcast IDを再送しないよう、履歴を先に確認します。
手順
1. 履歴確認
同一目的のbroadcastと直近配信を取得します。
2. draft作成
送信せず保存し、対象をプレビューします。
3. 明示承認
最終サマリーを読んでから送信を許可します。
完了条件
- draftとsendが分離
- 送信前に対象件数が見える
- 承認なしでは送信されない
注意: 本番配信は取り消せません。対象が0件または想定外の件数なら送信しません。
Academy教材: LINEをAIから運用する / Lesson 4-3
画像・Flexカード・テキストをAIだけで準備する
画像アップロード、Flex作成、テンプレート、シナリオ登録を手作業のJSONなしで進めます。
この工程のゴール: 画像URLとFlex JSONで詰まらず、実配信せずにテキスト+カードを準備できる
最新LINE Harness MCPにはupload_imageがあり、画像をR2へアップロードして公開HTTPS URLを取得できます。そのURLをFlexのhero等へ入れ、manage_message_templatesでテンプレートへ保存できます。Cloudflare画面へ毎回手動アップロードする必要はありません。
テキストとカードは、非公開シナリオのステップ1をtext、ステップ2をflexとして準備できます。ただし作成と配信は別です。テンプレートや非公開シナリオを作っただけではLINEユーザーへ届きません。
delayMinutes=0は『可能な限り早く次へ進む』指定で、数秒間隔の自然な連続バブルを保証しません。ステップ順序は守られますが、最初の配信経路、5分間隔のCron、±5分ジッターにより次ステップの到着時刻は変動します。1分を指定しても正確な1分後にはなりません。
厳密に一続きで見せたい場合は、一つのFlexへ文章とカードをまとめます。別バブルを数秒差で連続送信するには、複数messageを一回のLINE API callで送るグループ配信機能が必要で、現行の1ステップ1messageとは別の追加実装です。
手順
1. 重複を先に確認
既存画像、テンプレート、シナリオを一覧化し、同名のものを作りません。
2. 画像をR2へ保存
AIへ画像を渡し、upload_imageで公開URL、形式、サイズを確認します。
3. Flexをテンプレート化
alt text、画像URL、文字、ボタンactionを確認し、テンプレートへ保存します。
4. 非公開シナリオへ配置
text→flexの順でステップを追加し、isActive=falseのまま管理画面で確認します。
5. 表示方法を選ぶ
時間厳密性が不要なら0分2ステップ、連続表示が重要なら一つのFlex、別バブル必須なら追加実装と判断します。
完了条件
- 画像をR2へアップロード
- Flexテンプレートを作成
- text→flexを非公開シナリオへ登録
- 0分配信の時間誤差を理解
- 実ユーザーへ未送信
注意: 0分ステップを自然な数秒差の連続バブルとは案内しません。R2 bucket・支払い設定・独自ドメインの状態によって画像URL発行が止まる場合があります。
Academy教材: LINEをAIから運用する / Lesson 4-12
AIの誤変更・誤配信を仕組みで止める
毎回の注意文だけに頼らず、非公開・禁止操作・検証人物・人間承認を固定します。
この工程のゴール: 他社のHarnessへ接続しても、確認なしの配信や本番変更が起きない運用を説明できる
『実行前に確認してください』と毎回書くのは有効ですが、それだけで事故がゼロになるとは言えません。現行のMCP send_messageは下書きではなく、指定した友だちへ即時送信します。isTest=trueも送信しない機能ではなく、テスト表示を付けて実際に送る機能です。
staffキーは個人別に停止・再発行できますが、現状は配信専用/閲覧専用の細かな権限制限がありません。完全な技術的保証が必要な案件では、検証用LINE公式アカウントを分けるか、read-only・draft-only・send approvalを強制するスコープ付きAPIキーの追加開発が必要です。
通常運用では、まずread-only確認、次にテンプレートと非公開シナリオ、次に自分の検証LINE一人へのテスト、最後に人間が対象・本文・時刻を確認して本番有効化、の4段階へ分けます。
安全ルールは毎回のチャットへ手入力せず、CodexのAGENTS.mdまたはClaude CodeのCLAUDE.mdへ保存します。新しいチャットでも最初にそのルールと対象Harnessを読み直させます。
手順
1. 接続先を固定
顧客名、Harness名、Worker URL末尾、LINEアカウント名を最初に表示し、一つでも違えば停止します。
2. 作成と送信を分離
テンプレートとisActive=falseのシナリオまでをAIに任せ、send・enroll・activateは別承認にします。
3. 検証人物を一人に限定
実送信は自分の検証LINE friend一人だけ。isTestも実送信だと理解して対象を再確認します。
4. 人間が最終確認
対象、件数、本文、リンク、日時、停止方法を管理画面で見てから有効化します。
5. 終了時に権限を回収
外部スタッフの作業終了後はstaffを無効化するかAPIキーを再発行し、MCP設定も削除します。
完了条件
- 接続先を作業前に照合
- send・enroll・activateを別承認
- isTestも実送信と理解
- 非公開下書きと本番を分離
- 終了時のキー回収を確認
注意: プロンプトは安全装置の一つであり、権限制御そのものではありません。絶対に誤送信できないことが要件なら、検証環境分離またはスコープ付きAPIキーの実装が必要です。
Academy教材: LINEをAIから運用する / Lesson 4-13
公式ソース
- LINE Harness / packages/mcp-server/src/tools — MCP tools実装
- LINE Harness / README.md — シナリオ機能
- LINE Harness / packages/mcp-server/src/tools/upload-image.ts — R2画像アップロードと公開URL
- LINE Harness / packages/mcp-server/src/tools/manage-message-templates.ts — text・flexテンプレート管理
- LINE Harness / packages/mcp-server/src/tools/manage-scenarios.ts — シナリオとステップ管理
- LINE Harness / apps/worker/src/services/step-delivery.ts — 順番処理と次回配信時刻
- LINE Harness / apps/worker/src/services/stealth.ts — ±5分の配信ジッター
- LINE Harness / docs/manual/04-campaign-design.md — 即時経路・Cron・delay設計
- LINE Harness / packages/mcp-server/src/tools/send-message.ts — send_messageとisTestの実動作
- LINE Harness / apps/worker/src/routes/staff.ts — staffキーの停止・再発行
- LINE Harness / apps/worker/src/middleware/role-guard.ts — 現行role guard
- LINE Harness / docs/ADMIN-AUTH.md — MCP Bearer tokenと管理画面認証
- Claude Code directory — CLAUDE.mdとMCP設定の保存場所
- Codex configuration — MCPとプロジェクト設定
関連ガイド
Academy会員はコピペ実行用プロンプトと演習を開くと、同じ手順をAIへ渡して実機で進められます。