Communitygithub.com

nathankim0/爆款广告翻新

使用AI视频模型,将已验证的爆款短广告(TikTok/Reels/Shorts格式)为你的移动应用进行翻新,然后修复AI生成内容中的常见问题——虚拟手机屏幕、畸变手指、唇音不同步、静默时间——最终用真实应用录制、字幕和结束卡片完成制作。

爆款广告翻新 是什么?

该技能提供了一整套结构化工作流程,用于将已验证的爆款短视频广告转化为用户移动应用的专属广告。它适用于用户希望“像那个爆款视频一样”制作应用广告、要求复刻/翻新/复制广告格式,或需要修复AI生成广告中手机屏幕、同步或节奏问题的场景。工作流程涵盖:寻找参考广告、制作角色角色设定画(可使用Codex或其他图像模型)、生成翻新内容、逐镜头分析、通过平面追踪替换手机屏幕、保持同步的剪辑组装,以及最终验证。该技能需要 `ffmpeg`、Python 3及相关库,并推荐使用 `app-demo-recorder` 等技能录制应用画面。整个流程旨在避免常见AI失败(如虚假屏幕、畸形手指、唇音不同步),产出专业、可用的最终广告。使用者需先阅读 `references/lessons.md` 了解应避免的常见错误,并按步骤执行从目标设定到最终交付的全过程。支持的平台包括Meta、YouTube Shorts和TikTok。

兼容平台~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/nathankim0/viral-ad-remix/tree/HEAD/skills/viral-ad-remix

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

爆款广告翻新 是做什么的?

将已验证的广告结构转化为用户应用的广告。AI模型提供人物和场景;手机屏幕上显示的所有内容均来自真实应用录制;剪辑时确保每个口播台词都能对应到说话人的脸部。

$S = 技能目录下的 scripts/ 文件夹。需要 ffmpeg、Python 3(含 numpy pillow opencv-python-headless),以及用于语音检查的 mlx-whisper(Apple Silicon)或 openai-whisper。应用画面使用屏幕录制工具录制,例如 app-demo-recorder 技能(发布版、真实账号、无广告状态)。

在首次编辑前,请先阅读 references/lessons.md。其中列出了此工作流程旨在避免的常见失败问题。

0. 确认目标(一条消息)

目标受众(实际留在应用内的人,而非你希望使用的人)、渠道(Meta / YouTube Shorts / TikTok)、要展示的一个核心功能,以及积分预算。年长用户偏好较慢的节奏、更大的字体、同龄人出镜以及具体的好处(金钱、时间)。未确定预算前,不要开始付费生成。

1. 寻找已验证的参考广告

python3 $S/find_reference_ads.py search --country KR --objective app_install --period 180 --order like
python3 $S/find_reference_ads.py search --country KR --keyword 앱테크 --lang ko
python3 $S/find_reference_ads.py download <id> <id> --out refs

选择4–30秒的广告(翻新模型接受该范围),其结构需匹配功能:发现 → 尝试 → 结果 → 行动号召。点赞量因投放支出而虚高;仅在相同搜索范围内进行比较,不要跨搜索比较。参考视频带有水印,归其广告主所有:仅将其作为翻新任务的结构性参考源。

2. 选角(角色设定画)

翻新模型需要一张面孔进行复制。如果用户没有模特照片,请在消耗任何视频积分前,为每位角色生成一张角色设定画,并获得用户的批准。

  • 角色类型: 目标观众的同龄人(相同年龄、地区、职业、着装),普通而非模特级漂亮,匹配参考视频中的角色(主持人、顾客、邻居)。
  • 设定画: 一张横版图像(约1600x900),照片级真实感,同一人物和服装在三个视角下:正面半身特写、半身、全身;中性浅色背景,柔和的日光。双手放松且完全可见,每只手五根手指。无文字、logo、水印或手持手机。
  • 提示词框架: "Photorealistic character reference sheet of ONE fictional , <face/hair details>, wearing . Three views side by side on a plain light background: front close-up, half body, full body. Natural skin texture, soft daylight. No text, no logos, no props."

工具,按成本由低到高排序:

# Codex CLI 图像生成(含在 ChatGPT 计划中,不消耗视频积分)
codex exec --skip-git-repo-check --sandbox workspace-write -C cast \
  "Use your image generation tool to create ONE image: <prompt skeleton>. Save it as ./cast_<name>.png and print its path."
  • Higgsfield(或其他图像API)通过代理工具:使用相同提示词调用 generate_image,或使用其角色设定画工作流程生成多视角设定画。会消耗积分;需先报价。
  • 用户已付费的任何图像模型。

打开图像并检查:各视角面部一致,双手自然,无文字,无任何真实或名人相似度。虚拟人物需在平台或法律要求时标注为AI生成。将设定画与需求说明放在一起:翻新任务将其作为演员图像。

3. 生成翻新内容

准备:参考视频、第二步的角色设定画、应用图标,以及1–2张真实应用截图。

