Skip to main content

timeless-wedding-volc

AI 跨时空婚礼电影生成器。上传男女照片,选择中国朝代,自动生成电影质感的跨时代婚礼视频。当用户想要制作 AI 婚礼视频、跨朝代爱情电影、上传照片生成视频时调用此 Skill。

Quellinformationen

Repository
smart-open/skills
Letzte Quellaktivität
19. September 2026 um 06:53
Erkannte Sprache von SKILL.md
Chinesisch
Sterne
12
Forks
1

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
12 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
timeless-wedding-volc
description
AI 跨时空婚礼电影生成器。上传男女照片,选择中国朝代,自动生成电影质感的跨时代婚礼视频。当用户想要制作 AI 婚礼视频、跨朝代爱情电影、上传照片生成视频时调用此 Skill。
# Timeless Wedding Volc - AI 跨时空婚礼电影生成器 基于 **Volcengine Ark(豆包)** 平台的 AI 婚礼电影生成 Skill。用户上传男女两张照片,选择 2-5 个中国朝代,即可自动生成一部跨越时空的 cinematic 婚礼电影。 ## 核心特性 - **Seedream 5.0 Pro** 生成朝代 AI 肖像与场景首帧(i2i 保留面部五官) - **Seedance 2.0** 生成电影质感动态视频(支持 5 种模式) - **13 个朝代**完整配置,每个朝代配有独立服装、场景、风俗、时间分段视频分镜剧本 - **朝代标题卡片**:每个朝代转场后显示朝代名 + 核心故事概述 - **FFmpeg 合并**:concat demuxer + 片头片尾 + 朝代标题卡 - **零依赖**:纯 Node.js 内置模块,无需 npm install - **断点续跑**:通过 `state.json` 支持 `--resume` 和 `--regenerate` ## 模型说明 ### 图片生成(固定,无需指定) | 模型 | 模型 ID | 说明 | |------|---------|------| | Seedream 5.0 Pro | `doubao-seedream-5-0-pro-260628` | i2i 肖像 + multi-i2i 场景,最小 921,600 像素 | ### 视频生成(用户可选) 通过 `--video-model` 参数指定: | 选项 | 模型 ID | 特点 | 适用场景 | |------|---------|------|----------| | **标准版**(默认) | `doubao-seedance-2-0-260128` | Seedance 2.0,画质最佳,生成较慢 | **正式输出**,婚礼电影成片 | | **Mini 快速版** | `doubao-seedance-2-0-mini-260615` | Seedance 2.0 Mini,速度更快 | 快速预览效果、调试分镜 | | **Fast 版** | `doubao-seedance-2-0-fast-260128` | Seedance 2.0 Fast,极速生成 | 最快验证,牺牲部分画质 | > Mini/Fast 模型不支持 `resolution` 参数,代码会自动移除该参数。 > 标准版支持完整参数:`duration`、`ratio`、`resolution`、`generate_audio`、`return_last_frame`。 ### 使用示例 ```powershell # 标准版(默认,无需指定 --video-model) node timeless_wedding_volc.js --dynasties "tang,ming" --male-photo ... --female-photo ... # Mini 快速版(预览效果) node timeless_wedding_volc.js --dynasties "tang,ming" --video-model doubao-seedance-2-0-mini-260615 --male-photo ... --female-photo ... # Fast 极速版(最快验证) node timeless_wedding_volc.js --dynasties "tang,ming" --video-model doubao-seedance-2-0-fast-260128 --male-photo ... --female-photo ... ``` ## 环境要求 - **Node.js** 12+ - **FFmpeg** 4.4+(完整版,需支持 `drawtext` 和 `concat`) - **Volcengine Ark API Key** ### FFmpeg 安装(Windows) ```powershell winget install Gyan.FFmpeg ``` ## 工作流 ``` 用户照片(男女各1张) │ ▼ ┌─────────────────┐ │ Seedream i2i │ 生成朝代 AI 肖像(保留五官特征,朝代服饰) │ 单人肖像生成 │ size: 1424x800 └─────────────────┘ │ ▼ ┌─────────────────┐ │ Seedream multi- │ 男女肖像参考生成双人场景首帧 │ i2i 场景图 │ couplePrompt + portrait references └─────────────────┘ │ ▼ ┌─────────────────┐ │ Seedance 视频 │ 首帧/参考图驱动生成 cinematic 视频 │ 生成 │ 无音频,纯画面叙事 └─────────────────┘ │ ▼ ┌─────────────────┐ │ FFmpeg 合并 │ 朝代标题卡 → 视频 → 片头片尾 │ 输出 │ concat demuxer, 无音频 └─────────────────┘ ``` ## 使用方法 ### 设置 API Key ```powershell $env:ARK_API_KEY = "your-ark-api-key" ``` ### 基础用法 ```powershell cd .trae/skills/timeless-wedding-volc/scripts node timeless_wedding_volc.js ` --male-photo "C:\Photos\groom.jpg" ` --female-photo "C:\Photos\bride.jpg" ` --dynasties "tang,song,ming,modern" ` --add-title --add-ending ``` ### 完整参数列表 | 参数 | 必填 | 默认值 | 说明 | |------|------|--------|------| | `--male-photo <path>` | 是 | - | 男方照片路径 | | `--female-photo <path>` | 是 | - | 女方照片路径 | | `--dynasties <ids>` | 是 | - | 逗号分隔的朝代 ID(2-5 个) | | `--custom-desc <text>` | 否 | - | 个人故事描述,融入场景生成 | | `--mode <mode>` | 否 | `first-frame` | 视频模式(见下文) | | `--video-model <id>` | 否 | 标准版 | Seedance 模型 ID | | `--duration <s>` | 否 | `8` | 每段视频时长(4-15 秒) | | `--ratio <r>` | 否 | `16:9` | 宽高比:`16:9` / `9:16` | | `--resolution <r>` | 否 | `720p` | 分辨率:`480p` / `720p` / `1080p` | | `--transition-duration <s>` | 否 | `1.0` | 转场时长(秒) | | `--add-title` | 否 | false | 添加片头("几生几世 跨时空相爱") | | `--add-ending` | 否 | false | 添加片尾("今生今世 永不分离") | | `--add-subtitles` | 否 | false | 每段添加朝代信息字幕 | | `--bgm <path\|auto>` | 否 | auto | BGM:`auto`=按朝代 mood 情绪弧分段(bgm_arc.js + sidechain 避让);`<path>`=自备曲目 amix 垫底 + loudnorm −14 LUFS | | `--no-bgm` | 否 | 关闭 | 关闭 BGM 声音层 | | `--dry-run` | 否 | 关闭 | 只打印全部 ffmpeg 命令(合并/情绪弧/混音),不执行、不消耗额度 | | `--output <path>` | 否 | 自动 | 最终输出 MP4 路径 | | `--resume` | 否 | false | 从 state.json 断点续跑 | | `--regenerate <id>` | 否 | - | 重生成指定朝代 | | `--api-key <key>` | 否 | 环境变量 | Ark API Key | | `--work-dir <dir>` | 否 | 自动 | 工作目录 | ## 视频生成模式 | 模式 | 说明 | 适用场景 | |------|------|----------| | `first-frame` | 场景图作首帧,Seedance 延续画面 | **默认推荐**,场景一致性最佳 | | `first-last-frame` | 首尾帧双约束,生成过渡视频 | 需要明确起止画面 | | `multimodal` | 肖像作参考 + 场景作首帧 | 增强面部一致性 | | `portrait-reference` | 仅肖像参考,文字驱动场景 | 自由度高 | | `text2video` | 纯文本,跳过图片生成 | 最快但一致性最低 | ## 可用朝代 | ID | 朝代 | 主题 | 年代 | 故事概述 | |----|------|------|------|----------| | `xia` | 夏 | 华夏初光 | c.2070-1600 BCE | - | | `xizhou` | 西周 | 礼乐天下 | 1046-771 BCE | - | | `warring` | 战国 | 烽火佳人 | 475-221 BCE | 烽火连天下的重逢之誓 | | `han` | 汉 | 大汉雄风 | 202 BCE-220 CE | - | | `jin` | 晋 | 魏晋风流 | 265-420 | - | | `nanbeichao` | 南北朝 | 乱世情缘 | 420-589 | - | | `tang` | 唐 | 大唐盛世 | 618-907 | 长安灯火下的千年之约 | | `song` | 宋 | 宋韵清雅 | 960-1279 | - | | `yuan` | 元 | 草原雄鹰 | 1271-1368 | - | | `ming` | 明 | 凤冠霞帔 | 1368-1644 | 紫禁城中的凤冠之约 | | `qing` | 清 | 满汉情深 | 1644-1912 | - | | `minguo` | 民国 | 十里洋场 | 1912-1949 | - | | `modern` | 现代 | 永恒誓言 | 1949-Present | 山海之间的永恒承诺 | > 带"故事概述"的朝代已配置完整的电影级时间分段分镜剧本。 ## 输出结构 ``` work/ └── 20260716-143022-a1b2/ ├── state.json # 进度状态(支持 resume) ├── portraits/ # 朝代 AI 肖像 ├── scenes/ # 双人场景首帧 ├── videos/ # 朝代视频片段 ├── last_frames/ # 视频末帧截图 ├── temp/ # 标题卡、concat list、字体 └── final/ # 最终合并输出 ``` ## 故障排查 | 问题 | 解决方案 | |------|----------| | "FFmpeg not found" | `winget install Gyan.FFmpeg`,确保完整版 | | "Request body size exceeds 64MB" | 压缩照片至 2MB 以下 | | 视频任务 failed | 首帧敏感内容/限流,用 `--regenerate <id>` 重试 | | 面部保留度低 | 使用正面高清照片,尝试 `--mode multimodal` | | 朝代标题卡片乱码 | 确认 `C:\Windows\Fonts\simhei.ttf` 存在 | | 断点续跑找不到目录 | 用 `--work-dir` 指定之前的工作目录 | ## 技术架构 | 文件 | 行数 | 职责 | |------|------|------| | `timeless_wedding_volc.js` | 432 | 主入口 CLI,状态机,流水线编排 | | `ark_client.js` | 151 | Ark API 通信封装,指数退避重试 | | `dynasties.js` | 536 | 13 朝代配置,英文 prompt,时间分段剧本 | | `image_pipeline.js` | 221 | Seedream i2i 肖像 + multi-i2i 场景 | | `video_pipeline.js` | 321 | Seedance 5 模式提交、轮询、下载 | | `merge_engine.js` | 409 | FFmpeg concat 合并、标题卡、片头片尾 | ## 许可证 仅供个人学习和非商业用途。请遵守 Volcengine Ark 平台使用条款。 ## 完善记录(2026-09 借鉴 short-drama-studio 一致性方法论) - **固定 seed 可复现**:新增 `--seed <n>` 参数;首次运行自动生成 seed 并持久化到 `state.json`,续跑/重生成沿用同一 seed + 同描述即可复现。Seedream 肖像/场景 payload 与 Seedance 视频 payload 均透传该 seed(各朝代共用同一 seed)。 - **identity-lock 身份锚点(三层落点)**: - 肖像层:`image_pipeline.js` 的 portrait prompt 追加"面容/脸型/五官/肤色与参考照片完全一致,强识别特征(痣/疤)必须原样保留,禁止美颜漂移"; - 场景层:couple scene prompt 追加"男女面容必须与各自参考肖像一致,整幅画面保持不变,无多余人物"; - 视频层:`video_pipeline.js` 新增统一 `CONSISTENCY_SUFFIX` 追加到每个朝代 videoPrompt 末尾——"全片同男主同女主、同脸同发型同服装、不新增角色、物件不消失"(对应 short-drama-studio 视频 prompt 六段式中的"一致性要求"段)。 - 之前 volc 版 `videoPrompt` 无一致性要求段(Agnes 免费版有),本次补齐对齐。 - **多模态自动质检(qa_scenes.js,借鉴 qa_frames.py)**:对每个朝代场景帧,把「男方定妆照 + 女方定妆照 + 待检场景帧」喂给 Ark doubao 视觉模型(默认 `doubao-seed-1-6-flash-250615`,可 `--qa-model` 覆盖),按固定 JSON 维度判定:硬性通过 `couple_present / face_match_male / face_match_female / outfit_match(朝代婚礼服饰)/ scene_match(朝代场景、无现代穿帮)`,硬性排除 `extra_person / watermark_or_text`。输出 `work/scene_qa.json`;`--delete-bad` 把坏帧归档到 `scenes/versions/`(保留 3 版)并清 `state.scenes[id]`,重跑主程序即可补缺。用法:`node qa_scenes.js --work-dir work/xxx [--only tang,ming] [--delete-bad] [--offline]`。 - **多宫格批量定妆照(grid_portraits.js,借鉴 grid_gen.py)**:把 N 个朝代的同性别定妆照塞进一张 2xN 宫格图一次生成(i2i 单人参考照 + identity-lock),ffmpeg crop 切格后回填 `state.portraits`(结构与逐张生成完全一致,场景帧阶段可直接使用),省 N-1 张图成本;旧图归档到 `portraits/versions/`。⚠ 宫格内一致性弱于逐张 i2i,适合草稿/初稿;对一致性要求高走主流程。用法:`node grid_portraits.js --male-photo him.jpg --female-photo her.jpg --work-dir work/xxx [--gender both] [--grid auto] [--force]`。`ark_client.js` 新增 `postChatCompletion`(OpenAI 兼容 /chat/completions)供质检复用。 ## 完善记录(2026-09-19 统一方法论 P0 落地) - **BGM 声音层(P0-3,借鉴 ManjuForge 声音四层设计)**:`merge_engine.js` 新增 `mixBgm()` + `hasAudioStream()`,`--bgm <path>` 参数三处联动(parseArgs/help/merge options)。 成片若有原声:BGM 以 0.28 音量 amix 垫底 + loudnorm −14 LUFS;若无原声:BGM 成为音轨。 循环铺满、淡入 1.5s/淡出 2.5s;混音失败仅告警、不影响原片。 - **预算防线(P0-2)**:`validateInputs()` 配置面板新增 Estimate 行——按朝代数估算 图像调用(肖像 ×2 + 场景 ×1)与视频调用(N × duration),并给出整片耗时区间。 ## 完善记录(2026-09-19 补课轮:BGM 情绪弧) - **BGM 情绪弧(P0-3 补全)**:`--bgm` 默认 `auto`——13 朝代 dynasties.js 各配 `mood` 字段 (majestic/solemn/tense/serene/lush/nostalgic/warm),`bgm_arc.js` 按 mood 分段选曲、 段间 0.8s 淡入淡出拼接成整条情绪弧;成片有原声时 `sidechaincompress` 自动避让 (人声压 BGM,标题卡/转场处原声静默 → 音乐自然浮起)。 - **内置曲库**:`bgm/manifest.json` 声明 mood→曲目(`bgm/<mood>.mp3`,自备放入即生效); 缺文件时按和弦参数用 ffmpeg lavfi 合成 64s 环境垫乐占位(零新增依赖,可听但简单)。 - **`--dry-run` / `--no-bgm`**:dry-run 全链路(合并+情绪弧+混音)只打印 ffmpeg 命令不执行。
Auf GitHub ansehen