
这次开源的不是又一堆“包装过的提示词”而是把 Agent 导演系统里那套真正决定画面质感的“电影感镜头 skill”单独拆了出来。之前用完整导演系统跑整个流程时分镜镜头模块被夹在工作流中间想单独复用还要把整套系统拉下来很不方便。这次拆开之后就清爽了你只需要一个支持 Agent Skills 的客户端或者 SDK把 skill 目录放进去一句话故事进去出来的就是带景别、运镜、焦段、光线、节奏和情绪走向的镜头方案。先说清楚这件事的门槛它不需要本地 GPU、不需要为 skill 单独配显存、也不需要下载什么模型权重。它的运行成本基本等于你调用一回宿主大模型 API 的 token 消耗。如果你已经在用 Claude 这类支持 Agent Skills 的环境甚至不用写代码就能用起来。如果你想把它接进自己的自动化流程也有成熟做法通过宿主 Agent SDK 编程调用把它做成批量分镜流水线。这篇文章会按“是什么 → 怎么部署 → 测哪些功能 → 怎么做批量 → 怎么排错”的顺序来写。如果你是 AI 视频创作者、短视频策划、分镜师或者正在研究怎么给 Agent 开发可复用的 skill这篇文章可以直接收藏。1. 核心能力速览能力项说明项目类型开源 Agent Skill 技能包基于 SKILL.md 的通用 skill 机制上游关联Agent 导演系统的独立下游模块可单独使用也可返回导演系统集成核心功能将一句故事/文案拆解为电影感分镜方案输出景别、运镜、焦段、光线、节奏、情绪等运行方式通过支持 Agent Skills 的客户端或 SDK 加载以对话或编程方式触发硬件门槛本地无需 GPU/显存不涉及模型推理权重模型依赖依赖宿主 LLM API 或兼容 Agent 环境skkil 本身不是模型是否支持 API不直接提供 HTTP 服务可由宿主 Agent SDK 以编程方式调用是否支持批量任务支持通过脚本循环调用宿主 Agent 的 skill 触发入口输出形式结构化 Markdown 分镜表、JSON 分镜方案、表格视图适合人群AI 视频创作者、分镜策划、Agent 开发者、提示词工程实践者从材料看这个 skill 与当前热门的 Agent skill 生态一致属于可复用的结构化技能包。它解决的不是“模型不够聪明”而是“大多数人不知道一部片子该怎么拆镜头”的问题。如果你生成的视频总是“平铺直叙”问题往往不在视频模型而在你喂给模型的分镜和镜头描述太单薄。2. 适用场景与使用边界2.1 适合谁用第一类AI 视频创作者。用 Runway、可灵、即梦、Sora 这类工具生成视频前先让 skill 输出完整分镜表再按镜号逐条生成能明显减少“抽卡式”生成带来的画面不稳定。第二类真人短片或短视频前期策划。写脚本时只靠文字描述很难想象画面skill 给出的景别、运镜和镜头参数可以当分镜草稿交给摄影师或后期时效率更高。第三类Agent 开发者。如果你在开发视频创作类 Agent这个 skill 是一个很好的模块化范例怎么把专业知识电影镜头语言变成可复用的技能包怎么用 SKILL.md 组织规则和示例怎么让下游脚本稳定消费结构化输出。2.2 能解决什么问题分镜思路混乱从“这个场景很感人”变成“近景、手持跟拍、35mm、暖调轮廓光、4 秒后切特写”。AI 视频画面平淡给视频模型提供更具体的镜头指令减少反复抽卡。批量策划效率低写 10 条短视频文案之后可以用脚本批量生成 10 套分镜方案统一交给后续生成流程。2.3 不适合什么场景这个 skill 不负责生成视频画面也不是一个完整导演系统。它只是“镜头方案设计”这一段。如果你期望它直接把文字变成视频那方向错了如果你的场景需要完整的人物、对白、剧本节奏管理还是要回到 Agent 导演系统里使用。另外它不能离线推理。skill 本身只是一堆 Markdown 规则和脚本模板真正干活的是宿主大模型。如果你所在环境无法访问支持 Agent Skills 的模型服务这个 skill 就跑不起来。2.4 合规边界使用这类镜头设计能力时要特别注意如果生成的方案之后用于真实拍摄涉及真实人物肖像、声音、他人创作场景或版权素材必须提前获得授权。如果用于 AIGC 视频生成还应遵守对应视频生成平台关于合成内容标识和内容版权的规范。开源 skill 的许可证允许你复制和修改不等于场景中的内容素材也天然合规。3. 环境准备与前置条件这个 skill 对操作系统没有硬性要求Windows、macOS、Linux 都可以。关键不是系统而是你有没有一个能加载 Agent Skills 的宿主环境。3.1 宿主环境选择目前有两种主流方式客户端方式使用支持 Agent Skills 的桌面客户端比如 Claude Desktop。把 skill 目录放进客户端指定的 skills 目录即可之后对话中触发。SDK/API 方式在 Python 或 Node.js 项目中引入 Agent SDK通过代码指定启用哪些 skill然后发送任务指令。如果你做一次性测试客户端方式最简单如果你要接自动化或批量任务直接走 SDK 方式。3.2 前置清单检查项说明操作系统Windows / macOS / Linux 均可Agent 客户端或 SDK选用支持 Agent Skills 的版本API Key 或其他认证宿主模型服务需要有效鉴权网络连接调用宿主 LLM API 需要稳定的外网访问根据你的实际环境配置磁盘空间skill 文件以 KB/MB 计基本可忽略本地 GPU/显存不需要此项不适用这里有一个常见误区有人以为开源了“电影感 skill”就意味着本地能跑一个不需要联网的电影模型。不是的。它是一套结构化规则 示例 输出模板推理能力来自你所用的宿主模型。选宿主模型时建议优先选指令遵循能力强的模型否则 skill 里的规则会被“弱化”输出分镜的质量会打折。4. 安装部署与启动方式4.1 获取项目文件先到开源仓库获取电影感镜头 skill 的源码。可以用 git 克隆也可以直接下载发行版压缩包。这里不粘贴具体仓库地址避免链接失效你可以在 GitHub 上搜索项目标题或者作者主页找到它。# 通用示例请将 仓库地址 替换为实际地址 git clone 仓库地址 movie-skill cd movie-skill如果下载的是压缩包解压后应该能看到完整的 skill 目录结构。4.2 目录结构说明典型的 Agent Skill 目录结构如下不同的 skill 会包含不同的资源文件但核心一定是SKILL.mdmovie-skill/ ├── SKILL.md ├── assets/ │ ├── shot_size_rules.md │ ├── camera_movement_rules.md │ ├── lighting_rules.md │ └── lens_parameter_rules.md ├── templates/ │ ├── scene_breakdown.md │ └── storyboard_table.md └── scripts/ └── export_storyboard.py以上结构用于说明常见 Skill 组织方式具体文件以你拉取的仓库为准。其中SKILL.md是技能的入口描述文件宿主 Agent 会优先解析它来理解这个技能什么时候该被触发、能做什么。4.3 安装到客户端以桌面客户端方式为例。将整个movie-skill目录复制到客户端的 skills 目录下。不同客户端路径略有不同常见路径如下# macOS / Linux 示例 mkdir -p ~/.claude/skills cp -r movie-skill ~/.claude/skills/cine-lens-skill # Windows 示例PowerShell New-Item -ItemType Directory -Force -Path $env:USERPROFILE\.claude\skills Copy-Item -Recurse .\movie-skill $env:USERPROFILE\.claude\skills\cine-lens-skill复制完成后重启客户端让 skill 列表重新加载。之后新建对话输入类似“用电影感镜头 skill 帮我把这个故事拆成分镜”这样的指令客户端就会在内部启用这个技能。4.4 安装到 SDK 项目如果走代码集成直接在你的项目里保留 skill 目录然后在 SDK 配置中注册这个技能即可。下面是通用伪代码具体方法名以你使用的 SDK 文档为准from agent_sdk import AgentClient # 根据实际SDK调整 client AgentClient( api_keyyour_api_key, project_dir./my_project, skills_dir[./movie-skill], )注册成功后后续发送给 Agent 的请求就会带有这个技能的能力。这里的AgentClient是通用示例不是某个具体 SDK 的真实类名。请务必替换成你使用的 Agent SDK 文档中对应的客户端名称。4.5 验证安装是否成功最简单的验证方式给一段常见故事让它输出分镜表。例如深夜便利店门口主角买完咖啡后转身在路灯下看见一个多年未见的老朋友。如果返回内容包含镜号、景别、运镜、焦段、光线、情绪等结构化字段说明 skill 已成功加载。如果回答像是普通对话而没有分镜结构优先检查 skill 目录是否被识别、SKILL.md中的name和description是否规范。5. 功能测试与效果验证5.1 基础分镜生成测试测试目的确认 skill 能正确把一句场景描述扩写成完整的电影感分镜方案。操作步骤输入一段 1 到 2 句话的场景描述。要求输出分镜表。检查输出是否包含以下字段镜号、景别、运镜、焦段、光线、画面内容、参考情绪或节奏。输入示例雨夜的天桥下一个穿红裙子的女孩蹲在路边逗流浪猫。预期输出结构示例镜号景别运镜焦段光线画面内容情绪/节奏1全景固定35mm霓虹灯光天桥下雨水反光女孩背对镜头蹲着疏离、安静2中近景缓慢前推50mm路灯暖光女孩伸手摸猫头表情柔和温暖、缓慢3特写手持微晃85mm暗部冷调流浪猫警觉地抬头看镜头方向紧张感上升判断标准分镜表结构完整镜号连续。每个镜头的景别、运镜、光线和情绪之间有逻辑关系。镜头数量合理一般短场景 3 到 6 个镜头不会出现一个镜头讲完整场的“流水账”。常见失败原因输出仍然是普通文案没有分镜结构可能是触发器未生效检查描述中是否包含技能名。分镜之间动作不连续宿主模型长上下文能力不足可减少一次输入的文本量让模型逐镜扩写。5.2 风格化镜头定制测试测试目的验证 skill 能否根据导演风格或视觉参考调整镜头方案。操作步骤输入同一个故事但在指令中增加风格约束例如“伪纪录片手持风格”“赛博朋克夜景”“王家卫式霓虹情绪”。对比两次输出的镜头参数差异。输入示例用伪纪录片手持风格把我刚才那个透明玻璃幕墙办公室里的会议场景拆成分镜。预期结果景别切换更随意出现大量中近景和面部特写。运镜以手持跟拍、轻晃为主焦段可能集中在 30mm 到 50mm。光线描述更倾向于自然窗光、荧光灯混合色温。判断标准不同风格约束下输出的运镜和光线规则出现了可辨识差异。如果两次输出几乎一样要么是 skill 的风格模板覆盖不足要么是宿主模型没有遵循额外指令。5.3 多轮细化测试测试目的验证 skill 是否支持在已有分镜基础上继续细化而不是每次重新生成。操作步骤先生成一版 3 镜头的分镜表。继续提出细化要求例如“把第 2 镜改为过肩镜头并加入前景遮挡”。观察输出是否只针对第 2 镜修改其他镜头保持不变。判断标准输出应保留第 1、3 镜头内容只调整第 2 镜。如果宿主模型把整份分镜推倒重来说明会话记忆或指令遵循能力不足可以改用更明确的“仅修改第 X 镜”表述。5.4 与 Agent 导演系统协同测试这个 skill 被拆出来的初衷就是为了在导演系统之外独立复用但同样可以“返回”系统内使用。测试时可以在完整导演系统环境中调用这个 skill也可以单独调试后把输出结果喂给下游视频生成模块。建议测试链路用电影感镜头 skill 生成分镜表。将分镜表拆成单镜头描述。把每个镜头描述交给图生视频或文生视频模型。对比“直接给一句整场景提示词”和“按分镜逐镜生成”的画面对应关系。从实际生产经验看后者通常更容易得到稳定画面因为每个镜头的描述更具体、更一致。但这个结论也会受视频模型能力影响需要按你使用的模型来验证。5.5 批量生成测试测试目的确认 skill 能批量处理多个故事输出统一结构的分镜。操作步骤准备 5 到 10 条短故事。编写脚本循环调用宿主 Agent 并携带 skill 指令。设置统一输出格式如 JSON 或 Markdown 表格。统计成功率和耗时。判断标准所有输出都应符合统一 schema。单条失败不影响整个队列继续运行。失败任务应有日志记录方便重试。6. 接口 API 与批量任务6.1 skill 本身不提供 HTTP 接口一个常见的疑问是“这个 skill 支持 API 吗”。准确说法是skill 不会独立起一个 Web 服务也不会有类似/generate这样的专用接口。它的接口能力来自宿主 Agent 环境。你通过宿主 Agent SDK 发送一个包含“调用电影感镜头 skill”意图的请求宿主会在内部完成技能选择和执行最后把结果返回给你。所以在本文语境下“接口能力”指的是你能以编程方式把这个 skill 接入自己的项目。6.2 通用 SDK 调用示例下面是一个 Python 通用模板逻辑上是“读取一个故事列表逐个调用技能生成分镜并将结果保存为 Markdown 文件”。代码中所有类和函数都是占位示例需替换为你实际使用的 SDK。import os import json import time from pathlib import Path from agent_sdk import AgentClient # 替换为你使用的SDK客户端 client AgentClient( api_keyos.getenv(AGENT_API_KEY), skills_dir[./movie-skill], ) stories [ 雨夜天桥下红裙子女孩蹲在路边逗流浪猫。, 旧工厂里一名少年推开铁门看见废弃舞台上的钢琴。, 海边黄昏两个刚刚吵完架的恋人背对背坐在沙滩上。, ] output_dir Path(./storyboards) output_dir.mkdir(exist_okTrue) for idx, story in enumerate(stories): prompt f使用电影感镜头 skill把下面这句话拆成分镜表{story} try: result client.chat( messageprompt, temperature0.7, ) text result.text output_file output_dir / fstory_{idx:03d}.md output_file.write_text(text, encodingutf-8) print(f[OK] {idx} 已完成输出路径 {output_file}) except Exception as e: print(f[FAIL] {idx} 失败{e}) print(批量任务结束)这段代码的要点skills_dir指向电影感镜头 skill 所在目录。每次循环发送的任务都包含技能触发词和具体故事。成功结果写入以序号命名的 Markdown 文件。失败时打印错误信息方便后续重试。6.3 批量任务工程化建议如果只是 10 条以内的小批量任务上面的同步循环就够用。但如果要做 100 条以上的批量分镜生成建议加上以下机制任务队列用一个 JSON 文件记录待处理列表和已处理列表避免程序中断后从头再来。限速重试多数 Agent API 有频率限制连续请求过快会触发限流。遇到限流错误时退避重试。结果校验保存前检查返回文本是否包含“镜号”或“景别”等关键词防止生成空内容覆盖旧文件。结构化输出如果最终要接入视频生成系统建议让 skill 输出 JSON schema方便程序解析。JSON 输出示例{ scene: 雨夜天桥下, shots: [ { shot_number: 1, shot_size: 全景, movement: 固定, lens: 35mm, lighting: 霓虹灯光, content: 天桥下雨水反光女孩背对镜头蹲着 } ] }实际是否支持 JSON 输出取决于 skill 内的模板设计。如果仓库里自带 JSON 模板优先按它的字段定义对接如果没有可以在调用时在提示词里追加一句“输出为 JSON 格式”。7. 资源占用与性能观察这个 skill 的运行特点决定了它的资源占用和常见的 AI 视频类项目完全不同。7.1 本地资源占用本地几乎没有可感知的磁盘压力和内存压力。整个 skill 通常是几百 KB 到几 MB 的 Markdown、模板和脚本文件。它不加载模型不占用显存。所以不存在“4G 显存能不能跑”这类问题。真正消耗资源的是宿主 LLM API。每次生成一段 3 到 6 镜头的分镜表token 消耗主要取决于两段输入的规则描述skill 加载后这部分会占用上下文和输出的分镜表长度。7.2 性能观察要点建议重点观察以下指标单次任务耗时从发送到返回通常受宿主模型响应速度影响。输出 token 数可以通过宿主 API 的用量字段查看。如果输出分镜不完整可能是输出 token 上限被截断。上下文消耗如果长时间在一个会话里做多轮细化上下文会越占越多。建议每完成一个场景就开新会话。7.3 如何降低运行成本批量任务中避免在每轮请求里重复粘贴整个 SKILL.md 内容让宿主机制自动加载技能否则 token 消耗会直接翻倍。长故事先压缩为三五句核心描述再让 skill 做镜头扩写而不是一次性把大段剧本塞进去。不要求输出的分镜表过长短场景 3 到 5 个镜头足够测试。真正的拍摄方案可以后期人工细化。8. 常见问题与排查方法问题现象可能原因排查方式解决方案客户端对话中没有触发技能skill 目录未被识别触发器描述不匹配检查 skills 目录路径查看客户端日志中是否加载该 skill将 skill 放入正确目录并重启指令中显式调用技能名提示技能不存在目录名或 SKILL.md 中 name 字段不规范检查 SKILL.md 的 name 字段确保 name 使用短横线分隔且唯一输出还是普通对话文本宿主模型没理解指令或 skill 未被有效启用尝试用更明确的触发语在提示词中写“读取电影感镜头 skill 后输出”分镜表字段缺失技能模板覆盖不全查看 SKILL.md 里的输出模板在提示词中追加“必须包含景别、运镜、焦段、光线”同一条文案两次结果差异大temperature 设置过高查看请求中的 temperature 参数降到 0.4 到 0.7 再测试批量任务中途卡住宿主 API 限流或网络波动查看错误日志与响应码加入指数退避重试拆分批次API Key 报错环境变量未配置打印实际读取的 Key重新配置环境变量并重启进程生成的分镜过于套路化skill 语法过于机械化宿主模型能力不够对比多个模型效果切换更复杂的模型或手动补充风格参考输出内容被截断输出 token 上限设置过低查看返回日志中的 stop_reason提高 max_output_tokens 或要求精简分段输出以上问题清单覆盖了从安装到批量调用最常见的几类情况。实际使用时优先看日志优先确认“技能是否真的被加载”因为大多数问题都出在这一步。9. 最佳实践与使用建议9.1 先小参数验证再批量第一次拿到 skill不要立刻投喂几十条文案。先用 3 条短故事输出 3 份分镜表检查结构是否稳定、是否贴合电影感需求。稳定之后再扩大批量。9.2 把 SKILL.md 当作版本管理资产Skill 的核心就是提示词和规则文本这部分属于可版本控制的资产。建议把它放进 Git 仓库每次调整镜头规则或模板都记录 diff方便对比哪个版本的分镜效果更好。9.3 分目录管理输入与输出批量项目建议使用这种目录结构project/ ├── inputs/ │ ├── batch_01.json │ └── batch_02.json ├── outputs/ │ ├── storyboards/ │ └── logs/ └── config.yaml故事输入放在inputs分镜输出放在outputs/storyboards日志单独放logs。避免把中间产物和最终产物混在一起。9.4 批量任务必须加日志批量脚本里加一行print不够建议把每一条任务的输入摘要、耗时、结果状态、返回报文都写入日志文件。出问题时能快速定位是第几条、什么原因。示例日志字段{ task_id: story_007, status: success, latency_ms: 8234, output_tokens: 512, error: null }9.5 接口服务隔离与安全如果你通过 Agent SDK 对外提供分镜生成服务不要让接口无限制暴露在公网。建议加上简单的 IP 白名单或 Token 鉴权防止接口被刷产生不可控的 API 费用。9.6 素材授权合规这条必须单独强调不要把真实人物照片、他人视频画面、未授权商业素材混进分镜和后续 AIGC 生成流程。涉及肖像、品牌、音乐、场景版权时先拿到授权。开源代码可以复用但内容素材的合规边界和开源协议是两回事。9.7 后续扩展方向如果你用着顺手可以继续往里加内容扩充风格镜头库例如“讲台词时的正反打惯例”“动作戏的快速切镜规则”。加入美术参考图目录让 skill 在生成分镜时附带色彩参考倾向。设计 JSON Schema 输出直接对接 Blender 或虚幻引擎的分镜工具。把批量脚本改成异步队列接入 RabbitMQ 或 Redis Queue跑更大规模的前置分镜流水线。10. 总结与下一步这个项目最值得尝试的点是它把“电影感”从抽象感觉变成了结构化输出。你不需要先成为摄影指导也能在几秒钟内拿到一套有景别、运镜、焦段、光线逻辑的分镜方案。它的门槛远比一个视频生成模型低因为真正的大头计算都在宿主 API 里本地只负责组织和传递规则。拿到项目后第一步先跑通基础分镜生成。找一句真实想做的故事按本文第 5 章的测试方法验证输出质量。这一步跑通了你再看批量任务和 API 集成。最容易踩的坑有三个一是技能目录路径放错导致客户端不识别二是宿主模型太弱导致 skill 规则被“无视”三是批量任务没有加日志和重试中途断了只能从头开始。这三类问题在本文第 8 章都有对应排查方式。下一步有两个方向可以选择如果你是内容创作者先把 skill 接入你的视频生成工作流对比有分镜和无分镜的画面对应效果如果你是 Agent 开发者可以把这套 skill 作为范例研究怎么把你在某个领域的专业经验同样封装成可复用、可批量、可接口调用的技能包。