关于 lanshu-create-ai-presenter-video
面向视频创作者的 AI 主播视频制作技能,从主题或脚本与授权图片出发,组织配音、画面生成、剪辑和交付检查。它通过状态记录和机器及视觉质检,要求成品通过验证后才标记完成。
主要功能
- 01从主题或脚本启动制作
- 02将旁白锁定为时间轴基准
- 03记录生成任务与制作状态
- 04检查画面、音频和字幕
- 05验证主视频与分享版本
适用场景
- 01制作带 AI 主播的讲解视频
- 02根据锁定旁白规划分段生成
- 03恢复未完成的视频制作任务
- 04交付前检查成片与文件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ cclank/ lanshu-create-ai-presenter-video --skill lanshu-create-ai-presenter-video安装后在 Claude Code 中输入/lanshu-create-ai-presenter-video确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreLICENSEREADME.mdREADME.zh-CN.md.github/workflows/validate.ymlagents/openai.yamlassets/job.template.jsonreferences/generation.mdqa-recovery.mdediting.mdscripts/check_state.pyfinalize_delivery.shinit_job.pypreflight.pyplan_segments.pytests/smoke.sh详细介绍
Lanshu 创建 AI Presenter 视频
使用最少的输入,制作一段经验证的 Presenter 主导视频。最终旁白是 Presenter 动作、字幕、图形、剪辑和交付时长的主时钟。
必须交付的成果
- 从一个主题或脚本,以及一张包含一位清晰成年 Presenter 的授权图片开始。
- 交付完整解码的母版视频、较小的分享副本、字幕、制作记录,以及彼此独立的机器和视觉 QA 记录。
- 确保工作流适用于不同的服务提供商、模型、画面比例、语言和时长。
操作规则
- 在执行相关远程操作前,确认图片版权、成年身份、远程上传许可和声音克隆授权。
- 将远程生成视为可能会产生费用的操作。首次付费调用前,说明上传的素材、请求的秒数或单位、已知费用、试制规模、重试上限和预期输出。对于完全相同的计划,复用已给出的批准。
- 绝不根据图片推断真人声音。使用授权的样本,或录制选定的库存语音。
- 在生成 Presenter、确定字幕时间或最终场景边界之前,锁定完整旁白。
- 优先使用一张 Presenter 图片、一种声音身份、一种视觉处理方式和一个连续的 Presenter 素材源。
- 在最终合成中静音视频源。仅混入已批准的外部旁白和有意添加的混音轨道。
- 保留服务提供商的请求正文和任务 ID,但不得包含凭据或会过期的 URL。对于中断的任务,先轮询查询,再考虑重新提交。
- 使用数值检查发现技术故障,并以正常速度进行视觉审查,检查身份、嘴型同步、眨眼、手势、手部、光照和连续性。
- 拒绝三个付费候选版本后,或在进行会显著影响成本、隐私、声音、外观或服务提供商的更改之前,停止操作。
- 只有在最终文件完全解码、联系表或完整播放已完成审查,并且
check_state.py报告verified后,才能声称已完成。
开始或恢复任务
对于新任务,请阅读 generation.md。将 SKILL_DIR 设置为包含此文件的目录;其位置取决于运行环境。然后运行:
SKILL_DIR=/path/to/lanshu-create-ai-presenter-video
python3 "$SKILL_DIR/scripts/init_job.py" \
--job-dir ~/Videos/my-presenter-video \
--presenter-image ~/Pictures/presenter.png \
--topic "用一分钟讲清楚上下文工程"
对于已有脚本文件,请使用 --script。可选标志包括 --voice-sample、--supporting-media、--duration、--aspect、--width、--height、--fps、--watermark 和 --cta。初始化程序会将每个输入复制到任务目录,并记录相对于任务目录的路径,因此任务目录自包含;后续的素材路径也应保持相对于任务目录。
检查实际源图片并试听任何声音样本。在 job.json 中记录人工审查和批准,然后运行:
python3 "$SKILL_DIR/scripts/preflight.py" ~/Videos/my-presenter-video/job.json
对于现有任务,请阅读 job.json、当前素材、任务 ID 和 QA 报告,然后运行 check_state.py(见下文),找出最早尚未完成的状态。从该状态继续,不要重新生成已接受的工作。
制作状态机
仅当证据齐备时,才能推进任务:
intake
→ content_locked passing preflight report, script, beat sheet
→ audio_locked decodable final audio, ASR report
→ visual_plan_locked timeline, storyboard, plan.status "approved"
→ presenter_generated recorded main_presenter capability, selected video, visual review
→ composition_checked composition report
→ rendered decodable render with video and audio
→ verified master, share, delivery report with passing output loudness
绝不要手动编辑 state。在 job.json 中记录素材,然后让检查器计算状态:
python3 "$SKILL_DIR/scripts/check_state.py" ~/Videos/my-presenter-video/job.json --write
不带 --write 时只会报告状态。如果记录的状态超出证据所支持的范围,它会以非零状态码退出,并列出下一状态尚缺的内容。
1. 锁定内容和音频
阅读 generation.md。
- 将主题整理成一条口播内容主线,或润色提供的脚本,但不得悄然改变事实含义。
- 保存制作脚本、节拍表、发音指南和旁白分段。
- 使用一套声音配置生成完整且已获批准的旁白。
- 以一致的方式标准化各分段,对最终音频运行 ASR,并修正实质性遗漏、增补、数字、姓名或重复语音。
- 记录实际时长。这些时长现在定义了时间线。
2. 规划并生成演示者
选择由演示者主导、屏幕演示或混合讲解的方案。仅在辅助媒体能够证明或阐明口述内容时使用。
如果服务提供商限制的请求时长或参考音频时长短于旁白时长,请根据已锁定音频的 ASR 时间点规划拆分,而不要凭猜测:
python3 "$SKILL_DIR/scripts/plan_segments.py" \
--timings ~/Videos/my-presenter-video/qa/asr/sentences.json \
--audio ~/Videos/my-presenter-video/assets/audio/final/narration.wav \
--cap 15 --whole-seconds \
--output ~/Videos/my-presenter-video/qa/requests/segment-plan.json
将规划文件路径保存到 plan.segment_plan。所有片段均使用相同的图像、种子、构图、光线和动作约束生成。
先生成一个简短、低成本的试验片段,再进行完整生成。优先确保主轨的身份一致性和口型时间同步。对动作感较强的开场或结尾,使用一个可控手势。如果身体动作符合要求,但口型时间同步失败,请保留动作素材,并使用已锁定音频进行专门的口型同步修复。
归档提示词、参数、服务提供商/模型/版本、区域、任务 ID、请求时长和验收备注。
3. 编辑视频
阅读 editing.md。
根据已锁定音频构建确定性时间线。确保创作的开始时间、时长和素材偏移量彼此独立。仅在音频和选定媒体最终确定后添加字幕和关键词标注。
使用 HyperFrames 时,加载当前的 hyperframes、general-video 和相关领域说明。运行项目检查,检查转场和强调画面,打开 Studio 预览,并在最终视觉审核通过后再进行渲染。
4. 验证并交付
阅读 qa-recovery.md。
以交付质量渲染,完整观看视频,然后完成最终处理:
bash "$SKILL_DIR/scripts/finalize_delivery.sh" \
~/Videos/my-presenter-video/renders/rendered.mp4 \
~/Videos/my-presenter-video/outputs \
my-video
最终处理器会保留输入宽高比,执行两遍节目响度标准化,创建母版和分享编码,完整解码这些编码,测量交付响度,统计黑屏和画面冻结事件,并生成九帧联系表。它会在临时目录中完成所有操作,只有全部检查通过后才会发布任何文件。目标响度默认为 -16 LUFS;如果目标平台要求其他值,请设置 PROGRAM_LUFS(例如 PROGRAM_LUFS=-14)。
检查联系表,根据有意静帧判断是否为画面冻结事件,在 job.json 中记录输出和交付报告,并运行 check_state.py --write 进入 verified 状态。
输入内容最少时的默认行为
- 根据请求推断语言。
- 使用 9:16、1080×1920、30fps,除非目标平台建议采用其他格式。
- 保留所提供脚本的自然时长;如果用户只提供主题,则以 45–75 秒为目标。
- 如果没有获准使用的语音样本,则使用合适的库存语音。
- 采用由演示者主导的布局,设计一个吸引人的开场、2–4 个有用要点,以及简洁的结尾。
- 除非用户提出要求或有充分理由,否则不使用音乐和推广性行动号召。
- 保持视觉风格可信、现代、易读,并符合目标平台的安全要求。
必需的任务文件
job.json
docs/{SCRIPT,BEAT_SHEET,TIMELINE,STORYBOARD}.md
assets/source/
assets/audio/{reference,raw,final}/
assets/video/{candidates,selected,render}/
assets/captions/
qa/{requests,asr,contacts,reports}/
renders/
outputs/
参考资料指引
- 对于接收需求、内容、语音、工具选择、演示者提示词、付费生成或服务提供商变更,请阅读 generation.md。
- 对于时间线构建、屏幕演示布局、开场、结尾、字幕、关键词标注、预览和导出,请阅读 editing.md。
- 在验收媒体或交付内容之前,以及口型同步、身份一致性、手部、曝光、冻结画面、字幕、音频或远程任务出现问题时,请阅读 qa-recovery.md。