con un clic
shotfun-creator
面向 AI 内容生产场景的 skill 集合,覆盖图片、视频、声音、数字人等内容生产能力。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
面向 AI 内容生产场景的 skill 集合,覆盖图片、视频、声音、数字人等内容生产能力。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
| name | shotfun-creator |
| description | 面向 AI 内容生产场景的 skill 集合,覆盖图片、视频、声音、数字人等内容生产能力。 |
shotfun-creator 面向所有 AI 内容生产场景,是覆盖图片、视频、声音、数字人等能力的 skill 集合。它负责理解用户目标、自主选择合适的可用技能,并完成内容生产。用户只需要输入内容目标,它会帮助拆解任务、规划流程、完成工作任务,并可把已实现的工作流程沉淀为用户自己的 skill。
task-skills/;最后才下钻到 scripts/cli/*.js 或 scripts/services/*.js 原子能力。references/calling-conventions.md 和 references/output-conventions.md;缺少 SHOTFUN_API_KEY 时只做 dry-run 或引导配置,不提交真实任务。references/pricing.md,按其中的价格表向用户展示相关条目;不要凭记忆报价。references/model-catalog.md 只作为模型选择目录,用户展示口径以 references/pricing.md 为准。scripts/ 只放跨 skill 复用的稳定底层能力。outputDir、manifest 和关键模型参数;不要粘贴原始 API 响应、内部 task 对象或大段 JSON。新建 workflow/task skill 时,可在该 skill 目录下使用 scripts/、templates/、examples/、references/ 等子目录承载专用内容。需要公开示例时,只使用无敏感信息的占位 URL 和最小示例数据。
调用 ShotFun 之前:
references/calling-conventions.md(环境变量、输出目录、安全约束)和 references/output-conventions.md。<cwd>/.env.local 或运行环境中存在 SHOTFUN_API_KEY;如果缺失,先引导用户到 shotfun.cn/agent 注册/登录 ShotFun 账户并获取 API Key,再把 key 写入当前项目根目录的 <cwd>/.env.local。对于当前仓库使用场景,默认就是 shotfun-creator/.env.local。不要继续提交真实任务;可用 --dry-run 帮用户预览执行计划。--dry-run 预演。--wait。--confirm,不要在 dry-run 规划阶段使用。--project-code 传用户填写的 ShotFun 项目名称,未传时默认为 default;--project-name 只控制本地归档目录,未传时也使用 default。凭证优先来自本地 <cwd>/.env.local,其次才是运行时环境变量。不要把 API Key、token、私有 URL 或生成资产硬编码到 skill 文件或已跟踪文件中。
当任务需要调用 ShotFun OpenAPI,但环境中没有 SHOTFUN_API_KEY 时,停止真实执行并用简短步骤引导用户:
.env.local,格式为 SHOTFUN_API_KEY=<用户的 key>。在本仓库场景下,默认路径是 shotfun-creator/.env.local。scripts/core/env-loader.js 自动从 .env.local 读取。推荐提示语:
当前本地缺少 SHOTFUN_API_KEY,所以我还不能提交真实生成任务。你可以到 https://shotfun.cn/agent 注册/登录 ShotFun 账户并获取 API Key。拿到后我会把它写入当前工作目录的 .env.local,后续 ShotFun 任务会自动从这个文件读取。配置好后回复“继续”,我会接着执行。
如果用户明确要求你代写本地配置,直接把 key 写入当前项目根目录的 <cwd>/.env.local;在 shotfun-creator 仓库里就是 shotfun-creator/.env.local。不要在回复中复述密钥。.env.local 已被 .gitignore 的 .env.* 规则忽略。
当用户输入不够明确,且会影响成本、模型选择、产物质量或是否能执行时,先引导用户确认需求,不要直接猜测并提交真实任务。
必须澄清的情况:
澄清方式:
按以下顺序选择执行路径:
workflow-skills/README.md,先读取匹配的 workflow skill。task-skills/README.md 并读取匹配的 task skill。references/*.md 并调用 scripts/cli/*.js。工作流 skill 可以调用 task skill;task skill 可以调用 atomic service。不要让 atomic service 反向依赖 task/workflow skill。
| 用户意图 | 优先读取 | 推荐命令 |
|---|---|---|
| 默认口播内容生产、口播形象图、口播视频、封面和可复用口播工作流 | workflow-skills/koubo.md | 先用 gpt-image2(即 gpt-image-2)生成/确认口播形象图,再按工作流规划脚本、声音、视频和封面 |
| 公众号文章一体化写作、封面和发布到草稿箱 | task-skills/wechat-write-publish-allinone.md | 先生成标题/正文/封面,再按发布条件推送到草稿箱 |
| 公众号封面图 | task-skills/wechat-cover-image.md | node scripts/cli/image-generate.js ... |
| 小红书/RedNote 图片卡片或卡片系列 | task-skills/xhs-images-gen.md | node scripts/cli/image-generate.js --model gpt-image2 ... |
| 任意内容生成图片、促销图、培训说明图 | task-skills/universal-content-to-image.md | 先设计 visual brief,再 node scripts/cli/image-generate.js --model gpt-image2 ... |
| 参考视频分析、抽帧和风格拆解 | task-skills/reference-video-analysis.md | ffprobe + ffmpeg 抽帧/contact sheet + 分析报告 |
| 口播场景图生成 | task-skills/talking-head-scene-image.md | node scripts/cli/image-generate.js ... |
| 真人口播风格视频 / 根据图片和口播稿生成完整口播视频 | task-skills/scripted-talking-video.md | 短稿走 single-shot;长稿或需穿插内容镜头时先做分镜和模型确认 |
| 创建、检查或渲染 HyperFrames 项目 | task-skills/hyperframes-project.md | node scripts/cli/run-workflow.js --workflow news-broadcast-video ... 或 npx --yes hyperframes@0.6.30 render ... |
| 给指定 skill 生成 Web 工作台、查看生产过程和产物 | task-skills/workbench-web-skill.md | HTML5 + Tailwind CSS 4 + Vite 静态工作台 |
| 一句话同时生图和生视频 | references/model-catalog.md#单镜头工作流 | node scripts/cli/one-shot.js ... |
| 生成或编辑图片 | references/model-catalog.md#图片生成 | node scripts/cli/image-generate.js ... |
| 将图片转成视频 | references/model-catalog.md#视频生成图生视频 | node scripts/cli/video-generate.js ... |
| 生成 TTS 或试听音色 | references/model-catalog.md#音频--tts | node scripts/cli/audio-generate.js ... |
| 视频超分或去字幕 | references/model-catalog.md#视频处理 | node scripts/cli/video-process.js ... |
| 创建 ShotFun 素材组或素材 | references/model-catalog.md#项目素材 | node scripts/cli/project-assets.js ... |
| 生成一个短镜头视频 | references/model-catalog.md#单镜头工作流 | node scripts/cli/one-shot.js ... |
| 生成角色素材包 | 暂未实现 | 说明限制;手动组合图片/文本服务 |
| 生成多镜头场景 | 暂未实现 | 说明限制;重复使用 single-shot,或等待工作流支持 |
当用户只说“用 News Broadcast Video Workflow 做一个播报视频”或类似请求,但没有在本轮明确给出主题、素材、JSON 路径或“复用某个历史 run”的指令时:
shotfun-output/、manual-inputs/ 或历史 run 里自动挑一个 JSON。node scripts/cli/run-workflow.js --workflow news-broadcast-video --project-name "<name>" 生成 needs-broadcast-input 请求包,但不要把历史产物当作正式输入。--input-file 指向 shotfun-output/ 下的 JSON,并且必须同时传 --allow-historical-input。只有当注册表中存在专用服务尚未支持的任务时,才把 scripts/cli/run-template.js 作为低层逃生口使用。
调用任何 ShotFun service / CLI 之前,AI 必须按本协议选定 --model / --kind / --operation,不要让用户自己挑模型,也不要在 task-skills 文档里硬编码。
每次调用前必读 references/model-catalog.md。该文件由 scripts/core/dump-model-catalog.js 从 scripts/core/task-registry.js 自动生成,包含所有可用 model 的 key / priceTier / 推荐分 / 适用场景 / 能力约束 / 亮点 / 取舍。registry 更新后必须重新运行脚本同步。用户询问价格或成本时,另读 references/pricing.md,并以该文件作为展示口径。
不要凭记忆调用未在 catalog 中列出的 model key。
--model X 或写了 model key,直接采用,不再决策。anchorPhoto / Asset://... → 必须 supports.referenceImage = true。supports.assetMode = true(目前仅 sd-reference)。defaults.resolution 匹配的或显式 1080p 的 model。ref2v-grok-cheap)。selection.scenarios 与用户描述做语义匹配,命中场景的优先。priceTier ∈ {low, standard} 中推荐分最高的。priceTier = standard 推荐分最高者优先;同分按 credits 升序。selection.tags 中 default 标签;再看 recommendationScore;再看 credits 升序。默认静默推进(不打断对话):
priceTier ∈ {low, standard, free}--dry-run、--wait 单产物静默推进时 AI 仍要在最终汇报里写明实际使用的 model 和一句话原因(如 model: nano2 — 通用稳定 + 支持参考图)。
必须复述确认(拦截一步,等用户回应):
priceTier ∈ {high, premium}{sora2, *-1080p, nano-pro, nano-pro-stable, seedream5}复述格式(保持简短):
我打算用 <model-key>(<credits> credits,<一句话原因>),需要换吗?
可选:<其他 1-2 个候选 key + 价格差异>
用户回复任一以下视为确认:「是 / 行 / 可以 / 继续 / 用这个 / 按你建议」。回复具体 key 视为指定。回复「换 / 不要 / 太贵」要重新决策并复述。
model 和选中原因写进 manifest.json 的 decision / notes 字段(若 runtime 暂未支持该字段,可暂留在 step sidecar)。model + 一句话原因。--kind / --operation / --action 即可,不需要复述。nano2,视频步骤默认走 seedance,除非命中上述高成本拦截条件。已端到端实现:
image-generate.js 生成或编辑单张图片。video-generate.js 执行图生视频。audio-generate.js 执行 TTS/音频生成。video-process.js 执行视频处理。one-shot.js 执行一句话生图 + 生视频。run-workflow.js --workflow single-shot 执行单镜头工作流。project-assets.js 创建素材组和素材。多图生成时不要串行执行 image-generate.js --wait 等完一张再提交下一张。推荐流程:
SHOTFUN_CONCURRENCY;未配置时建议 3,高成本模型或网络不稳时降到 2。taskNo、输入 prompt、参考图 URL、模型、项目名和本地 sidecar 路径。taskNo 到终态,成功后再下载或整理远程 URL。RUNNING 时,不要重新提交扣费;继续用 taskNo 查询或恢复。适用场景:多页 PPT 图片重绘、小红书多图卡片、批量封面、任意内容多图展示图。单张图或需要人工逐张确认风格时,仍可串行生成。
对小红书、多图封面、系列海报等批量图片任务,默认不要只返回分散在各个 run 目录里的原始图片。
card-01.png、card-02.png 这类命名。index.json,记录每张图的 taskNo、原始 run 路径、批次路径、标题和顺序。暂未作为工作流实现:
short-drama:把故事、角色、分镜、图片、视频和处理串成一个可恢复流程。character-pack:多视角一致角色素材。video-scene:包含多个协同镜头的单场景。--fetch-remote 下载远程产物。scripts/core/task-registry.js 中的价格只作为模型决策快照;用户询价以 references/pricing.md 为准。不要把未支持的工作流承诺为完整自动化能力。应提供最接近的已实现路径,并明确说明限制。
使用 {baseDir} 表示包含本 SKILL.md 的目录。
默认流程:用户一句话先生成图片,再基于该图片生成视频。用户说“一句话生图和生视频”“generate an image and video from this prompt”或“make this into a short shot”时使用。
最短入口:
node {baseDir}/scripts/cli/one-shot.js \
--project-code <project-name> \
--prompt "A cinematic sunrise over a quiet lake" \
--confirm
请求含糊或用户要求先预览时,先规划:
node {baseDir}/scripts/cli/one-shot.js \
--project-code <project-name> \
--prompt "A cinematic sunrise over a quiet lake" \
--dry-run
使用已有图片:
node {baseDir}/scripts/cli/run-workflow.js \
--workflow single-shot \
--project-code <project-name> \
--prompt "Slow camera push-in, soft morning haze" \
--image-url "https://example.com/scene.png" \
--confirm
恢复工作流:
node {baseDir}/scripts/cli/run-workflow.js \
--workflow single-shot \
--project-code <project-name> \
--prompt "A cinematic sunrise over a quiet lake" \
--resume "<run-id>" \
--confirm
node {baseDir}/scripts/cli/image-generate.js \
--project-code <project-name> \
--prompt "A polished product poster, studio lighting" \
--model nano2 \
--wait \
--agent-output
带参考图:
node {baseDir}/scripts/cli/image-generate.js \
--project-code <project-name> \
--prompt "Keep the character, change outfit to a black suit" \
--image-url "https://example.com/character.png" \
--model nano2 \
--wait \
--agent-output
node {baseDir}/scripts/cli/video-generate.js \
--project-code <project-name> \
--prompt "Animate this character with a slow confident walk" \
--image-url "https://example.com/character.png" \
--model seedance \
--asset-mode none \
--wait \
--agent-output
当请求需要素材模式参考行为时,使用 sd-reference:
node {baseDir}/scripts/cli/video-generate.js \
--project-code <project-name> \
--prompt "Animate this character, preserve identity" \
--image-url "https://example.com/character.png" \
--model sd-reference \
--wait \
--agent-output
音色按平台从 references/voice_<platform>.json 读取;格式见 references/voice-catalog-format.md。用户指定 --voice-id / --voice-name 时精确查找,未指定时自动使用该平台默认音色,并把表中的 voiceId 写入任务参数。
node {baseDir}/scripts/cli/audio-generate.js \
--project-code <project-name> \
--kind single \
--voice-platform <platform> \
--text "你好,这是语音生成测试。" \
--wait \
--agent-output
声音克隆后生成语音:
node {baseDir}/scripts/cli/audio-generate.js \
--project-code <project-name> \
--kind clone \
--voice-url "https://example.com/voice.mp3" \
--text "你好,这是克隆音色后的语音生成测试。" \
--wait \
--agent-output
node {baseDir}/scripts/cli/video-process.js \
--project-code <project-name> \
--operation upscale \
--video-url "https://example.com/input.mp4" \
--wait \
--agent-output
常用 --operation 值:upscale、subtitle-remove。
node {baseDir}/scripts/cli/project-assets.js \
--project-code <project-name> \
--action asset-group-create \
--name "Hero refs" \
--description "Reference images" \
--wait
node {baseDir}/scripts/cli/project-assets.js \
--project-code <project-name> \
--action asset-create \
--group-id 123 \
--url "https://example.com/hero.png" \
--name hero \
--asset-type Image \
--wait
单能力 CLI 默认返回面向任务的 JSON。当调用方需要稳定的 userArtifacts JSON、而不是原始 task 对象时,对图片、视频、音频和视频处理 CLI 添加 --agent-output。工作流始终返回面向 Agent 的 JSON:
{
"ok": true,
"runId": "20260514-031211-a1b2c3d4",
"outputDir": "/abs/path/to/shotfun-output/...",
"manifest": "/abs/path/to/manifest.json",
"userArtifacts": [
{ "kind": "video", "name": "video", "url": "https://..." }
],
"cost": { "estimated": 0, "currency": "CNY" }
}
返回图片、视频、音频结果时,默认把本地路径和线上 URL 都格式化成可点击链接;优先给本地路径,其次补充线上 URL。不要只用纯文本路径展示。
向用户汇报时:
userArtifacts 或 resultUrls 的最终产物 URL 或本地路径,并用可点击链接格式输出。outputDir 和 manifest。projectName、projectSlug,以及项目 latest.json/index.jsonl 的位置。task 对象、token、签名 URL 查询参数细节、原始 API 响应或大段 JSON。taskNo、状态和人类可读错误;不要隐藏失败。taskNo,将其报告为可恢复状态。manifest.json 和步骤 sidecar 文件,然后建议使用 --resume <run-id>。