编写需求说明,使AI输出易于修复:

  • 保留参考视频的节拍和节奏;替换演员、场景、产品。提供原始口语台词,保持简短,使用目标语言。除非属实,否则避免使用证言式措辞(“我试过了,得到了……”);优先使用演示式表述(“让我们计算……”)。
  • 要求无字幕或屏幕文字(它们会变得模糊不清),以及无手持手机打字的特写(手部看起来错误,手指会遮挡屏幕,无法进行屏幕替换)。
  • 手机屏幕将被替换,因此要求手机保持静止且正对摄像头。
  • 先报价;以最低分辨率草稿;一次只输出一个结果。

4. 在触碰AI输出前进行映射

python3 $S/analyze_source.py ai.mp4 work/ana        # 镜头、口语台词、联系表 work/ana/shots.jpg
python3 $S/analyze_source.py ai.mp4 work/ana --no-speech --rms 17.2-17.6   # 在一句台词附近精确剪切音频点

查看 shots.jpg。将每个镜头分类:保留(人物、场景)、屏幕替换(手机正对摄像头)、丢弃(打字的手部、畸变面部、无法辨认的动作)。记录每句台词的说话位置和所在镜头。识别器标记的台词起始点通常提前0.3–0.7秒:在剪切音频前使用 --rms 确认。

5. 在每部手机上放置真实应用画面

python3 $S/screen_replace.py auto ai.mp4 3.33 6.50 app.mp4 work/shotB.mp4 --work work/B --app-start 2.4
python3 $S/screen_replace.py auto ai.mp4 17.46 21.25 app.mp4 work/shotE.mp4 --work work/E --app-start 10.6 --blank 0,1740,1080,2020

auto 模式提取镜头(在范围内的任何剪切点停止),找到关键帧和屏幕角点,将其吸附到边框内侧,通过整个镜头追踪手机(平面追踪,双向,包含旋转),进行亮度匹配并添加少量眩光,然后输出 work/X/key_preview.png(四边形 + 像素网格)和 work/X/qa.png(原始画面 vs 合成画面)。

始终打开这两张图像。 如果四边形偏移,从网格读取角点坐标,并使用 --key K --quad "x,y x,y x,y x,y"(左上、右上、右下、左下,内屏幕边缘)重新运行。使用分析所得安全范围内的 START/END。将应用片段与台词匹配:当演员提问时显示输入画面,当演员反应时显示结果画面。使用 --blank(应用像素坐标)遮盖过时或私密的UI。

6. 构建结果瞬间和文字

python3 $S/pop_highlight.py result_clip.mp4 x0,y0,x1,y1 work/pop.mp4 --blank 0,975,720,1145   # 关键数字弹出、发光、闪烁
python3 $S/captions.py captions.json work/caps     # 钩子、逐行字幕、结束卡片以PNG格式输出

文字规则:第一帧显示钩子(一个吸引观众的问题),每句台词对应一行字幕,最多两行,大字号、高对比度,位于底部20%区域和右侧边缘之外,切勿遮盖观众需要阅读的应用UI。文字保持用户可接受的最小量;法律要求的标示保留但字号小。结束卡片 = 应用图标 + 名称(+ 行动号召,如果用户需要)。

7. 保持同步进行剪辑组装

编写时间线JSON(格式见 scripts/assemble.py --help)并运行:

python3 $S/assemble.py timeline.json out.mp4
  • 音频使用原始源音频,剪切成片段;每个有人说话的镜头,视频和音频使用相同的源时间点。在应用画面、广角镜头和结束卡片上,台词可作为画外音播放。
  • 删除静默时间(台词前、镜头间的空白)而非加速所有内容。
  • 人物镜头必须从第一帧开始就有动作:切勿冻结面部来填充时间;如需延长反应时间,使用帧插值(minterpolate)对静默部分进行慢放,并输入比所需稍长的源素材。
  • 溶解效果使用剪切点之后的真实帧;应用画面可以直接硬切换。
  • 视频和音频总时长必须匹配(否则工具会拒绝执行)。

8. 像挑剔的观众一样进行验证

python3 $S/verify.py out.mp4 --forbid ai.mp4:10.79-17.29 --person 0-3.2 --person 5.2-8.8 --sheet work/sheet.jpg

然后查看设定画,对照字幕阅读原始台词,并完整观看一遍。常见遗漏:下一镜头的边界帧、面部冻结4帧、台词播放时匹配到错误的面部、替换屏幕边缘的虚假UI、文字覆盖应用界面、钩子文字在应用UI上停留过久。在展示给用户之前,修复并重新验证。

9. 交付

一个文件夹:最终MP4、AI原始输出、合成画面、时间线JSON、包含时间线表格的README、消耗的积分以及待定风险(AI人物披露、证言式措辞、品牌名称发音错误)。如果需要独立审查,请将帧联系表、原始台词和时间线交给全新上下文的审查者,并告知其需保留哪些结构:仅被告知“使其合规且更短”的审查者会删掉人物和应用画面。

相关技能