Skip to main content

timeless-wedding

AI 跨时空婚礼电影生成器(免费 API 版)。基于 Agnes 免费图片/视频 API,上传男女照片穿越 2-4 个中国历史朝代生成电影级婚礼短片。当用户想要免费制作 AI 婚礼视频、跨朝代爱情电影、或 dynasty-themed couple video with face-swap enhancement 时调用此 Skill。

معلومات المصدر

المستودع
smart-open/skills
آخر نشاط في المصدر
١٩ سبتمبر ٢٠٢٦ في ٠٦:٥٣
لغة SKILL.md المكتشفة
الصينية
النجوم
١٢
التفرعات
١

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
6 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
timeless-wedding
description
AI 跨时空婚礼电影生成器(免费 API 版)。基于 Agnes 免费图片/视频 API,上传男女照片穿越 2-4 个中国历史朝代生成电影级婚礼短片。当用户想要免费制作 AI 婚礼视频、跨朝代爱情电影、或 dynasty-themed couple video with face-swap enhancement 时调用此 Skill。
# Timeless Wedding - AI 跨时空婚礼电影生成器(免费 API 版) > **核心优势**:基于 **Agnes 免费图片/视频 API**,零成本生成跨时空婚礼电影。上传两张个人照片,穿越 2–4 个中国历史朝代,生成一段"几生几世跨时空相爱"的电影级婚礼短片。 ## 功能概述 1. **首帧生成**:为每个选中的朝代生成电影级双人婚礼场景首帧(Agnes Image t2i,**免费**) 2. **AI 肖像**(可选):为每个朝代生成保留面部特征的古装单人肖像(Agnes Image i2i,**免费**) 3. **换脸增强**(可选但强烈推荐):通过 FaceFusion 将用户真实面部替换到场景中,实现 80%+ 面部复刻 4. **视频生成**:以首帧驱动生成每朝代约 5–8 秒电影级视频(Agnes Video image2video,**免费**),含时间分段分镜剧本 5. **合并输出**:通过 FFmpeg 将所有片段合并为完整 MP4,含**朝代标题卡片**(朝代名 + 核心故事概述)、片头片尾 ## API 费用说明 | 服务 | 提供商 | 费用 | |------|--------|------| | 图片生成(t2i / i2i) | Agnes Image Gen 2 | **免费** | | 视频生成(image2video) | Agnes Video Gen 2 | **免费** | | 视频合并 | FFmpeg(本地) | **免费** | | 换脸增强 | FaceFusion(本地开源) | **免费** | > 本 Skill 全程使用 Agnes 免费 API,无需付费即可生成完整婚礼电影。仅当 API 限流或内容审核失败时需要重试。 ## 支持的朝代 每个朝代均配有:年代范围、核心故事概述、电影级时间分段分镜剧本(0-2s / 2-5s / 5-8s)。 | 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 | 山海之间的永恒承诺 | ## 依赖要求 ### 必需 - **Node.js 12+**(仅使用内置模块,无需 npm install) - **Agnes API Key**(环境变量 `agnes-api-key` 或 `--api-key`) - **FFmpeg 4.4+**(用于视频合并与转场,旧版自动降级为无转场拼接) ### 强烈推荐(实现 80%+ 面部复刻) - **Python 3.10+** - **FaceFusion**(开源换脸工具,支持 CPU 运行) ### FaceFusion 安装(Windows) ```powershell # 方式1:手动安装 git clone https://github.com/facefusion/facefusion.git cd facefusion python install.py --onnxruntime cpu # 方式2:使用附带脚本(如果存在) .\.trae\skills\timeless-wedding\scripts\install_facefusion.bat ``` 安装后设置环境变量: ```powershell $env:FACEFUSION_PATH="C:\facefusion\run.py" ``` ## 使用方法 ### 基本用法(2–4 个朝代) ```bash node .trae/skills/timeless-wedding/scripts/timeless_wedding.js \ --male-photo "D:\photos\groom.jpg" \ --female-photo "D:\photos\bride.jpg" \ --dynasties tang,song,ming,modern \ --output "D:\output\wedding.mp4" ``` ### 完整参数示例 ```bash node .trae/skills/timeless-wedding/scripts/timeless_wedding.js \ --male-photo "D:\photos\groom.jpg" \ --female-photo "D:\photos\bride.jpg" \ --dynasties tang,song,ming,modern \ --transition-duration 1.0 \ --add-title \ --add-ending \ --num-frames 121 \ --frame-rate 24 \ --output "D:\output\wedding.mp4" ``` ### 断点续跑 如果中途中断,使用 `--resume` 从上次状态继续: ```bash node .trae/skills/timeless-wedding/scripts/timeless_wedding.js \ --resume \ --work-dir "D:\...\work\20250101-120000-xxxx" ``` ### 重生成单个朝代 ```bash node .trae/skills/timeless-wedding/scripts/timeless_wedding.js \ --resume \ --work-dir "D:\...\work\20250101-120000-xxxx" \ --regenerate tang ``` ### 禁用换脸(纯 Agnes 模式) 如果不安装 FaceFusion,使用 `--no-face-swap` 运行。面部相似度约 50–60%,流程仍然完整: ```bash node .trae/skills/timeless-wedding/scripts/timeless_wedding.js \ --male-photo "D:\photos\groom.jpg" \ --female-photo "D:\photos\bride.jpg" \ --dynasties tang,song,ming,modern \ --no-face-swap \ --output "D:\output\wedding.mp4" ``` ## 参数速查 | 参数 | 说明 | 必填 | 默认 | |---|---|---|---| | `--male-photo <path>` | 男方照片路径 | 是 | — | | `--female-photo <path>` | 女方照片路径 | 是 | — | | `--dynasties <ids>` | 逗号分隔的朝代 ID(2–4 个) | 是 | — | | `--transition-duration <s>` | 转场时长(秒) | 否 | `1.0` | | `--add-title` | 添加片头 | 否 | 关闭 | | `--add-ending` | 添加片尾 | 否 | 关闭 | | `--output <path>` | 最终输出 MP4 路径 | 否 | `work/{session}/final/wedding_movie_{id}.mp4` | | `--resume` | 从 state.json 断点续跑 | 否 | 关闭 | | `--regenerate <id>` | 重生成指定朝代 | 否 | — | | `--no-face-swap` | 禁用 FaceFusion 换脸 | 否 | 关闭 | | `--bgm <path\|auto>` | 为成片混入背景音乐。`auto`(默认)= 按朝代 mood 情绪弧分段;`<path>` = 自备曲目。音量 0.28、淡入 1.5s/淡出 2.5s、loudnorm −14 LUFS;失败保持原片 | 否 | auto | | `--no-bgm` | 关闭 BGM 声音层 | 否 | 关闭 | | `--dry-run` | 只打印全部 ffmpeg 命令(合并/情绪弧/混音),不执行、不消耗额度 | 否 | 关闭 | | `--facefusion-path <path>` | FaceFusion run.py 路径 | 否 | 自动检测 | | `--api-key <key>` | Agnes API Key | 否 | 环境变量 `agnes-api-key` | | `--work-dir <dir>` | 工作目录 | 否 | `work/{sessionId}/` | | `--num-frames <n>` | 每朝代视频帧数 | 否 | `121`(约 5 秒) | | `--frame-rate <n>` | 视频帧率 | 否 | `24` | ## 帧数与时长对照 | 帧数 | 时长(@24fps) | 备注 | |---|---|---| | 121 | ~5.0 秒 | 默认,最稳妥 | | 169 | ~7.0 秒 | 推荐 | | 193 | ~8.0 秒 | 推荐 | | 241 | ~10.0 秒 | 较长 | **注意**:`num-frames` 必须满足 `8n+1` 规则且 `<= 441`。 ## 工作流程详解 ``` 用户照片(男) ──┐ 用户照片(女) ──┤ │ 步骤1: Agnes t2i 生成朝代双人场景首帧(免费) ↓ 步骤2(可选): Agnes i2i 生成朝代 AI 肖像(保留五官,免费) ↓ 步骤3(可选): FaceFusion 换脸增强(男→女顺序替换,本地免费) ↓ 步骤4: Agnes i2i 上传首帧获取公开 URL(免费) ↓ 步骤5: Agnes image2video 生成每朝代视频(免费) ↓ 步骤6: FFmpeg concat demuxer 合并 + 朝代标题卡 + 片头片尾 ↓ 最终婚礼电影 MP4 ``` ## 文件结构 ``` work/ └── {YYYYMMDD-HHMMSS-sessionId}/ ├── state.json # 断点状态 ├── frames/ │ └── {dynasty}_scene.jpg # 原始首帧 ├── portraits/ │ ├── {dynasty}_male.jpg # AI 肖像(男) │ └── {dynasty}_female.jpg # AI 肖像(女) ├── swapped/ │ ├── {dynasty}_male_swapped.jpg │ └── {dynasty}_final.jpg # 换脸后最终首帧 ├── videos/ │ └── {dynasty}.mp4 # 单朝代视频 ├── temp/ │ ├── {dynasty}_uploaded.jpg # 上传用中间文件 │ ├── {dynasty}_card.mp4 # 朝代标题卡(朝代名+故事概述) │ ├── title.mp4 # 片头("几生几世 跨时空相爱") │ ├── ending.mp4 # 片尾("今生今世 永不分离") │ ├── simhei.ttf # 中文字体(自动复制) │ └── concat_list.txt # FFmpeg 合并列表 └── final/ └── wedding_movie_{id}.mp4 # 最终输出 ``` ## 环境变量 | 变量 | 说明 | |---|---| | `agnes-api-key` | Agnes Image/Video API Key | | `AGNES_API_KEY` | Agnes API Key(备用) | | `FACEFUSION_PATH` | FaceFusion run.py 的绝对路径 | ## 注意事项 1. **API 完全免费**:本 Skill 全程使用 Agnes 免费 API(图片生成 + 视频生成),无需任何付费 2. **API Key 优先级**:`--api-key` > 环境变量 `agnes-api-key` > `AGNES_API_KEY` 3. **FFmpeg 路径检测**:脚本自动检测完整版 FFmpeg(winget 安装路径),避免使用 TRAE 内置轻量版(缺少 drawtext/concat) 4. **中文字体处理**:Windows 下自动将 `simhei.ttf` 复制到工作目录,使用相对路径避免 FFmpeg filter 冒号解析错误 5. **FaceFusion 检测**:脚本自动检测 FaceFusion,未安装时提示安装指引并降级运行 6. **视频下载**:每段视频下载后立即设为只读,防止工作区清空为 0 字节 7. **并发控制**:视频生成任务并发数为 2,避免 API 限流 8. **合并策略**:默认使用 `concat demuxer + re-encode`(更可靠),避免 xfade 导致的视频流截断问题 9. **照片建议**:使用正面清晰照片,光线均匀,面部无遮挡,换脸效果最佳 10. **生成耗时**:2 个朝代约 10–15 分钟,4 个朝代约 20–30 分钟(取决于 API 排队情况) 11. **Prompt 长度**:Agnes API 对长 prompt 敏感,所有 image/video prompt 均保持简洁(~200 字符),避免 content_policy_violation ## 完善记录(2026-09 借鉴 short-drama-studio 一致性方法论) - **定妆照先行 + 参考基准统一**:`timeless_wedding.js` 的场景帧 i2i 参考优先使用**本朝代男方定妆照**(已穿朝代服装、身份已锁定,`--generate-portraits` 生成),而非原始现代照片——参考图与目标场景语义差距越小,人脸漂移越少;缺定妆照时回退原始照片(老行为)。 - **identity-lock 身份锚点**:场景帧 prompt 追加身份锁定段——男方面容必须与参考照完全一致(禁止美颜/漂移),男女双方在整幅画面中保持同一张脸,禁止多余人物。 - **重拍版本归档(archive_old_file)**:`--regenerate <id>` 时旧朝代视频先归档到 `videos/versions/` 再重建,覆盖不再等于销毁。 - **已知局限**:Agnes 图像 CLI 仅支持单参考图(i2i 单图输入),女方图像锚点依赖 FaceFusion 换脸兜底(步骤 2 已有);如需双人双参考锁定,改用 `timeless-wedding-volc`(Seedream multi-i2i 支持男女双肖像参考)。 ## 完善记录(2026-09-19 统一方法论 P0 落地) - **BGM 声音层(P0-3,借鉴 ManjuForge 声音四层设计)**:新增 `--bgm <path>`。成片拼接后混入 背景音乐(`mixBgm()`):循环铺满全片、音量 0.28、淡入 1.5s/淡出 2.5s、loudnorm −14 LUFS; 本版成片为无声拼接(`-an`),BGM 直接成为音轨;混音失败仅告警、不影响原片。 这是"音乐层"最小实现;环境/生理/细节层留待后续。 - **预算防线(P0-2)**:`run()` 启动时打印生成预估——场景图/定妆照/视频调用次数与 每段时长、整片耗时量级,让成本先于账单出现(免费期仍提示限流风险)。 ## 完善记录(2026-09-19 补课轮:BGM 情绪弧) - **BGM 情绪弧(P0-3 补全,与 -volc 版同源 bgm_arc.js)**:`--bgm` 默认 `auto`——dynasties.js 13 朝代各配 `mood` 字段,按 mood 分段选曲拼接情绪弧;成片无声(Agnes 输出 -an)时 BGM 直接成为音轨 + loudnorm −14 LUFS。 - **内置曲库**:`bgm/manifest.json`(mood→曲目映射 + ffmpeg 合成参数);缺文件自动合成 环境垫乐占位。 - **`--dry-run` / `--no-bgm`**:dry-run 只打印 ffmpeg 命令不执行。
عرض على GitHub