name: fmode-mv description: "触发词:做MV/做音乐视频/写歌并出片/口播讲解视频/AI音乐/AI视频/人物参考图/角色多视图。两条产线:AI单曲MV(作曲填词→音乐→人物资产→场景图→关键帧→图生视频→成片)与AI口播/商业短视频(对标→仿写→分镜→人物资产→场景→图生视频→数字人口播→成片)。纯ESM零依赖,即梦通道实测可用。" version: 0.2.0 author: Fmode (FmodeAgent) license: MIT platforms: [linux, macos]
纯 AI 视频全流程技能。从一句主题到成片,全程零实拍。 v0.2.0 起接入即梦(火山引擎)真实通道,图生视频从「兜底运镜」升级为真 AI 生成。
把「文案 → 分镜 → 人物 → 场景 → 关键帧 → 图生视频 → 成片」整条链路固化成可复用的技能仓库。 任何数字生命克隆本仓即可照跑:
git clone https://git.fmode.cn/fmode-13177980648/skill-mv.git
cd skill-mv
node bin/fmode-mv.js doctor # 环境自检
node bin/fmode-mv.js providers # 看通道现状(jimeng ✅)
node bin/fmode-mv.js song "主题" # 端到端跑一条 MV
node bin/fmode-mv.js talk "口播主题" # 端到端跑一条口播视频
.fallback 标记。两条产线共用同一套底层模块(图像 / 视频 / 音频 / 剪辑 / provider 接口),只是编排不同。
歌曲主题
→ 作曲填词 [chat ✅]
→ AI 生成音乐 [music ⚠️ 未开通,可自备音频]
→ 人声/伴奏分离 [local ◐]
→ ④ 人物资产多视图 [即梦 ✅] ← 定妆照→上半身→全身→多视图
→ ⑤ 场景图 → 关键帧 [即梦 ✅] ← 无人环境 + 多图参考合成
→ ⑥ 图生视频 [即梦 ✅] ← 首尾帧/首帧,含降级
→ 剪辑合成(卡点+字幕+混音) [local ffmpeg ✅]
→ out/mv.mp4
fmode-mv song "深夜末班地铁上的城市白领" --genre "city pop" --mood "孤独但温暖" --shots 8
对标文案 → 仿写(10版) → 分镜 → 人物资产 → 场景图/关键帧 → 图生视频 → 数字人口播 → 成片
[阶段1] [阶段2] [阶段3] [即梦] [即梦] [即梦] [即梦 ¥1/秒] [ffmpeg]
fmode-mv talk "三分钟讲清楚什么是多租户数据隔离" --duration 90 --shots 8
fmode-mv talk --script work/script.md # 用现成口播稿
完整 SOP(含各阶段检测清单、合规/脱敏边界)见
references/voc-sop-pipeline.md。
| # | 工序 | 命令 | 通道 | 状态 |
|---|---|---|---|---|
| ① | 作曲填词 | lyrics |
chat | ✅ |
| ② | 分镜脚本 | storyboard |
chat | ✅ |
| ③ | 口播稿 | talk(内置) |
chat | ✅ |
| ④ | 人物资产多视图 | character-sheet |
即梦 | ✅ 本版新增 |
| ⑤ | 场景图(无人)→ 关键帧(有人) | scene |
即梦 | ✅ 本版新增 |
| ⑥ | 图生视频 | video |
即梦 | ✅ 本版新增(真通道,非兜底) |
| ⑦ | 剪辑成片 | assemble |
local ffmpeg | ✅ |
| ⑧ | 数字人口播 | jimeng digital-human |
即梦 | ✅ 替代唇形驱动 |
| ⑨ | 动作模仿 | jimeng actor |
即梦 | ✅ |
| ⑩ | 智能超清 | jimeng upscale |
即梦 | ✅ |
| — | AI 音乐 | music |
music | ⚠️ 未开通 → 自备音频 |
| — | TTS 配音 | tts |
tts | ⚠️ 未开通 → 见下方替代 |
| — | 唇形驱动 | lipsync |
lipsync | ⚠️ 未开通 → 已改用即梦数字人 |
| SOP 阶段 | 命令 |
|---|---|
| 0 准备 / 1 文案获取 | 仓外(需 yt-dlp / Whisper 等);或用 talk "主题" 从零写 |
| 2 脚本仿写 | templates/copywriting-prompt.md + talk |
| 3 分镜生成 | storyboard + templates/storyboard-prompt.md |
| 4a 照片生成 | character-sheet(人物)+ scene --scene-only(场景) |
| 4b 视频生成 | video + templates/video-prompt.md |
| 4.5 素材修正 | 重跑对应工序加 --shot <id> --force |
| 环节 | 通道 | 现状 | 说明 |
|---|---|---|---|
| 作曲填词 / 分镜 / 口播稿 | POST /v1/chat/completions |
✅ 可用 | deepseek-v4-flash、doubao-seed-2-1-pro 等 |
| 文生图 / 图生图 | 即梦 /getText2ImgV3 /getImgV4 /getImg2ImgV3 |
✅ 可用 | 实测 ¥0.20/张,1728×2304 PNG 约 200KB |
| 图生视频 720p/1080p/Pro | 即梦 /getVideoV3_720p 等 |
✅ 可用 | 实测 121 帧 5 秒,实扣 ¥1.41,返回 h264 mp4 |
| 人物动作模仿 | 即梦 /getActorV2 |
✅ 可用 | ¥0.4/秒(单条最低 ¥3.2) |
| 数字人口播 | 即梦 /getOhIdentifyMain→/getOmniHuman |
✅ 可用 | ¥1/秒,替代唇形驱动 |
| 智能超清 | 即梦 /getSuperResolution |
✅ 可用 | ¥0.4/张 |
| 关键帧(旧 image 通道) | POST /v1/images/generations |
✅ 可用 | gpt-image-2.5-sunburst;即梦已可替代 |
| AI 音乐 | POST /suno/submit/music |
❌ 未开通 | 实测 503 Task request failed;请自备音频 --music your-song.mp3 |
| 图生视频(旧网关) | POST /v1/video/generations |
❌ 未开通 | 实测 503 No available channel;已改用即梦图生视频 |
| 唇形驱动 | — | ❌ 未开通 | 网关无该路由;已改用即梦数字人替代 |
| TTS 口播配音 | /v1/audio/speech |
❌ 未开通 | 网关无该路由;本地 edge-tts 在部分云环境被 403 拦截 |
| 音轨分离 | 本地 | ◐ ffmpeg 相位兜底 / demucs 可选 | 需要真·分离请装 demucs |
| 剪辑 / 合成 | 本地 ffmpeg | ✅ 可用 | 拼接 / 混音 / 字幕 / 卡点 / 响度归一化 |
随时用 fmode-mv providers(加 --deep)查看最新状态;明细见 references/capability-matrix.md。
绝不静默失败,绝不编造产物。
ProviderUnavailableError,打印可操作方案。unavailable,能兜底的才兜底,并在报告中标出。.fallback。method=3(首尾帧)失败 → 自动降级 method=2(首帧),并在返回值与日志里留痕 degraded: true。替代路线:
| 缺失能力 | 立即可用的替代 |
|---|---|
| AI 音乐 | 自备音频 --music your-song.mp3;等渠道开通后原样重跑 |
| TTS | 本地 edge-tts(pip install edge-tts,自动探测);或 FEME_TTS_ENDPOINT 对接外部服务;或 --voice 指定现成音频 |
| 唇形驱动 | 即梦数字人:fmode-mv jimeng digital-human --ref 人脸图 --audio 配音.mp3(¥1/秒) |
| 图生视频(旧) | 即梦图生视频:fmode-mv video --mode jimeng(720p ¥0.28/秒) |
git clone https://git.fmode.cn/fmode-13177980648/skill-mv.git
cd skill-mv
npm link # 可选:全局获得 fmode-mv 命令
fmode-mv doctor
依赖:
fetch,零 npm 依赖)ffmpeg / ffprobe(apt-get install -y ffmpeg)demucs(高质量音轨分离)、edge-tts(免费 TTS)、python3 + PIL + numpy(人物资产择优,缺失时自动用 ffmpeg 兜底)即梦通道需要 sessionToken(不是 newapi_token)。按优先级读取:
FMODE_SESSION_TOKEN/opt/data/fmode-identity.json 的 session_token 字段
export FMODE_SESSION_TOKEN=<你的sessionToken>
其它可选覆盖项:
| 环境变量 | 作用 | 默认 |
|---|---|---|
FMODE_JIMENG_BASE |
即梦代理基址 | https://server.fmode.cn/api/volcengine/jimeng |
FMODE_PARSE_BASE |
Parse 基址(读 ImagineWork) | https://server.fmode.cn/parse |
FMODE_PARSE_APPID |
Parse App ID | ncloudmaster |
FMODE_CDN_COMPANY |
七牛上传用的 company ID | XlTE6uWQEQ |
FMODE_VIDEO_RESOLUTION |
视频分辨率 | 720p |
FEME_API_TOKEN |
旧网关(chat / image)凭据 | /opt/data/fmode-identity.json 的 newapi_token |
本技能不会把 token 写入任何文件、日志、产物或提交。 错误信息里也只出现脱敏后的 token。
| 命令 | 作用 | 通道 |
|---|---|---|
fmode-mv song "主题" |
产线A 端到端 | 全链路 |
fmode-mv talk "主题" |
产线B 端到端 | 全链路 |
fmode-mv lyrics "主题" |
作曲填词 | chat |
fmode-mv storyboard --from work/song.json |
分镜脚本 | chat |
fmode-mv character-sheet --desc "..." |
④ 人物资产多视图 | 即梦 |
fmode-mv scene --from work/storyboard.json --character <多视图> |
⑤ 场景图 + 关键帧 | 即梦 |
fmode-mv video --from work/storyboard.json |
⑥ 图生视频 | 即梦 |
fmode-mv keyframe --from work/storyboard.json |
关键帧单跑(旧 image 通道) | image |
fmode-mv jimeng --status/--endpoints/--test |
即梦通道诊断 | 即梦 |
fmode-mv jimeng text2img/img2img/img2video/upscale/actor/digital-human |
即梦能力直调 | 即梦 |
fmode-mv music --from work/song.json |
AI 音乐 | music ⚠️ |
fmode-mv separate <audio> |
人声/伴奏分离 | 本地 |
fmode-mv tts --from work/script.md |
口播配音 | tts ⚠️ |
fmode-mv lipsync --probe |
唇形驱动 | lipsync ⚠️ |
fmode-mv assemble --from work/storyboard.json --music a.mp3 |
剪辑成片 | 本地 |
fmode-mv providers [--deep] |
能力现状表 | — |
fmode-mv doctor |
环境自检 | — |
fmode-mv version --check |
三处版本一致性 | — |
每个命令都支持 --help 查看完整参数。
# ④ 人物资产(最省:只跑定妆照 3 张候选 + 择优,¥0.60)
fmode-mv character-sheet --desc "25岁东亚女性,栗棕色长发,白T+波点裙" --limit 1
# 完整四步(9 张候选,≈¥1.98)
fmode-mv character-sheet --desc "..." --limit 4
# ⑤ 场景图 + 关键帧(≈¥0.42/镜)
fmode-mv scene --from work/storyboard.json --character out/character/4-多视图.png --limit 1
# ⑥ 图生视频(1 镜 5 秒 ≈¥1.41)
fmode-mv video --from work/storyboard.json --limit 1 --resolution 720p
fmode-mv video --from work/storyboard.json --mode still # 零 API 费用,Ken Burns 兜底
# 数字人口播(替代唇形驱动)
fmode-mv jimeng digital-human --ref out/character/3-全身.png --audio work/audio/voiceover.mp3
# 通道自检(真跑一张图,¥0.20)
fmode-mv jimeng --test
work/ 中间产物(.gitignore 已排除)
├── song.json 作曲填词结果
├── storyboard.json ★分镜(下游全部消费它)
├── storyboard.md 人读版分镜表
├── script.json / .md 产线B 口播稿
├── audio/ 音乐、人声、伴奏、配音
├── scene/shot-XX.png 场景图(无人,v0.2 新增)
├── frames/shot-XX.png 关键帧(有人,供 video 消费)
├── clips/shot-XX.mp4 视频片段(兜底产物为 shot-XX.fallback.mp4)
├── clips/clips.json 每镜 method / workId / 费用 / 是否降级
├── workids.log workId 台账([时间戳] 类型 | workId: xxx | 内容: xxx)
├── lipsync/
└── subtitles.srt
out/
├── character/ ★人物资产(v0.2 新增)
│ ├── 1-定妆照.png … 4-多视图.png
│ ├── candidates/ 全部候选(含锐度分数)
│ └── character-sheet.json
├── mv.mp4 / talk.mp4 成片
└── manifest.json 成片清单(含兜底片段数、BPM、音轨)
分镜结构见 templates/storyboard.schema.json。
本仓保留了两套知识,分工明确:
references/,先看这里)| 文件 | 内容 | 来源 |
|---|---|---|
references/capability-matrix.md |
能力矩阵(实测状态 + 替代方案) | 本仓实测 |
references/jimeng-api.md |
即梦全部端点 + 三段式调用 + 上传 + 费用表 + 参数细节 | kb-raw/07 + 实测 |
references/narrative-playbook.md |
救猫咪15节拍 / 黄金三秒与嘴替式 / 10种爆款类型 / 人物弧光与冲突 / 前提公式 / 分镜设计 / 首尾帧设计 | kb-raw/05 |
references/voc-sop-pipeline.md |
VOC-SOP 五阶段 + 各阶段检测清单 + 合规/脱敏边界 | kb-raw/04 |
references/production-evolution.md |
版本1~6 方法演进 + 23 条踩坑清单 + 成本测算 + 成品案例库索引 | kb-raw/06 08 |
references/pipeline-a-song-mv.md |
产线A 逐步命令 + 避坑 | 本仓 |
references/pipeline-b-talking.md |
产线B 逐步命令 + 避坑 | 本仓 |
references/prompt-templates.md |
提示词模板库(人读版) | 本仓 |
kb-raw/,照抄细节时查这里)kb-raw/ 保留了用户交付的原始知识库(约 6.8MB,284 个文件),未做删改,
供后续查阅原始脚本、完整案例、长篇文档:
| 目录 | 内容 | 什么时候用 |
|---|---|---|
kb-raw/04-SOP工作流/ |
视频脚本生成 / 变装视频生成两套完整 SOP(含 flow 模板与脚本) | 要照抄 SOP 原文、看变装流程 |
kb-raw/05-剧本与叙事知识库/ |
《故事》麦基、《救猫咪》Ⅰ/Ⅱ/Ⅲ 全书 + 创作技能包 + dbskill 知识包 | 要读编剧理论原文 |
kb-raw/06-制作方法演进/ |
版本1~6 全过程 + 多个真实案例(含脚本、分镜、文案) | 要看某个版本的具体脚本 |
kb-raw/07-即梦API工具箱/ |
即梦全部 API 脚本 + 参考文档/(接口详解、资产生成记录) |
要查参数/端点的原始说明 |
kb-raw/08-成品案例库/ |
VOC 商业洞察分镜文案、AI 微纪录片制作文档 | 找成品参考格式 |
kb-raw/README.md |
知识库总说明与导航 | 先看这个定位 |
⚠️
kb-raw/内的脚本全部是历史原稿,含硬编码 token 与 Windows 绝对路径, 不可直接运行。它们只作为参考与出处存在。 要跑这些能力,请用本仓对应的fmode-mv命令(已改为运行时读凭据 + 参数化路径)。 唯一例外:kb-raw里的 token 是用户自己仓库的历史遗留,不是本仓引入的; 本仓的新增代码(lib/jimeng.mjs等)不含任何明文凭据。
lib/providers.mjs 是唯一通道注册表。
image / video 是旧网关通道,jimeng 是实测可用的新通道。
换模型/换端点只需环境变量,无需改代码。appearanceAnchor,逐镜头复述进 imagePrompt;character-sheet 产出的人物多视图,直接作为图生图参考。
改分镜逻辑时不要删掉任何一层。lib/jimeng.mjs 里本地卡住,避免白等一轮。
已知硬约束:getImgV4 面积 ≥ 1024²;视频 frames ∈ {121,145,169,193,217,241}。CostLedger 在每次调用前打印预估、调用后打印实扣
(优先采信接口返回的 usage.cost)。lib/ffmpeg.mjs 的 detectBeats() 纯 Node 实现,不依赖 aubio。.fallback 后缀或 status: fallback / degraded: true,
报告里明说。用户永远能分清哪些是真 AI 生成、哪些是兜底。MIT,见 LICENSE。
FmodeCode / FmodeAgent · v0.2.0