1仕組みと動作原理
単一のツールではなく「アセットパイプライン」として機能:1つの旅行テーマから始まり、4分割写真ウォール→画像切り出し→キャラクターカード→動画プロンプト/生成→音楽プロンプト→最終動画結合→QAまで計12タスクを連携。
Build a repeatable "virtual couple travel vlog" asset pipeline from a short theme such as "a young Japanese couple in Paris" or "a Chinese couple in northern Normandy."
同一性維持の重要設計:4枚を個別にText-to-Image生成するのではなく、1回の生成で4x4グリッドを出力して16枚の写真を同一モデルコンテキストに固定した後、ローカルで4枚の2x2に切り出し。
Prefer generating one 4x4 contact sheet in a single image task, then splitting it into four 2x2 sheets. Do not generate four independent 2x2 text-to-image sheets unless there is already a strong locked character reference image.
画像切り出しはローカルのPython/Pillowスクリプトで実行され、唯一のデフォルト切り出しパスとして指定(デザインツールの使用や個別の2x2生成へのフォールバックは禁止)。
Use [scripts/split-grid.py](scripts/split-grid.py) to split the approved 4x4 image into four 2x2 memory sheets. This is the only default crop route.
キャラクターカードには厳格な仕様があり(1:1、7分割パネル、上4下3、白背景、ターンアラウンドの表情・ポーズ)、デフォルトではCodex Image Gen / gpt-image-2のみで生成。
Generate character cards with Codex Image Gen / `gpt-image-2`, not Topview, unless the user explicitly asks for Topview for this step after being warned about possible lower model quality.
動画セクションは特定プラットフォームに依存しない:まず「プロバイダー検出」スクリプトを実行し、接続があれば自動化、なければ完全な手動納品パッケージを提供。
After the four 2x2 sheets, character cards, and video prompts are ready, run [scripts/check-video-providers.py](scripts/check-video-providers.py).
Topviewの自動化はラッパースクリプト経由で実行し、クロスプラットフォームにおけるシェルの引用符問題を回避:参照画像をJSONに構成してからvideo_gen.pyに受け渡し。
Before submitting video tasks, pause for an explicit queue decision:
課金前には必ずゲートを設置:送信前に設定、クレジット見積もり、待機予測を表示し、通常キューかQuick Generate(追加15クレジット)かをユーザーに選択させ、無断消費を防止。
Do not continue to video submission until the user answers.
全アセットはユーザー指定の出力ルート直下のプロジェクトフォルダに格納され、ファイルの削除やサードパーティ製スキル/パッケージのサイレントインストールを禁止。
Never delete files. If cleanup is needed, ask the user for explicit second confirmation first.
音楽と編集は「原則に基づいたフォールバック」を採用:音楽は手動生成用の中国語プロンプトのみ出力、編集は簡易/高度で分岐(FFmpeg vs Remotion/HyperFrames)。HyperFramesが元動画生成を行わないことも明確化。
Do not use Gemini CLI or any automatic music generation tool by default. Always write the final Chinese music prompt to `audio/music_prompt_zh.txt`
成果物構造をコントラクト(brief/prompts/images/videos/audio/qa)として固定し、セッションを跨いだ再開や人間による引き継ぎを容易化。
- `brief.md` - theme, couple profile, location, style notes.
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| cli | FFmpeg / FFprobe |
| package | Python Pillow(PIL) |
| cli | Node / npm / npx(Remotion 与 HyperFrames 路径) |
| cli | Topview skill 的 video_gen.py(第三方技能,付费平台) |
| cli | HyperFrames CLI(npx hyperframes lint / inspect / render) |
| api | 第三方视频/图像平台 API 密钥(仅检测存在性,不调用):Seedance / Krea / Lovart / LibTV |
| cli | Codex Image Gen(gpt-image-2)与 imagegen 技能——角色卡与记忆图的首选图像路径 |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: python scripts/check-tools.py --show-install-hints(検出のみ、インストールは行わない)
- 网络端点: 外部ネットワークアクセスの宣言: リポジトリ内のコード自体にはHTTP/ソケット呼び出しは一切なく、ネットワーク通信は呼び出される外部CLI経由でのみ発生
- 本地工作目录: ファイル読み書きおよび成果物出力: ユーザー指定の出力ルート直下に<Project Title>/およびサブディレクトリ(prompts、images、videos、audio)を作成し、brief.mを書き込み
5二重目の独立検証
- [ok] 「仓库内无直接网络调用」是否成立 — 全仓 https?:// 扫描中本技能目录零命中;5 个脚本 import 仅 argparse/json/os/shutil/importlib/subprocess/sys/time/pathlib/PIL,无 urllib/requests/socket/http。
- [ok] 密钥是否会被回显(凭证泄露风险) — first_env() 只返回命中的环境变量名,print_table() 打印的 evidence 列即该变量名;未出现 os.environ.get(name) 取值的输出路径,结论:不回显密钥值。
- [ok] 外部依赖条目逐条反查 — FFmpeg/FFprobe/Node/npm/npx/PIL 在 check-tools.py 的 results 列表中逐项存在;Topview 路径解析在 run-topview-omni.py 与 check-video-providers.py 两处互证;npx hyperframes 三连命令在 SKILL.md 与 tooling.md 两处出现。
- [unlocatable] Topview 平台域名(未能定位) — 本仓库内没有任何 Topview/Seedance/Krea/Lovart/LibTV 的域名或端点字符串,只有平台名与「本机是否安装/是否配置 key」的判断。真实网络端点位于被引用的第三方技能与平台侧,超出本次可读源范围,按纪律标为待补,不臆测域名。
- [ok] 付费闸门是否真的落在流程里(而非口号) — SKILL.md 有独立的 Topview 段要求提交前展示设置/积分/等待并等用户回答;task_list.md Task 6 给出「Do not submit video tasks until the user replies」与逐次/整批授权规则;tooling.md 提供决策话术模板。「不静默花费」在指令层有三处互证。
- [ok] 写入范围是否被限定在输出根目录内 — SKILL.md Operating Rules 第一条要求所有资产存于 <Output Root>/<Project Title>/;assemble-vlog.py 的工作目录默认取输出文件父目录;split-grid.py 的 output_dir 由参数传入。未发现写到技能目录或系统目录的路径(唯一例外是 npx 自身的缓存行为,属工具侧)。
- [ok] HyperFrames 定位是否前后一致(防止第一遍读错) — SKILL.md『HyperFrames editing only』段、README『HyperFrames 不再作为四段源视频的生成 provider 使用』、tooling.md『Do not use HyperFrames as the source provider』三处口径一致,第一遍所述成立。
- [ok] 任务清单完整性 — task_list.md 实含 Task -1、Task 0 至 Task 10 共 12 段,与 SKILL.md Task List 的 12 条编号一一对应;每条带 Acceptance 或 Fallback,非空壳。
6結論
c85905174ced23a9…