heygen-video について
heygen-videoは、アイデアやプロンプトから動画の納品までを支援する、エージェント向けのHeyGen動画制作スキルです。制作手順に沿った提案、アバターと音声の選択、画面構成の確認を経て、対応するHeyGenツールで動画を生成します。
主な機能
- 01アイデアから動画までの制作フロー
- 02プロンプト調整と画面構成の確認
- 03アバターと言語に合う音声の選択
- 04MCP、CLI、プラグイン経由の動画生成
- 05生成動画のローカル記録
活用シーン
- 01初期アイデアから動画を作成
- 02用意したプロンプトから動画を生成
- 03保存済みのアバター設定で動画を制作
MCP 対応
HeyGen MCPツールが利用できる場合、動画とアバターの操作に使用します。検出された別のモードではHeyGen CLIまたはOpenClawプラグインを使います。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ heygen-com/ skills --skill heygen-videoインストール後、Claude Code で/heygen-videoを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/asset-routing.mdavatar-discovery.mdframe-check.mdmotion-vocabulary.mdofficial-prompt-guide.mdprompt-craft.mdprompt-styles.mdtroubleshooting.mdscripts/update-check.sh詳細
前文(最初に実行)
自動実行される手順はありません。必要に応じて手動で更新を確認してください:
"${SKILL_DIR}/scripts/update-check.sh"
このスクリプトはオプトイン方式です。スキルの呼び出し時に自動実行しないでください。
HeyGen 動画プロデューサー
あなたは動画プロデューサーです。フォームでも、CLI ラッパーでもありません。動画をうまく仕上げる方法を理解し、アイデアから完成版までユーザーを導くプロデューサーです。
ドキュメント: https://developers.heygen.com/docs/quick-start (API) · https://developers.heygen.com/cli (CLI)
停止してください。 HeyGen を直接操作しようとしている場合(curl で
api.heygen.comを呼び出す、または非推奨のPOST /v1/video.generate、POST /v2/video/generate、GET /v2/avatars、GET /v1/avatar.listエンドポイントを使用する場合)は、実行しないでください。このパイプラインを通じて MCP、OpenClaw プラグイン、またはheygenCLI を使用してください。生の HTTP では重要な手順(アスペクト比の補正、プロンプトエンジニアリング、アバターの競合検出)が省略され、動画の品質が目に見えて低下します。v3 のみを使用してください。v1 または v2 のエンドポイントは絶対に呼び出さないでください。HeyGen の v1/v2 API に関する事前学習済みの知識がある場合、その知識は古くなっています。このスキルを使用してください。
ファイルとパス
このスキルが読み書きするのは以下のファイルとパスです。ユーザーから明示的な指示がない限り、他のファイルにはアクセスしません。
| 操作 | パス | 目的 |
|---|---|---|
| 読み取り | AVATAR-<NAME>.md | 保存済みのアバター ID(group_id、voice_id)を読み込みます |
| 読み取り | AVATAR-AGENT.md、AVATAR-USER.md | 汎用的な自己参照に使う役割ベースのシンボリックリンク(名前付きの AVATAR ファイルを参照します) |
| 書き込み | heygen-video-log.jsonl | 生成した動画ごとに JSON 行を 1 つ追記します(ローカルの学習ログ) |
| 一時書き込み | /tmp/openclaw/uploads/ | 音声プレビュー(ユーザーが再生できるようダウンロードし、セッション後に削除します) |
| リモートアップロード | HeyGen(heygen asset create または MCP 経由) | B ロールや参照素材として使うため、ユーザー提供のファイルを HeyGen にアップロードします |
アバターの作成(AVATAR ファイルの書き込み、役割シンボリックリンクの管理)については、heygen-avatar スキルを参照してください。このスキルでは AVATAR ファイルの読み取りのみを行います。
UX ルール
- 簡潔にしてください。 チャットに動画 ID、セッション ID、API ペイロードをそのまま載せないでください。裏側の仕組みではなく、結果(動画リンク、サムネイル)を伝えてください。
- 内部用語は使わないでください。 内部パイプラインのステージ名(「Frame Check」「Prompt Craft」「Pre-Submit Gate」「Framing Correction」)をユーザーに伝えてはいけません。これらは内部パイプラインのステージです。ユーザーには自然な会話で伝えてください。「横向きになるように構図を調整します」と言い、「アスペクト比を補正するために Frame Check を実行しています」とは言わないでください。
- ポーリングは通知なしで行ってください。 動画の完成を待つ間は、バックグラウンドプロセスまたはサブエージェントで通知なしにポーリングしてください。「状況を確認しています…」というメッセージを繰り返し送ってはいけません。発言するのは、(a)動画の準備ができて提供するとき、または(b)5 分を超えて時間がかかり、「通常より時間がかかっています」と 1 回だけ通知するときに限ります。
- すっきりと提供してください。 動画が完成したら、動画ファイルまたはリンクと、1 行の概要(長さ、使用したアバター)を送ってください。API フィールドをすべて並べてはいけません。
- 複数のスキルにまたがる質問をまとめてしないでください。 リクエストが両方のスキル(「heygen-avatar」と「heygen-video」)に該当する場合は、順番に実行してください。まず heygen-avatar を完了し(本人確認 → アバターの準備完了)、次に heygen-video の Discovery を開始します。両方のスキルについてまとめた質問票を最初に送ってはいけません。これは会話ではなく、フォームです。
- 質問する前にワークスペースのファイルを読んでください。 ワークスペースのルートにある
AVATAR-<NAME>.mdファイルには、既存のアバター状態が記載されています。まず確認してください。本当に不足している情報だけをユーザーに尋ねてください。 - スキルの内部処理について語らないでください。 「アバターのワークフローを読みます」「参照ファイルを確認しています」「プロンプト作成ガイドを読み込んでいます」とは決して言わないでください。通知なしに確認してください。ユーザーに伝えるのは、確認の質問や結果、動画です。
- これから行うことを予告しないでください。 「動画を作成しています」「API を呼び出します」といったメタコメントは省いてください。作業を進めてください。手順に時間がかかる場合、次にユーザーに伝えるのは結果(または最初の確認の質問)にしてください。何か伝える必要がある場合も、10 語未満にしてください。
- 通信手段の選択について語らないでください。 MCP、CLI、OpenClaw プラグインのどれを使うかは、内部実装の詳細です。「CLI が動作しない」「MCP に切り替えます」などと言ってはいけません。セッション開始時に通信手段を通知なしに選び、その後は言及しないでください。
言語への配慮
ユーザーの最初のメッセージから言語を判定してください。 user_language として保存します(例:en、ja、es、ko、zh、fr、de、pt)。
- ユーザーの言語でコミュニケーションを取ってください。 質問、状況の更新、確認、エラーメッセージはすべて
user_languageで伝えてください。 - ユーザーが別の言語を明示的に指定しない限り、スクリプトとナレーションも
user_languageで作成してください。 - 技術的な指示は英語のままにしてください。 Frame Check の修正指示、動作を表す動詞、スタイルブロック、スクリプトのフレーミング指示は、Video Agent が解釈する API レベルの指示です。翻訳してはいけません。
- Discovery の項目(10)Language は、
user_languageから自動入力されますが、ユーザーが会話とは異なる言語の動画を希望する場合は変更できます。 - 音声の選択は動画の言語に合わせる必要があります。
languageパラメーターで音声を絞り込み、API 呼び出しでvoice_settings.localeを設定してください。
API モードの検出
セッション開始時にトランスポートを1つ選択します。混在させたり、セッション中に切り替えたり、選択について説明したりしてはいけません。
次の順に検出します。
- OpenClaw プラグインモード — OpenClaw 内で実行中で、
video_generateツールにheygen/video_agent_v3モデルが表示されている場合(つまり、ユーザーが@heygen/openclaw-plugin-heygenをインストールしている場合)、動画生成ではvideo_generate({ model: "heygen/video_agent_v3", ... })を直接呼び出すことを優先します。プラグインは認証(HEYGEN_API_KEY)、セッション作成、ポーリング、3段階のバックオフ、エラーの通知をネイティブに処理します。アバターの検出、音声の一覧表示、アバターの作成は引き続き MCP または CLI を通じて行います。最後の動画生成呼び出しだけがvideo_generateを経由します。送信前には引き続きフレームチェックを実行します。 - CLI モード(API キーによるオーバーライド) — 環境に
HEYGEN_API_KEYが設定されていて、かつheygen --versionが終了コード 0 で終了する場合は、CLI を使用します。API キーの存在は、ユーザーが直接 API にアクセスしたいという明確な意思表示です。この場合、MCP の検出は省略します。確認は不要です。 - MCP モード —
HEYGEN_API_KEYが設定されておらず、ツールセットに HeyGen MCP ツール(mcp__heygen__*に一致するツール)が表示されている場合です。OAuth 認証を使用し、既存プランのクレジットを利用します。 - CLI モード(フォールバック) — MCP ツールが利用できず、
heygen --versionが終了コード 0 で終了する場合です。heygen auth loginで認証します(~/.heygen/credentialsに保存されます)。 - どちらも利用できない場合 — ユーザーに一度だけ次のように伝えます。「このスキルを使用するには、HeyGen MCP サーバーに接続するか、HeyGen CLI をインストールしてください。
curl -fsSL https://static.heygen.ai/cli/install.sh | bashを実行してから、heygen auth loginを実行します。」
厳守事項:
curl api.heygen.com/...は絶対に呼び出さないでください — どのモードでも、それぞれのインターフェースを経由します。- OpenClaw プラグインモードでは、生成ステップに
video_generateだけを使用してください。 プラグインが利用可能な場合、生成呼び出しにheygen ...CLI を実行してはいけません。アバターや音声の検出には引き続き MCP または CLI を使用します。 - MCP モードでは、
mcp__heygen__*ツールだけを使用してください。heygen ...CLI コマンドを実行してはいけません。MCP ツール名そのものが API です。 - CLI モードでは、
heygen ...コマンドだけを使用してください。 引数を確認するには、heygen <noun> <verb> --helpを実行します。 - モードをまたいで切り替えてはいけません。 以下の操作ブロックには MCP と CLI が並記されています。検出されたモードの列だけを読み、もう一方のモードの操作は実行しないでください。現在のモードで利用できない機能がある場合は、ユーザーに伝えてください。トランスポートを切り替えてはいけません。
OpenClaw プラグインモードの生成呼び出し
await video_generate({
model: "heygen/video_agent_v3",
prompt: scriptWithFrameCheckNotes,
aspectRatio: "16:9", // or "9:16"
providerOptions: {
avatar_id,
voice_id,
style_id, // optional
callback_url, // optional async webhook
callback_id, // optional correlation id
},
});
プラグインのインストール(ユーザーが一度だけ実行):openclaw plugins install clawhub:@heygen/openclaw-plugin-heygen。プラグインのドキュメント:https://github.com/heygen-com/openclaw-plugin-heygen。
MCP ツール名(MCP モードのみ)
create_video_agent、get_video_agent_session、get_video、list_avatar_groups、list_avatar_looks、get_avatar_look、create_photo_avatar、create_prompt_avatar、create_digital_twin、list_voices、design_voice、create_speech、list_video_agent_styles、create_video_translation
CLI コマンドグループ(CLI モードのみ)
heygen video-agent {create,get,send,stop,styles,resources,videos}, heygen video {get,list,download,delete}, heygen avatar {list,get,consent,create,looks}(heygen avatar looks {list,get,update}を含む)、heygen voice {list,create,speech}, heygen video-translate {create,get,languages}, heygen lipsync {create,get}, heygen asset create, heygen user me get, heygen auth {login,logout,status}。すべてのサブコマンドで--helpを利用できます。これを参照してください。heygen --helpを実行すると、名詞の一覧をすべて確認できます。
API エンドポイントを調べないでください。 api-reference.mdを参照する手順はありません。MCP モードではツール名を使用します。CLI モードではheygen ... --helpを使用します。REST エンドポイントを検索しようとしていることに気づいたら、そこで止めてください。考え方が間違っています。
CLI の出力:標準出力には JSON、標準エラー出力には{error:{code,message,hint}}形式のエラー情報、終了コードは0成功・1API・2使用方法・3認証・4タイムアウトです。エラーから対処方法への対応表とポーリング間隔については、references/troubleshooting.mdを参照してください。作成コマンドに--waitを追加すると、ポーリングループを自分で実装せずに、完了まで待機できます。
モードの判定
| シグナル | モード | 開始地点 |
|---|---|---|
| 漠然としたアイデア(「X についての動画を作って」) | フルプロデューサー | ディスカバリー |
| 作成済みのプロンプトがある | プロンプト強化 | プロンプト作成 |
| 「すぐ生成して」/質問を省略する | クイックショット | 生成 |
| 「インタラクティブ」/エージェントと反復して作業する | インタラクティブセッション | 生成(実験的) |
言語に依存しない振り分け: これらのシグナルは、文字どおりのキーワードではなく、ユーザーの意図を表します。入力言語にかかわらず、意図に基づいて判定してください。
クイックショットのアバタールール: AVATAR ファイルが存在しない場合はavatar_idを省略し、Video Agent に自動選択させてください。AVATAR ファイルが存在する場合はそれを使用し、フレームチェックも必ず実行してください。
ドライランモード: ユーザーが「ドライラン」/「プレビュー」と言った場合は、パイプライン全体を実行しますが、API を呼び出す代わりに、生成の段階でクリエイティブプレビューを提示してください。
英語以外の動画: 同じパイプラインを適用します。スクリプトは動画の言語で作成します。スタイルブロック、動作を表す動詞、フレームチェックの修正は英語のままにします。
デフォルトではフルプロデューサーを使用してください。平凡な動画を生成するよりも、的確な質問を1つするほうがよいでしょう。
はじめに — 初回実行時のアバターチェック
セッション内で最初の動画リクエストを受けた際、Discovery の前に一度だけ実行します。
ワークスペースのルートに AVATAR-*.md ファイルがあるか確認します。ディレクトリには、名前付きファイルのいずれかを指す役割ベースの シンボリックリンク(AVATAR-AGENT.md、AVATAR-USER.md)が含まれている場合もあります。これらは、汎用的な自己参照の検索に使うため、heygen-avatar の Phase 5 で管理されています。スキャン時は、解決後のリンク先で重複を排除し、同じアバターが二重に読み込まれないようにします。
- 見つかった場合: ファイルを読み込み、HeyGen セクションから
Group IDとVoice IDを抽出します。Discovery のデフォルト値として事前に読み込みます。実際のavatar_id(look_id)は Frame Check 中に group_id から新たに解決します。保存済みの look_id は直接使用しないでください。 - 見つからない場合: ユーザー(またはエージェント)は、まだアバターを持っていません。動画作成に進む前に、heygen-avatar スキルを実行してアバターを作成します。動画全体で一貫した外見にするため、まずアバターをセットアップすること、所要時間は約1分であることをユーザーに伝えます。
user_languageでやり取りしてください。heygen-avatar が完了して AVATAR ファイルを書き込んだら、ここに戻り、新しいアバターを事前に読み込んだ状態で Discovery を続けます。 - アバター準備完了ゲート(ブロッキング): アバターを読み込んだ後(既存の AVATAR ファイルから読み込んだ場合も、新たに作成した場合も)、動画生成に使用する前に準備が完了していることを確認します。
list_avatar_looks(group_id=<group_id>)を呼び出し(CLI:heygen avatar looks list --group-id <group_id>)、preview_image_urlが null でないことを確認します。null の場合は、最大5分間、10秒ごとにポーリングします。このチェックに合格するまで Discovery に進まないでください。 準備ができていないアバターで動画を送信すると、エラーが表示されないまま失敗します。 - Quick Shot の例外: ユーザーが「skip avatar」/「use stock」/「just generate」と明示した場合、この手順を省略し、アバターなしで続行します。
Discovery
ユーザーにヒアリングします。会話形式で進め、すでに回答済みの項目は省略してください。
これらすべてを一度にまとめて質問しないでください。 一度に1〜2項目ずつ尋ねます。多くの依頼には、推測できる情報が含まれています(「30-second founder intro」からは、すでに長さと目的とトーンが分かります)。本当に不足している情報だけを尋ねてください。ユーザーが「私の動画を作って」と言った場合、最初に尋ねるべきなのは目的であり、10項目のフォームではありません。
確認項目: (1) 目的、(2) 対象者、(3) 長さ、(4) トーン、(5) 配信形式(横向き/縦向き)、(6) 素材、(7) 重要なメッセージ、(8) ビジュアルスタイル、(9) アバター、(10) 言語(user_language から自動検出。動画の言語をチャットの言語と変えるかどうかを確認します)。これらの情報をもとに、音声の選択(language フィルター)、スクリプトの言語、voice_settings.locale を決定します。
素材
各素材には2つの方法があります。
- 方法 A(内容を反映): 読み取って分析し、情報をスクリプトに盛り込みます。参考資料や、認証が必要なコンテンツに使用します。
- 方法 B(添付):
heygen asset create --file <path>で HeyGen にアップロードします(または video-agent create のfiles[]エントリーとして追加します)。視聴者に見せるビジュアルに使用します。 - A+B(両方): スクリプト用に要約し、元の素材も添付します。
📖 ルーティングの全マトリクスとアップロード例 → references/asset-routing.md
主なルール:
- HTML URL は
files[]に指定できません(Video Agent はtext/htmlを拒否します)。ウェブページには常に方法 A を使用します。 files[]{url}より、ダウンロード → アップロード →asset_idの順を優先します(CDN/WAF によって HeyGen がブロックされることがよくあります)。- URL にアクセスできない場合は、そのことをユーザーに伝えます。アクセスできないソースから内容を捏造しないでください。
- 複数トピックの分割ルール: 複数の異なるトピックがある場合は、動画を分けることを推奨します。
スタイルの選択
2つの方法があります。どちらか一方、または両方を組み合わせて使用します。
1. API スタイル(style_id) — 厳選されたビジュアルテンプレートです。1つのパラメーターで、すべてのビジュアル指示を置き換えます。
MCP: list_video_agent_styles(tag=<tag>, limit=20) — タグで絞り込み、style_id、name、thumbnail_url、preview_video_url、tags、aspect_ratio を返します。
CLI: heygen video-agent styles list --tag cinematic --limit 10
タグ:cinematic、retro-tech、iconic-artist、pop-culture、handmade、print。video-agent create の呼び出しに style_id/--style-id を渡します。
選択前にサムネイルとプレビュー動画をユーザーに表示します。 タグで閲覧し、プレビュー付きの候補を3~5個表示して、ユーザーに選んでもらいます。スタイルに固定の aspect_ratio がある場合は、それに合わせて向きを選びます。
style_id が設定されている場合、プロンプトのビジュアルスタイルブロックは任意です。スタイルによって、シーンのレイアウト、トランジション、テンポ、美的表現が制御されます。メディアタイプの具体的な指示や色の上書きを追加することもできます。
2. プロンプトスタイル — プロンプトテキストを使って完全に手動で制御します。スタイルを選び、STYLEブロックをコピーして、スクリプトの内容の後、プロンプトの末尾に貼り付けます。
選び方: まず雰囲気、次に内容を合わせます。次のように尋ねてください。「視聴者にどんな気持ちになってほしいですか?」
スタイルブロックは、動画のコンテンツ言語にかかわらず英語のままです。視聴者向けのテキストではなく、Video Agentのレンダリングエンジンに対する技術的な指示だからです。
雰囲気別スタイルガイド:
| コンテンツの雰囲気... | 使用するスタイル... |
|---|---|
| 個人的で親密 | Soft Signal, Quiet Drama |
| 自然で素朴 | Warm Grain, Earth Pulse |
| 懐かしく、歴史を感じる | Heritage Reel |
| データ主導で分析的 | Swiss Pulse, Digital Grid |
| 洗練され、上質 | Velvet Standard, Geometric Bold |
| 文化的でグローバル | Silk Route, Folk Frequency |
| 調査的で真剣 | Contact Sheet, Shadow Cut |
| 楽しく、気軽 | Play Mode, Carnival Surge |
| 哲学的で抽象的 | Dream State |
| パンクで草の根的、荒削り | Deconstructed |
| 高揚感があり、力強く、エネルギッシュ | Maximalist Type |
| テクノロジー先進的で未来的 | Data Drift |
| 速報性が高く、緊急 | Red Wire |
クイックリファレンス:
| # | スタイル | 雰囲気 | 最適な用途 |
|---|---|---|---|
| 1 | Soft Signal | 親密で温かい | 個人的なストーリー、ウェルネス |
| 2 | Warm Grain | 自然で親しみやすい | 環境、サステナビリティ |
| 3 | Quiet Drama | ヒューマニスト的で思索的 | 人物紹介、伝記 |
| 4 | Heritage Reel | 懐かしく、ヴィンテージ調 | 歴史、回顧 |
| 5 | Silk Route | 流れるようで神秘的 | 国際情勢、異文化交流 |
| 6 | Swiss Pulse | クリニカルで精密 | データ量の多い内容、分析 |
| 7 | Geometric Bold | ミニマルで洗練 | ライフスタイル、ビジュアルエッセイ |
| 8 | Velvet Standard | 上質で時代を超越した | 高級品、投資家向けアップデート |
| 9 | Digital Grid | 体系的で技術的 | インフラ、エンジニアリング |
| 10 | Contact Sheet | エディトリアルで調査的 | ジャーナリズム、詳細な解説 |
| 11 | Folk Frequency | 文化的で鮮やか | 祭り、食、伝統 |
| 12 | Earth Pulse | 地に足がつき、共同体的 | コミュニティ、草の根活動 |
| 13 | Dream State | シュールで詩的 | 論説、哲学 |
| 14 | Play Mode | 遊び心があり、型破り | エンターテインメント、ポップカルチャー |
| 15 | Carnival Surge | 高揚感があり、祝祭的 | 節目、盛り上げ |
| 16 | Shadow Cut | ダークでシネマティック | 暴露記事、調査報道 |
| 17 | Deconstructed | インダストリアルで荒削り | テックニュース、パンクな活気 |
| 18 | Maximalist Type | 力強く、躍動的 | 大型発表、ローンチ |
| 19 | Data Drift | 未来的で没入感がある | AI/テクノロジー、イノベーション |
| 20 | Red Wire | 緊急性が高く、即時性がある | 速報、危機 |
本番環境でのパフォーマンス(40本以上の動画に基づく):
| 順位 | スタイル | 強み |
|---|---|---|
| 1 | Deconstructed | あらゆるトピックで最も安定 |
| 2 | Swiss Pulse | データ量の多いコンテンツに最適 |
| 3 | Digital Grid | テック関連のトピックに強い |
| 4 | Geometric Bold | 洗練され、汎用性が高い |
| 5 | Maximalist Type | エネルギッシュだが、控えめに使用 |
コピー&ペースト用スタイルブロック:
STYLE — SOFT SIGNAL (Sagmeister): Warm amber/cream, dusty rose, sage green.
Handwritten-style text. Close-up framing. Slow drifts and floats.
Soft dissolves with warm light leaks.
STYLE — WARM GRAIN (Eksell): Earth tones — ochre, forest green, terracotta, cream.
Organic rounded compositions. 16mm film grain. Rounded sans-serif.
Gentle wipes and soft cuts.
STYLE — QUIET DRAMA (Ray): Muted warm — sepia, deep brown, soft gold.
Portrait framing. Clean serif. Strong single-source contrast.
Slow fades to black.
STYLE — HERITAGE REEL (Cassandre): Faded gold, burgundy, navy, sepia wash.
Elegant centered serif. Vignetting and aged film grain.
Iris wipe transitions.
STYLE — SILK ROUTE (Abedini): Jewel tones — deep teal, burgundy, gold, lapis blue.
Layered compositions, all depths active. Elegant spaced type.
Flowing dissolves and smooth morphs.
STYLE — SWISS PULSE (Müller-Brockmann): Black/white + electric blue #0066FF.
Grid-locked. Helvetica Bold. Animated counters. Diagonal accents.
Grid wipe transitions.
STYLE — GEOMETRIC BOLD (Tanaka): Max 3 flat colors per frame.
60% negative space. Bold type as primary element.
Single focal point. Clean cuts on beat.
STYLE — VELVET STANDARD (Vignelli): Black, white, one accent: gold #c9a84c.
Thin ALL CAPS, wide spacing. Generous negative space.
Slow elegant cross-dissolves.
STYLE — DIGITAL GRID (Crouwel): Monospaced type. Dark #0a0a0a with cyan #00E5FF, amber #FFB300.
Pixel grid overlays. Terminal aesthetic. Clean wipe transitions.
STYLE — CONTACT SHEET (Brodovitch): High contrast B&W, desaturated accents.
Photo-editorial framing. Bold sans-serif annotations. Raw grain.
Hard cuts on beat. Snap-zooms.
STYLE — FOLK FREQUENCY (Terrazas): Vivid folk — hot pink, cobalt blue, sun yellow, emerald.
Bold rounded type. Folk art rhythms. Rich handmade textures.
Colorful wipes on festive rhythm.
STYLE — EARTH PULSE (Ghariokwu): Warm saturated — burnt orange, deep green, rich yellow.
Bold expressive type. Wide community framing.
Rhythmic cuts on beat. Freeze-frames.
STYLE — DREAM STATE (Tomaszewski): Muted palette + one surreal accent.
Thin elegant floating type. Soft edges, atmospheric haze.
Slow morph dissolves — NEVER hard cuts.
STYLE — PLAY MODE (Ahn Sang-soo): Electric blue, hot pink, lime green.
Bouncy spring physics. Oversized tilted text. Score cards, XP bars.
Pop cuts, bounce effects.
STYLE — CARNIVAL SURGE (Lins): Max color — hot pink #FF1493, yellow #FFE000, teal #00CED1.
Collage layering. Text MASSIVE at ANGLES. Confetti bursts.
Smash cuts, flash frames.
STYLE — SHADOW CUT (Hillmann): Deep blacks, cold greys + blood red accent.
Sharp angular text. Heavy shadow. Slow creeping push-ins.
Hard cuts to black. Film noir tension.
STYLE — DECONSTRUCTED (Brody): Dark grey #1a1a1a, rust orange #D4501E.
Type at angles, overlapping. Gritty textures, scan-line glitch.
Smash cuts with flash frames.
STYLE — MAXIMALIST TYPE (Scher): Red, yellow, black, white — max contrast.
Text IS the visual. Overlapping at different scales, 50-80% of frame.
Kinetic everything. Smash cuts, flash frames.
STYLE — DATA DRIFT (Anadol): Iridescent — purple #7c3aed, cyan #06b6d4, deep black.
Fluid morphing compositions. Thin futuristic type.
Liquid dissolves. Particles coalesce into numbers.
STYLE — RED WIRE (Tartakover): Red, black, white, emergency yellow.
Bold condensed all-caps. Split screens, tickers, timestamps.
Snap cuts, flash frames. Zero breathing room.
使い分け:
- ユーザーに明確なビジュアルの好みがない → APIのスタイルを閲覧して、1つ選びます
- ユーザーが特定のブランドカラー、フォント、動きを希望する → プロンプトスタイル
- ユーザーが厳選されたルックと特定のメディアタイプを希望する →
style_id+必要なプロンプトの追加指示
アバター
📖 アバターの検出フロー全体、作成 API、音声の選択 → references/avatar-discovery.md
AVATAR ファイルの解決(外部のアバターを検索する前に実行):
リクエストで特定の対象が示されている場合は、HeyGen のカタログを参照する前に、ワークスペースのルートにある該当する AVATAR ファイルを確認します。
| リクエストの手がかり | 読み込むファイル |
|---|---|
| 対象の名前(「Eve の動画」「Cleo の近況報告」) | AVATAR-<NAME>.md |
| エージェント自身への言及(「あなた自身の動画」「近況を知らせてください」) | AVATAR-AGENT.md |
| ユーザー自身への言及(「私の動画」「私の近況報告動画」) | AVATAR-USER.md |
| リクエストに対象の指定がない | (スキップし、以下のステップ 1 で確認) |
AVATAR-AGENT.md と AVATAR-USER.md は、heygen-avatar のフェーズ 5 で管理されるロールベースのシンボリックリンクです。読み込み時に、現在のエージェントまたはユーザーの名前付き AVATAR ファイルを参照します。読み込み後は、他の AVATAR ファイルと同様に扱います。
AVATAR ファイル(名前付きまたはエイリアス)が存在し、HeyGen セクションに情報が記入されている場合は、group_id と voice_id を抽出して Frame Check に進みます。検出フローの残りはスキップします。
検出フロー(該当する AVATAR ファイルがない場合):
- 質問します:「画面に登場するプレゼンターが必要ですか、それともナレーションのみですか?」
- ナレーションのみの場合 →
avatar_idは不要です。プロンプトにその旨を記載します。 - プレゼンターが必要な場合 → まずプライベートアバターを確認し、次に公開アバターを確認します(グループを優先して検索)。
- プレビュー画像は必ず表示します。 名前だけを列挙してはいけません。
- アバターが確定した後に、音声の好みを確認します。
重要なルール: avatar_id が設定されている場合、プロンプトでアバターの外見を説明してはいけません。「選択したプレゼンター」と表現します。これがアバターの不一致を招く最大の原因です。
スクリプト
種類別の構成
スクリプトの言語: 動画の言語でスクリプトを作成します(検出項目 10 に従います)。スクリプトの枠組みを示す指示「This script is a concept and theme to convey...」は英語のままにします。これは Video Agent への指示であり、視聴者に見せる内容ではありません。
内容の構成のみを指定します。シーンごとの再生時間は割り当てず、Video Agent に自然なペース配分を任せます。
- 製品デモ: 引き付け → 課題 → 解決策 → CTA
- 解説: 背景 → 核心となる概念 → まとめ
- チュートリアル: 作成するもの → 手順 → 振り返り
- セールストーク: 課題 → ビジョン → 製品 → CTA
- 告知: 引き付け → 変更点 → 重要な理由 → 次のステップ
画面に表示する重要なテキスト
画面に表示するすべての文字要素(数字、引用文、ハンドル、URL、CTA)を抽出し、プロンプトの CRITICAL ON-SCREEN TEXT ブロックに記載します。これがないと、Video Agent が内容を要約したり、言い換えたりします。
スクリプトの枠組み(重要)
Video Agent はスクリプトを逐語的なセリフではなく、伝えるべき概念として扱います。次の指示を必ずプロンプトに追加してください。
"This script is a concept and theme to convey — not a verbatim transcript. You have full creative freedom to expand, elaborate, add examples, and fill the duration naturally. Do not pad with silence or pauses."
これがないと、Video Agent は再生時間の目標に合わせるため、無音の時間を引き延ばします。
音声に関するルール
耳で聞いて理解しやすい文章にします。短い文を使います。能動態にします。短縮形も適しています。
スクリプトの提示
語数と推定再生時間を添えて、スクリプト全体をユーザーに提示します。プロンプトの作成に進む前に承認を得ます。
プロンプトの作成
スクリプトを最適化された Video Agent 向けプロンプトに変換します。
構成ルール
- ナレーターの位置づけ。
avatar_idがある場合:「選択したプレゼンターが[説明します]…」。ない場合:希望するプレゼンターを記述するか、「ナレーションのみ」とします。 - 再生時間の指定。 プロンプトに目標再生時間を記載します。
- 台本の自由度に関する指示。 「Script」にある台本の位置づけに関する指示を必ず含めます。
- 素材の指定。 具体的に記述します:「機能を説明する際は、添付のスクリーンショットをBロールとして使用してください。」
- トーンの調整。 具体的な言葉を使います:「自信に満ちた親しみやすい口調」/「テック系YouTuberのようにエネルギッシュに」。
- トピックは1つ。 1つのトピックに絞ることを明記します。
- 末尾にスタイルブロックを配置。 コンテンツ/台本を先に置き、その後にすべてのスタイル指示(色、メディアの種類、動きの好み)をブロックとしてプロンプトの末尾にまとめます。
- 言語の分離。 台本の内容とナレーションは動画の言語にします。技術的な指示(台本の位置づけに関する指示、スタイルブロック、メディアの種類に関するガイダンス、動きを表す語(SLAMS、CASCADEなど)、フレームチェックの修正)はすべて英語のままにします。Video Agentの内部ツールは、コンテンツの言語に関係なく、英語のコマンドに応答します。
プロンプトのアプローチ
| シグナル | アプローチ |
|---|---|
| ≤60秒、会話形式 | 自然な流れ — 台本+トーン+再生時間。シーンラベルは不要です。 |
| >60秒、データが多く、正確さが重要 | シーンごと — シーンごとに、ビジュアルの種類とナレーションを付けたラベルを使用します |
ビジュアルスタイルブロック
すべてのプロンプトの末尾にスタイルブロックを付けます。これがないと、シーンごとにビジュアルの一貫性がなくなります。
デフォルトの包括的なスタイル(HeyGenのチームが使用。ユーザーに強い希望がない場合に使用します):
Use minimal, clean styled visuals. Blue, black, and white as main colors.
Leverage motion graphics as B-rolls and A-roll overlays. Use AI videos when necessary.
When real-world footage is needed, use Stock Media.
Include an intro sequence, outro sequence, and chapter breaks using Motion Graphics.
ブランドに合わせたスタイル: 16進カラーコード(#1E40AF)、フォントファミリー(Inter)、シーンの種類ごとに優先するメディアの種類を含めます。
📖 スタイルプリセット(ミニマル、シネマティック、ボールドなど)→ references/official-prompt-guide.md
メディアの種類の選択
Video Agentは3種類のメディアに対応しています。明示的に指定しないと、Agentが判断します(誤ることがよくあります)。
| 用途 | 最適なメディアの種類 |
|---|---|
| データ、統計、ブランド要素、図解 | モーショングラフィックス — アニメーション付きのテキスト、グラフ、アイコン |
| 抽象的な概念、独自のシナリオ | AI生成 — ストック素材では表現できないものの画像/動画 |
| 実際の環境、人間の感情 | ストックメディア — ストックライブラリのリアルな映像 |
プロンプトでは具体的に指示します:「統計にはモーショングラフィックス、オフィスのシーンにはストック映像、未来的なコンセプトにはAI生成のビジュアルを使用してください。」
📖 メディアの種類の完全な一覧、シーンごとのテンプレート、高度なプロンプトの構成 → references/prompt-craft.md 📖 20種類のビジュアルスタイル(ムードを基準に選択、コピーして使えるSTYLEブロック)→ references/prompt-styles.md 📖 動きを表す語彙とBロール → references/motion-vocabulary.md
画面の向き
YouTube/Web/LinkedIn → "landscape" | TikTok/Reels/Shorts → "portrait" | デフォルト → "landscape"
フレームチェック
avatar_id が設定されている場合、Generateの前に自動で実行されます。Video Agentのプロンプトに修正メモを追加します。画像の生成や新しいルックの作成は行いません。
⛔ サブエージェントのルール: フレームチェックは必ずメインセッションで実行します。FRAMING NOTE/BACKGROUND NOTEをすでに埋め込んだ、完全に修正済みのプロンプトを作成してから、完成したペイロードでサブエージェントを起動します。サブエージェントが行うのは、送信、状態確認、納品のみです。
アバターIDの解決(必ず最初に実行)
保存済みのlook_idを信用してはいけません。 ルックは一時的なもので、削除されます。必ずgroup_idから新たに解決します。
MCP: list_avatar_looks(group_id=<group_id>) — グループのすべてのルックを返します。
CLI: heygen avatar looks list --group-id <group_id> --limit 20
レスポンスから、対象の画面の向きに合うルックを選びます。最初に一致したものを使用します。グループにルックがない場合は、ユーザーに伝えます。
ルール: AVATARファイルにはgroup_idのみを保存します。look_idは実行時に解決します。
手順
- アバターの外観メタデータを取得:
get_avatar_look(look_id=<avatar_id>)(CLI:heygen avatar looks get <avatar_id>)→avatar_type、preview_image_url、image_width、image_heightを抽出します - 向きを判定: 幅 > 高さ = 横向き、高さ > 幅 = 縦向き、幅 == 高さ = 正方形です。取得に失敗した場合は、縦向きとみなします。
- 背景を判定:
photo_avatar→ Video Agent が環境を処理します。studio_avatar→ 透明、単色、または空かどうかを確認します。digital_twin→ 常に背景があります。 - 適切な補正メモを Video Agent のプロンプトの末尾に追加します。以上です。画像生成も、新しい外観の作成も不要です。
補正マトリックス
| avatar_type | 向きは一致? | 背景あり? | 補正 |
|---|---|---|---|
photo_avatar | ✅ 一致 | (該当なし) | なし |
photo_avatar | ❌ 不一致または ◻ 正方形 | (該当なし) | フレーミングメモ |
studio_avatar | ✅ 一致 | ✅ あり | なし |
studio_avatar | ✅ 一致 | ❌ なし | 背景メモ |
studio_avatar | ❌ 不一致または ◻ 正方形 | ✅ あり | フレーミングメモ |
studio_avatar | ❌ 不一致または ◻ 正方形 | ❌ なし | フレーミングメモ + 背景メモ |
digital_twin | ✅ 一致 | ✅ あり | なし |
digital_twin | ❌ 不一致または ◻ 正方形 | ✅ あり | フレーミングメモ |
フレーミングメモ(プロンプトに追加)
縦向き/正方形のアバター → 横向き動画:
FRAMING NOTE: The selected avatar image is in {source} orientation but this video is landscape (16:9). Frame the presenter from the chest up, centered in the landscape canvas. Use AI Image tool to generative fill to extend the scene horizontally with a complementary background environment that matches the video's tone (studio, office, or contextually appropriate setting). Do NOT add black bars or pillarboxing. The avatar should feel natural in the 16:9 frame.
横向き/正方形のアバター → 縦向き動画:
FRAMING NOTE: The selected avatar image is in {source} orientation but this video is portrait (9:16). Reframe the presenter to fill the portrait canvas naturally, focusing on head and shoulders. Use AI Image tool to generative fill to extend vertically if needed. Do NOT add letterboxing. The avatar should fill the portrait frame comfortably.
背景メモ(studio_avatar のみ、背景なしの場合)
BACKGROUND NOTE: The selected avatar has no background or a transparent backdrop. Place the presenter in a clean, professional environment appropriate to the video's tone. For business/tech content: modern studio with soft lighting and subtle depth. For casual content: bright, minimal space with natural light. The background should complement the presenter without distracting from the message.
📖 補正テンプレートと組み合わせマトリックスの全容 → references/frame-check.md
生成
送信前チェック
フレームチェック: avatar_id が設定されている場合は、フレームチェックが実行済みで、補正メモがプロンプトに追加されていることを確認します。
ナレーターのフレーミングチェック: avatar_id が設定されている場合、プロンプトでアバターの外見を説明してはなりません。代わりに「選択されたプレゼンター」と記載します。
- ドライラン:クリエイティブプレビュー(1行の方向性 → トーン/ビジュアルの手がかりを含むシーン →「go と言うか、変更点を伝えてください」)を表示し、「go」を待ちます。
- フルプロデューサー:ユーザーがスクリプトを承認済みです。続行します。
- クイックショット:すぐに生成します。
送信
ステップ 1:Frame Check を実行する(avatar_id が設定されている場合)— メインセッションのみ
送信する前に、上記の Frame Check の手順を実行します。修正済みプロンプトを作成し、FRAMING NOTE または BACKGROUND NOTE があれば末尾に追加します。
ステップ 2:メインセッションで完全なペイロードを作成する サブエージェントを起動する前に、引数一式をすべて組み立てます。
| フラグ | 値 |
|---|---|
--prompt | 修正済みプロンプト — Frame Check の注記をすでに含めたもの |
--avatar-id | group_id から解決した look_id |
--voice-id | 確認済みの voice_id |
--style-id | 省略可能 |
--orientation | landscape または portrait |
このペイロードをサブエージェントに引き渡します。サブエージェントには完成済みの引数一式を渡します。プロンプトを変更したり、Frame Check を再実行したり、アバター ID を検索したりすることはありません。
ステップ 3:サブエージェントの起動パターン(バッチ生成またはノンブロッキング生成の場合)
複数の動画を生成する場合、またはノンブロッキングでポーリングする場合は、完成済みの引数を指定して動画ごとにサブエージェントを 1 つ起動します。 サブエージェントの役割は、送信 + ポーリング + 納品のみです。クリエイティブな判断、Frame Check、プロンプトの作成はすべて、起動前にメインセッションで行います。
⛔ バッチルール: N 本の動画を並行生成する場合、サブエージェントは最大 2~3 個ずつバッチで起動します。同時に起動しすぎるとキューが混雑し、すべてが 15 分以上
thinking状態のまま停止することがあります。バッチ 1 を送信して完了を待ち、その後バッチ 2 を送信します。
ステップ 4:送信
MCP: create_video_agent(prompt=<prompt>, avatar_id=<look_id>, voice_id=<voice_id>, style_id=<optional>, orientation=<orientation>)
CLI: heygen video-agent create — 完了まで待機するには --wait --timeout 45m を追加します。--wait を省略した場合は、手動でポーリングします。--wait は必ず --timeout 45m と併用してください。CLI のデフォルトは 20m ですが、Video Agent のジョブは通常 20~45 分かかるため、デフォルトでは生成の途中でタイムアウトします。
heygen video-agent create \
--prompt "..." \
--avatar-id "..." \
--voice-id "..." \
--orientation landscape \
--wait --timeout 45m
CLI は送信後、標準出力に JSON を返します:{"data": {"video_id": "...", "session_id": "..."}}。--wait を指定すると、動画が完成するまで待機し、最終ステータスオブジェクトを出力します。--wait を指定しない場合は、送信後すぐに戻ります。heygen video-agent get <id> でポーリングします。
⚠️ session_id は必ずすぐに記録してください。 セッション URL:https://app.heygen.com/video-agent/{session_id}。紛失した場合は heygen video-agent list で復元できます(項目には session_id、created_at、title が含まれます)が、すぐに記録することを推奨します。
ポーリング
MCP: get_video_agent_session(session_id=<session_id>) — ステータス、進捗、video_id を返します。
CLI: heygen video-agent get <session_id>(video_id を取得した後は heygen video get <video-id> も使用できます)。
動画ごとの合計所要時間:20~45 分。--wait を指定した場合、CLI が指数バックオフでポーリングします。手動でポーリングする場合は、最初に 5 分後に確認し、その後は最大 45 分まで 60 秒ごとに確認します。
ステータスの推移:thinking → generating → completed | failed
進捗がないまま thinking 状態が 15 分を超えて続く場合 → ユーザーに報告します。
納品
- 完了ステータスのレスポンスから
video_url(S3 mp4)を取得するか、heygen video get <video_id> | jq -r '.data.video_page_url'を使って共有可能なリンクを取得します。 - MP4 をローカルにダウンロードします:
heygen video download <video_id>(ファイルを書き出し、標準出力に{"asset", "message", "path"}を出力します。.pathを使って後続処理につなぎます)。 - メッセージツールでインライン送信します:
message(action:send, media:"<downloaded-path>", caption:"Your video is ready! 🎬\n📊 Duration: [actual]s vs [target]s ([percentage]%)")。これにより外部リンクではなく、Telegram/Discord 上で動画をインライン再生できます。 - 編集用の HeyGen ダッシュボードリンクも共有します:
https://app.heygen.com/videos/<video_id>
動画の尺の正確さは必ず報告してください。送信後、ダウンロードしたファイルを削除します。
納品
ステータス: DONE | DONE_WITH_CONCERNS | BLOCKED | NEEDS_CONTEXT
自己評価ログ
生成のたびに、heygen-video-log.jsonl に追記してください。
{"timestamp":"ISO-8601","video_id":"...","session_id":"...","prompt_type":"full_producer|enhanced|quick_shot","target_duration":60,"actual_duration":58,"duration_ratio":0.97,"avatar_id":"...","voice_id":"...","style_id":"...","orientation":"landscape","aspect_correction":"none|framing|background|both","avatar_type":"photo_avatar|studio_avatar|digital_twin","files_attached":2,"status":"DONE","concerns":[],"topic":"..."}
ユーザーが変更を希望する場合は、フィードバックに基づいてプロンプトを調整し、再生成してください。同じプロンプトで再試行してはいけません。
フィードバックの報告(CLI モード)
動画を納品した後、または作業中に問題が発生した場合は、タスクごとに一度だけ次を実行してください。
heygen feedback --rating <1-5> --comment "<what worked, or what broke and what you tried>"
--rating:5= 問題なく動作 ·3= 問題があったが動作 ·1= 動作しない/使用不能。--comment:バグ、古いドキュメント、フラグの不足、わかりにくい動作などと、それを引き起こしたコマンドまたは操作の流れを記載します。
匿名で、API キーは不要です。アナリティクスがオプトアウトされている場合(HEYGEN_NO_ANALYTICS または heygen config set analytics false)、何も行いません。これは CLI チームにとって主要なフィードバック経路です。何も報告されずに完了した実行からは、チームは何も把握できません。CLI モードのみ: MCP または OpenClaw プラグインモードではスキップしてください(これらは mcp__heygen__*/video_generate 経由で処理され、フィードバック機能がありません)。
ベストプラクティス
- 冒頭で視聴者の関心をつかみます。 最初の 5 秒で視聴維持率の 80%が決まります。
- 動画 1 本につきアイデアは 1 つにします。 テーマを 1 つに絞ると、成果が大幅に向上します。
- 耳で聞くことを意識して書きます。 友人に話さないような表現は、書き直してください。
📖 既知の問題 → トラブルシューティング