README.md 7.3 KB

fmode-mv

纯 AI 音乐 MV 全流程技能 —— 从一句主题到成片,全程零实拍。 两条产线:AI 单曲 MV 与 AI 口播讲解视频,共用同一套底层模块。

Node deps


这是什么

把「作曲填词 → AI 生成音乐 → AI 制作 MV」整条链路固化成一个可复用、可照跑的技能仓库。 任意数字生命克隆本仓即可开工:

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    # 看哪条通道能用
node bin/fmode-mv.js song "深夜末班地铁上的城市白领"   # 端到端跑一条 MV

纯 AI 生成,不依赖实拍 —— 现实拍摄素材最多作参考图/参考音。


快速开始

# 1. 依赖:Node ≥ 18 + ffmpeg(零 npm 依赖)
node -v && ffmpeg -version | head -1

# 2. 凭据(三选一,绝不硬编码)
export FEME_API_TOKEN=<你的 token>
# 或写入 /opt/data/fmode-identity.json 的 newapi_token 字段

# 3. 自检
node bin/fmode-mv.js doctor

# 4. 产线A:AI 单曲 MV
node bin/fmode-mv.js song "深夜末班地铁上的城市白领" --genre "city pop" --mood "孤独但温暖"

# 5. 产线B:AI 口播讲解视频
node bin/fmode-mv.js talk "三分钟讲清楚什么是多租户数据隔离" --duration 90

装成全局命令(可选):

npm link
fmode-mv song "主题"

两条产线

两条产线共用同一套底层模块(图像生成 / 视频生成 / 音频处理 / 剪辑 / provider 接口), 只是编排不同。

产线 A · AI 单曲 MV

歌曲主题 → 作曲填词 → AI 音乐 → 人声/伴奏分离 → 场景&人物关键帧
        → 图生视频(B-roll 空镜 + 人物演唱镜头,每段 5~8 秒)
        → 唇形驱动 → 剪辑合成(卡点 + 字幕)→ out/mv.mp4

产线 B · AI 口播讲解视频

口播需求 → 口播稿 → TTS 配音 → 讲解画面 → 场景切换 B-roll
        → 剪辑合成 → out/talk.mp4

★能力现状(实测,务必先看)

环节 现状 说明
作曲填词 / 分镜 / 口播稿 ✅ 可用 POST /v1/chat/completions
场景 / 人物关键帧 ✅ 可用 POST /v1/images/generations(gpt-image-2.5-sunburst)
剪辑 / 合成 ✅ 可用 本地 ffmpeg:拼接/混音/字幕/卡点/响度归一化
AI 音乐 ⚠️ 端点存在,渠道未开通 /suno/submit/music 返回 503
图生视频 ⚠️ 无可用渠道 /v1/video/generations 返回 503
唇形驱动 ⚠️ 平台暂无通道 留 provider 接口 + 外部对接说明
TTS 口播配音 ⚠️ 平台暂无通道 本地 edge-tts 可替代(自动探测)
音轨分离 ◐ ffmpeg 近似 / demucs 可选 需要真·分离请装 demucs
fmode-mv providers          # 随时查看最新状态
fmode-mv providers --deep   # 深度探活(会真实提交,可能计费)

未开通通道怎么处理

绝不静默失败,绝不编造产物。

  • 调用未开通通道 → 抛出 ProviderUnavailableError,打印可操作方案。
  • 端到端编排遇到未开通步骤 → 如实标记,能兜底的才兜底,最终报告里逐条列出。
  • 图生视频未开通 → 自动降级为「关键帧 + Ken Burns 运镜」, 产物文件名带 .fallback,报告里明说「N 段为兜底运镜(非真 AI 图生视频)」。

替代路线速查:

缺失能力 立即可用的替代
AI 音乐 --music your-song.mp3 自备音频
图生视频 自动 Ken Burns 兜底;或 FEME_VIDEO_MODEL 换已开通模型
唇形驱动 自建 Wav2Lip/SadTalker + FEME_LIPSYNC_ENDPOINT;或改用表情微动镜头;或纯空镜+字幕
TTS pip install edge-tts(免费本地,自动探测);或 FEME_TTS_ENDPOINT

详见 references/capability-matrix.md。


命令速查

命令 作用 通道
fmode-mv song "主题" 产线A 端到端 全链路
fmode-mv talk "主题" 产线B 端到端 全链路
fmode-mv lyrics "主题" 作曲填词 chat
fmode-mv storyboard --from work/song.json 分镜脚本 chat
fmode-mv music --from work/song.json AI 音乐 music
fmode-mv separate <audio> 人声/伴奏分离 本地
fmode-mv keyframe --from work/storyboard.json 关键帧 image
fmode-mv video --from work/storyboard.json 图生视频 video
fmode-mv lipsync --probe 唇形驱动 lipsync
fmode-mv tts --from work/script.md 口播配音 tts
fmode-mv assemble --from work/storyboard.json --music a.mp3 剪辑成片 本地
fmode-mv providers [--deep] 能力现状表 —
fmode-mv doctor 环境自检 —

每个命令都支持 --help。

省钱三招:--dry-run 先看 prompt、--limit 2 先跑通全链路、产物在 work/ 只重跑不满意的单步。


文档索引

文件 内容
SKILL.md 技能主文档(设计要点、工作流、产物结构)
references/pipeline-a-song-mv.md 产线A 完整 SOP(逐步命令 + 避坑)
references/pipeline-b-talking.md 产线B 完整 SOP
references/prompt-templates.md 提示词模板库(歌词/分镜/人物一致性/空镜/口播)
references/capability-matrix.md ★能力现状表与替代方案
templates/storyboard.schema.json 分镜数据结构

设计要点

  1. provider 可插拔 —— lib/providers.mjs 是唯一通道注册表,模型名与端点全部可被 环境变量或身份文件覆盖,换通道不用改代码。
  2. 人物一致性靠锚点 —— 分镜里的 appearanceAnchor 被逐镜头复述进每张关键帧 prompt。 这是纯 AI 出片最容易翻车的地方。
  3. 卡点纯 Node 实现 —— 解码 PCM → 短时能量 → 局部阈值峰值 → 中位间隔估 BPM, 不依赖 aubio,零 npm 依赖。
  4. 兜底必须留痕 —— 所有降级产物带 .fallback 后缀或 status: fallback, 用户永远能分清哪些是真 AI 生成、哪些是兜底替代。
  5. 零凭据落盘 —— token 只从环境变量/身份文件读,绝不写入任何文件、日志、产物或提交; 对外只输出脱敏形式。

环境要求

  • Node ≥ 18(使用内置 fetch,零 npm 依赖)
  • ffmpeg / ffprobe(apt-get install -y ffmpeg / brew install ffmpeg)
  • 凭据(优先级:FEME_* 环境变量 > /opt/data/fmode-identity.json > 兼容旧名 FMODE_*)
  • 可选:demucs(高质量音轨分离)、edge-tts(免费 TTS)、fonts-noto-cjk(中文字幕字体)

    fmode-mv doctor    # 一次查完全部依赖
    

许可

MIT © Fmode


FmodeCode / FmodeAgent · v0.1.0