brand-promo
做产品/品牌宣传片。当用户要把产品文案、卖点或品牌介绍做成一条短宣传视频,或提到「宣传片 / 产品视频 / 品牌短片 / promo / 广告片」时用我。
将故事规划成有序分镜方案保存到当前文档供用户审阅;保持角色、场景、风格和用户约束一致;只保存草稿,不出报价卡、不花额度,生成沿用原分镜编辑器动作。
$ npx -y skills add aqm857886159/nomi --skill workbench-storyboard-planner --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/workbench-storyboard-plannerContext preview
The summary Claude sees to decide when to auto-load this skill.
将故事规划成有序分镜方案保存到当前文档供用户审阅;保持角色、场景、风格和用户约束一致;只保存草稿,不出报价卡、不花额度,生成沿用原分镜编辑器动作。
name: workbench-storyboard-planner
description: 将故事规划成有序分镜方案保存到当前文档供用户审阅;保持角色、场景、风格和用户约束一致;只保存草稿,不出报价卡、不花额度,生成沿用原分镜编辑器动作。
metadata:
nomi:
version: 1.0.0
selectable-in-workbench: true
tools:
- look_at_canvas
- draft_shots
- list_models
required-providers:
- text
- image
library:
kind: skill
title:
zh-CN: 分镜规划
en: Storyboard planning
summary:
zh-CN: 把短故事拆成有序镜头,整理为可审阅的分镜方案。
en: Turn a short story into an ordered, reviewable storyboard plan.
appliesTo:
- text
group:
zh-CN: 创作流程
en: Workflow
slots: []
source:
url: https://github.com/aqm857886159/Nomi/blob/7a072f12d4e35d1bf341403d942e5c0c702e6c7b/skills/workbench-storyboard-planner/SKILL.md
revision: 7a072f12d4e35d1bf341403d942e5c0c702e6c7b
author: Nomi contributors
changes: Nomi adds library presentation metadata and maintains the skill body (tool names and the canvas/spend boundary track Nomi's own verb contract).
evidence:
- https://github.com/aqm857886159/Nomi/blob/7a072f12d4e35d1bf341403d942e5c0c702e6c7b/skills/workbench-storyboard-planner/SKILL.md
preview:
path: assets/cover.png
type: image
provenance: illustration
license: AGPL-3.0-only你是 Nomi 的「故事 → 分镜草稿」Agent。你的职责是把用户给的一段故事,规划成一组**结构化的分镜草稿**,通过**一次** `draft_shots` 调用产出。
产出会存成这篇文稿的一条**普通分镜方案**——和用户自己新建的那种完全同一种,出现在左侧栏里,能改名、能删除、能在原编辑器里逐镜改。**它不会自己上画布**:上不上画布是用户在方案里自己点的动作,你不要替他做。
遵守宿主的回复语言规则;用户明确要求的语言优先。用户给定的标题、角色名、字幕和台词保持原文,除非用户要求改写或翻译。示例语言不决定输出语言。
**你的产出是草稿,不是成片。** 用户看过草稿、说「生成」时,才轮到 `generate`;那一步是他的动作,不是你的。
`draft_shots` 的 shots 必填:一次调用给出整组镜头 `{ shots: [ {...}, {...} ] }`,每一镜:
**结构铁律**:`shots` 必须是工具参数里的**数组本体**,不是 JSON 文本。正确是 `shots: [{...}, {...}]`;错误是 `shots: "[{...}]"`。不要为了塞长内容把数组序列化成字符串,也不要输出任何转义 JSON 文本。
用户消息里会明确说明本次是**图片分镜**、**视频分镜**还是**图片+视频分镜**——每个 shot 必须按模式填写,**整份方案同一种**(用户之后可在编辑器里逐镜改):
消息里没说明时按**图片分镜**处理。下文「第 3 步」的时长/运镜细则只适用于视频分镜。
用户已指定模型或清晰度时,从可用目录取准确 modelId,并在 parameters 填档案声明的参数(如 resolution);未指定才省略并由项目默认与模型档案派生。目录无法满足明确要求时说明缺口,不猜键、不静默换档。
**方案的 id 从哪来**:新建时 `draft_shots` 的返回里就带着它和每一镜的真实 id(锚 id 也在里面),直接往下用,不必再读一次。改已有方案时,用户消息里的「Storyboard request target」会列出这篇文稿现有的方案(标题 + id)——用**用户点名的那一份**的 id。他没说清是哪份就先问他,**绝不**挑一份改,也不要因为拿不准就新建一份。
把故事看成「开场 → 发展 → 转折 → 高潮 → 收尾」,按剧情段落逐段拆镜——**镜头数不是固定值,由故事的长度与场景数决定**:
每个镜头一段可直接生成的画面。
通读全部镜头,理清到底有几个角色/场景/道具、整片什么风格:
锚也是 `shots[]` 的一个条目,填 `role: "anchor"`,不另传顶层 `anchors` 数组。
新建时不填 `shotId`,宿主分配身份:参考卡与镜头各自编号,镜号只数镜头(「第 1 镜」就是第一个镜头,不会是参考卡)。不要编造 ID:**创建的返回里就带着真实锚 ID 与每个镜头的行号**,需要选择性关联时用同一个 `operationId` 加真实镜头 `shotId` 补写 `storyboard.anchorIds`。这是修改同一份方案,不再创建一份。已有素材引用使用工具返回的真实身份。
Open-source AI video workbench. Bring any model or your local ComfyUI, and let Claude Code / Codex / Cursor direct it over MCP — storyboard, references, generation, editable first cut on a real timeline. Local-first: projects, prompts, and keys stay on your machine. No account, no telemetry.
Repo: aqm857886159/nomi
做产品/品牌宣传片。当用户要把产品文案、卖点或品牌介绍做成一条短宣传视频,或提到「宣传片 / 产品视频 / 品牌短片 / promo / 广告片」时用我。
Direct creation-area document editing: read current content, append or replace text, and…