本文へ移動
cccskills
無料GitHub で公開

shotfun-creator

面向 AI 内容生产场景的 skill 集合,覆盖图片、视频、声音、数字人等内容生产能力。

インストール方法を見る

含まれるファイル(134)

  • SKILL.md26.5 KB
  • .gitignore689 B
  • architecture.md37.8 KB
  • COMMERCIAL_LICENSE.md1.2 KB
  • CREDITS.md869 B
  • examples/news-broadcast-input.example.json2.6 KB
  • examples/visual-grammar-gallery/before_after_surface.svg1.4 KB
  • examples/visual-grammar-gallery/cinematic_anchor.svg1.5 KB
  • examples/visual-grammar-gallery/data_on_plate.svg1.4 KB
  • examples/visual-grammar-gallery/decision_tree_path.svg1.5 KB
  • examples/visual-grammar-gallery/ecosystem_orbit.svg1.4 KB
  • examples/visual-grammar-gallery/index.html4.2 KB
  • examples/visual-grammar-gallery/layer_stack.svg1.6 KB
  • examples/visual-grammar-gallery/market_ledger.svg1.7 KB
  • examples/visual-grammar-gallery/mechanism_xray.svg1.8 KB
  • examples/visual-grammar-gallery/metric_pulse.svg1.5 KB
  • examples/visual-grammar-gallery/quote_architecture.svg1.4 KB
  • examples/visual-grammar-gallery/radar_sweep.svg1.4 KB
  • examples/visual-grammar-gallery/runtime_lens.svg1.5 KB
  • examples/visual-grammar-gallery/signal_board.svg1.5 KB
  • examples/visual-grammar-gallery/timeline_ribbon.svg1.5 KB
  • examples/visual-grammar-gallery/verification_rail.svg1.6 KB
  • LICENSE4.5 KB
  • README.md11.8 KB
  • references/artifact-contracts/storyboard-grouping-plan.v1.json2.3 KB
  • references/artifact-contracts/storyboard.v1.json6.8 KB
  • references/calling-conventions.md16.6 KB
  • references/core-sync.md2.6 KB
  • references/model-catalog.md39.9 KB
  • references/model-taskcode-migration.md5.7 KB
  • references/output-conventions.md2.0 KB
  • references/pricing-2026-05-29.md3.0 KB
  • references/pricing.md4.7 KB
  • references/prompts/video_understanding.v2.prompt.md12.1 KB
  • references/style-guide.md1.2 KB
  • references/troubleshooting.md1.2 KB
  • references/voice_minimax.json117.3 KB
  • references/voice-catalog-format.md2.5 KB
  • scripts/cli/account-balance.js596 B
  • scripts/cli/asr-transcribe.js3.1 KB
  • scripts/cli/audio-generate.js836 B
  • scripts/cli/batch-run.js9.8 KB
  • scripts/cli/doctor.js1.3 KB
  • scripts/cli/image-generate.js830 B
  • scripts/cli/one-shot.js6.0 KB
  • scripts/cli/project-assets.js1.1 KB
  • scripts/cli/run-template.js5.1 KB
  • scripts/cli/run-workflow.js14.8 KB
  • scripts/cli/save-artifact.js3.1 KB
  • scripts/cli/subtitle-segments-to-srt.py1.3 KB
  • scripts/cli/video-analyze.js746 B
  • scripts/cli/video-generate-import.js71 B
  • scripts/cli/video-generate.js832 B
  • scripts/cli/video-process.js834 B
  • scripts/core/account-balance.js2.6 KB
  • scripts/core/api-client.js14.2 KB
  • scripts/core/artifact-store.js55.6 KB
  • scripts/core/capability-schema.js34.3 KB
  • scripts/core/dump-model-catalog.js9.6 KB
  • scripts/core/env-loader.js3.5 KB
  • scripts/core/global-concurrency.js5.0 KB
  • scripts/core/member-region.js1.6 KB
  • scripts/core/model-json-result.js20.2 KB
  • scripts/core/output-paths.js6.2 KB
  • scripts/core/result-adapter.js9.4 KB
  • scripts/core/schema-runtime.js8.7 KB
  • scripts/core/shotfun-service.js17.2 KB
  • scripts/core/task-registry.js58.3 KB
  • scripts/core/task-selector.js3.9 KB
  • scripts/core/workflow-runtime.js9.9 KB
  • scripts/ensure-yt-dlp.sh660 B
  • scripts/media/compatible-video-assembly.js18.4 KB
  • scripts/package.json2.9 KB
  • scripts/services/asr-transcription-service.js9.8 KB
  • scripts/services/asset-service.js3.6 KB
  • scripts/services/audio-generation-service.js10.6 KB
  • scripts/services/chat-task-service.js3.1 KB
  • scripts/services/image-to-video-service.js35.1 KB
  • scripts/services/input-params.js9.1 KB
  • scripts/services/supplement-video-service.js14.3 KB
  • scripts/services/text-to-image-service.js8.5 KB
  • scripts/services/video-analysis-proxy.js7.7 KB
  • scripts/services/video-analysis-service.js35.3 KB
  • scripts/services/video-processing-service.js2.0 KB
  • scripts/services/voice-catalog.js6.5 KB
  • scripts/vendor/jsonrepair/LICENSE.md740 B
  • scripts/vendor/jsonrepair/NOTICE.md426 B
  • scripts/vendor/jsonrepair/regular/jsonrepair.js23.6 KB
  • scripts/vendor/jsonrepair/utils/JSONRepairError.js208 B
  • scripts/vendor/jsonrepair/utils/stringUtils.js6.2 KB
  • scripts/workflows/news-broadcast-video-workflow.js161.6 KB
  • scripts/workflows/single-shot-workflow.js20.3 KB
  • scripts/workflows/video-subtitle-workflow.js28.2 KB
  • task-skills/hyperframes-project.md4.3 KB
  • task-skills/README.md2.6 KB
  • task-skills/reference-video-analysis.md11.7 KB
  • task-skills/scripted-talking-video.md10.8 KB
  • task-skills/talking-head-scene-image.md4.2 KB
  • task-skills/universal-content-to-image.md8.4 KB
  • task-skills/wechat-cover-image.md3.1 KB
  • task-skills/wechat-write-publish-allinone.md7.2 KB
  • task-skills/workbench-web-skill.md6.7 KB
  • task-skills/xhs-images-gen.md11.6 KB
  • tests/cli/audio-generate.test.js2.0 KB
  • tests/cli/batch-run.test.js17.1 KB
  • tests/core/account-balance.test.js2.3 KB
  • tests/core/api-client.test.js9.7 KB
  • tests/core/artifact-store.test.js31.0 KB
  • tests/core/env-loader.test.js6.3 KB
  • tests/core/member-region.test.js1.4 KB
  • tests/core/model-json-result.test.js5.6 KB
  • tests/core/output-paths.test.js5.8 KB
  • tests/core/result-adapter.test.js5.8 KB
  • tests/core/shotfun-service.test.js8.4 KB
  • tests/core/task-registry.test.js14.9 KB
  • tests/core/task-selector.test.js2.2 KB
  • tests/core/workflow-runtime.test.js6.9 KB
  • tests/package.json42 B
  • tests/services/asr-transcription-service.test.js5.1 KB
  • tests/services/asset-service.test.js3.3 KB
  • tests/services/audio-generation-service.test.js15.1 KB
  • tests/services/chat-task-service.test.js2.3 KB
  • tests/services/image-to-video-service.test.js43.6 KB
  • tests/services/input-params.test.js2.5 KB
  • tests/services/standalone-routing.test.js1.4 KB
  • tests/services/supplement-video-service.test.js13.6 KB
  • tests/services/text-to-image-service.test.js10.0 KB
  • tests/services/video-analysis-service.test.js28.6 KB
  • tests/services/video-processing-service.test.js1.8 KB
  • tests/workflows/news-broadcast-video-workflow.test.js4.5 KB
  • tests/workflows/single-shot-workflow.test.js9.9 KB
  • tests/workflows/video-subtitle-workflow.test.js12.9 KB
  • workflow-skills/koubo.md9.6 KB
  • workflow-skills/README.md540 B

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

shotfun-creator

shotfun-creator 面向所有 AI 内容生产场景,是覆盖图片、视频、声音、数字人等能力的 skill 集合。它负责理解用户目标、自主选择合适的可用技能,并完成内容生产。用户只需要输入内容目标,它会帮助拆解任务、规划流程、完成工作任务,并可把已实现的工作流程沉淀为用户自己的 skill。

核心运行规则

  1. 路由顺序:优先使用能完整覆盖用户目标的 workflow skill;其次使用 task-skills/;最后才下钻到 scripts/cli/*.js 或 scripts/services/*.js 原子能力。
  2. 前置约定:调用 ShotFun 前读取 references/calling-conventions.md 和 references/output-conventions.md;缺少 SHOTFUN_API_KEY 时只做 dry-run 或引导配置,不提交真实任务。
  3. 价格查询:当用户询问价格、费用、收费、积分、credits、成本或哪个模型更便宜时,先读取 references/pricing.md,按其中的价格表向用户展示相关条目;不要凭记忆报价。references/model-catalog.md 只作为模型选择目录,用户展示口径以 references/pricing.md 为准。
  4. 脚本归属:新增 skill 的专用脚本、模板、示例输入、参考素材配置和辅助工具必须放进对应 skill 目录;主项目 scripts/ 只放跨 skill 复用的稳定底层能力。
  5. 安全边界:不要把 API Key、token、签名 URL、本机绝对路径、历史生成素材 URL、客户素材、私有项目名、角色资产或一次性生产参数硬编码到 skill 文件或主项目脚本中。
  6. 汇报约定:最终回复优先给用户可直接使用的产物链接/本地路径、outputDir、manifest 和关键模型参数;不要粘贴原始 API 响应、内部 task 对象或大段 JSON。

新建 workflow/task skill 时,可在该 skill 目录下使用 scripts/、templates/、examples/、references/ 等子目录承载专用内容。需要公开示例时,只使用无敏感信息的占位 URL 和最小示例数据。

前置检查

调用 ShotFun 之前:

  1. 确认用户目标:完整工作流、单个任务产物,还是原子能力调用。
  2. 读取 references/calling-conventions.md(环境变量、输出目录、安全约束)和 references/output-conventions.md。
  3. 确认本地 <cwd>/.env.local 或运行环境中存在 SHOTFUN_API_KEY;如果缺失,先引导用户到 shotfun.cn/agent 注册/登录 ShotFun 账户并获取 API Key,再把 key 写入当前项目根目录的 <cwd>/.env.local。对于当前仓库使用场景,默认就是 shotfun-creator/.env.local。不要继续提交真实任务;可用 --dry-run 帮用户预览执行计划。
  4. 对多步骤或含糊请求,优先使用 --dry-run 预演。
  5. 对用户期望本轮直接拿到结果的单能力任务,使用 --wait。
  6. 对工作流执行,只有在真实运行有成本门槛的工作流时才使用 --confirm,不要在 dry-run 规划阶段使用。
  7. --project-code 传用户填写的 ShotFun 项目名称,未传时默认为 default;--project-name 只控制本地归档目录,未传时也使用 default。
  8. 如果任务反馈余额不足、积分不足或账户余额不够,先停止继续提交并引导用户到 ShotFun 充值页 充值后再继续。

凭证优先来自本地 <cwd>/.env.local,其次才是运行时环境变量。不要把 API Key、token、私有 URL 或生成资产硬编码到 skill 文件或已跟踪文件中。

ShotFun API Key 引导

当任务需要调用 ShotFun OpenAPI,但环境中没有 SHOTFUN_API_KEY 时,停止真实执行并用简短步骤引导用户:

  1. 打开 shotfun.cn/agent。
  2. 注册或登录 ShotFun 账户。
  3. 在账户/API Key 页面创建或复制 API Key。
  4. 将 API Key 写入当前工作目录的 .env.local,格式为 SHOTFUN_API_KEY=<用户的 key>。在本仓库场景下,默认路径是 shotfun-creator/.env.local。
  5. 后续所有 ShotFun CLI/service 会通过 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.* 规则忽略。

需求澄清规则

当用户输入不够明确,且会影响成本、模型选择、产物质量或是否能执行时,先引导用户确认需求,不要直接猜测并提交真实任务。

必须澄清的情况:

  • 缺少核心输入:例如没有提示词、没有参考图、没有口播稿、没有视频/图片 URL、没有项目名称或必要凭证。
  • 输出规格不明确且会影响结果:例如图片比例、分辨率、视频时长、语言、音色、是否需要字幕、是否需要严格保留人物身份。
  • 任务类型存在歧义:例如用户只说“做个视频”,但没有说明是图生视频、口播视频、单镜头视频还是完整工作流。
  • 成本或执行风险较高:例如高分辨率、长视频、多步骤工作流、批量生成、会发布到外部平台。
  • 参考素材的用途不明确:例如用户给了人物照片和场景图,但没有说明要换背景、合成场景、做口播图还是做视频。

澄清方式:

  • 优先问 1-3 个最关键问题,不要一次性抛出长表单。
  • 给出推荐默认值,帮助用户快速确认,例如“我建议 16:9、默认模型、先 dry-run,再正式生成”。
  • 如果需求可以安全默认,先说明默认假设,再执行 dry-run;真实执行前仍需确认高成本或外部发布动作。
  • 如果用户已经明确说“直接生成/按你建议来”,可以使用合理默认值继续执行。

主 Skill 调度规则

按以下顺序选择执行路径:

  1. 如果用户描述的是端到端目标或跨渠道产物,且仓库存在 workflow-skills/README.md,先读取匹配的 workflow skill。
  2. 如果用户描述的是一个输入输出明确的产物,先查 task-skills/README.md 并读取匹配的 task skill。
  3. 如果用户只需要图片、视频、音频、视频分析、ASR、字幕、资产管理或余额查询中的一个原子能力,读取 references/*.md 并调用对应 CLI/service。
  4. 如果没有现成 workflow/task skill,先用原子服务跑通 MVP,并把缺口作为后续可新增 skill 记录。

工作流 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.mdnode scripts/cli/image-generate.js ...
小红书/RedNote 图片卡片或卡片系列task-skills/xhs-images-gen.mdnode 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.mdnode scripts/cli/video-analyze.js ... + 按需 ffprobe / ffmpeg 抽帧
口播场景图生成task-skills/talking-head-scene-image.mdnode scripts/cli/image-generate.js ...
真人口播风格视频 / 根据图片和口播稿生成完整口播视频task-skills/scripted-talking-video.md短稿走 single-shot;长稿或需穿插内容镜头时先做分镜和模型确认
创建、检查或渲染 HyperFrames 项目task-skills/hyperframes-project.mdnode scripts/cli/run-workflow.js --workflow news-broadcast-video ... 或 npx --yes hyperframes@0.6.30 render ...
给指定 skill 生成 Web 工作台、查看生产过程和产物task-skills/workbench-web-skill.mdHTML5 + 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 ...
生成语音或多模态音频references/model-catalog.md#音频--ttsnode scripts/cli/audio-generate.js ...;默认模型 seed_audio
试听或使用目录音色references/model-catalog.md#音频--tts显式选择 --kind preview / --kind single 和目录音色
视频去字幕references/model-catalog.md#视频处理node scripts/cli/video-process.js --operation subtitle-remove ...;超分暂不支持
视频内容理解 / 多模态分析references/model-catalog.md#视频分析node scripts/cli/video-analyze.js ...
音频或视频转录 / ASRreferences/model-catalog.md#语音识别--asrnode scripts/cli/asr-transcribe.js ...
生成字幕并烧录到视频references/model-catalog.md#字幕生成node scripts/cli/run-workflow.js --workflow video-subtitle ...
克隆参考声音 / 参考音频生成语音references/model-catalog.md#音频--ttsnode scripts/cli/audio-generate.js --model seed_audio --voice-url <url> --text "..." ...;必须有声音授权
查询可用积分余额references/calling-conventions.md#余额查询node scripts/cli/account-balance.js
批量执行同一种原子能力references/calling-conventions.md#批量执行node scripts/cli/batch-run.js --capability <id> --items <json-file> ...
调用已有后端文本任务references/calling-conventions.md#文本任务scripts/services/chat-task-service.js 的 runChatTask();必须提供实际 taskCode
保存或修改结构化分镜 / 分组产物references/calling-conventions.md#结构化产物保存node scripts/cli/save-artifact.js ...;需符合项目 manifest 和产物契约
创建 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 输入纪律

当用户只说“用 News Broadcast Video Workflow 做一个播报视频”或类似请求,但没有在本轮明确给出主题、素材、JSON 路径或“复用某个历史 run”的指令时:

  1. 先问用户现在想播报什么,不要在 shotfun-output/、manual-inputs/ 或历史 run 里自动挑一个 JSON。
  2. 可以运行 node scripts/cli/run-workflow.js --workflow news-broadcast-video --project-name "<name>" 生成 needs-broadcast-input 请求包,但不要把历史产物当作正式输入。
  3. 只有当用户明确说要复用某个历史文件/run 时,才可以传 --input-file 指向 shotfun-output/ 下的 JSON,并且必须同时传 --allow-historical-input。

只有当注册表中存在专用服务尚未支持的任务时,才把 scripts/cli/run-template.js 作为低层逃生口使用。

模型决策协议

调用任何 ShotFun service / CLI 之前,AI 必须按本协议选定 --model / --kind / --operation,不要让用户自己挑模型,也不要在 task-skills 文档里硬编码。

1. 读 catalog

每次调用前必读 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。

2. 选 model 的判断顺序

  1. 用户已显式指定:用户消息含具体 --model X 或写了 model key,直接采用,不再决策。
  2. 任务级硬约束:根据输入特征过滤候选模型:
    • 有参考图 / anchorPhoto / Asset://... → 必须 supports.referenceImage = true。
    • 要求素材模式 → 必须 supports.assetMode = true,按 catalog 中当前模型约束选择。
    • 用户指定分辨率 1080P / 4K → 选 defaults.resolution 匹配的或显式 1080p 的 model。
    • 用户指定时长 → 校验模型的时长范围、整数约束和参考媒体限制。
    • 真实视频生成必须显式传 --aspect-ratio;先从用户目标、已确认的输出规格或参考素材确认比例,不依赖 CLI 隐式默认。
  3. 场景匹配:剩余候选按 selection.scenarios 与用户描述做语义匹配,命中场景的优先。
  4. 预算偏好:
    • 用户暗示「便宜 / 草稿 / 试试」→ 选 priceTier ∈ {low, standard} 中推荐分最高的。
    • 用户暗示「最好 / 发布 / 投放」→ 进入下面的高成本确认流程。
    • 用户未表态 → 默认走低成本,priceTier = standard 推荐分最高者优先;同分按 credits 升序。
  5. 同分裁决:先看 selection.tags 中 default 标签;再看 recommendationScore;再看 credits 升序。

3. 静默推进 vs 复述确认

默认静默推进(不打断对话):

  • priceTier ∈ {low, standard, free}
  • 单次调用、--dry-run、--wait 单产物
  • 用户已显式指定 model 或说过「按你建议」/「直接生成」

静默推进时 AI 仍要在最终汇报里写明实际使用的 model 和一句话原因(如 model: nano2 — 通用稳定 + 支持参考图)。

必须复述确认(拦截一步,等用户回应):

  • priceTier ∈ {high, premium}
  • 高分辨率或其他高成本规格,以当前 catalog 的成本和约束为准
  • 工作流多镜头 / 批量生成 / 单次任务 ≥ 5 个产物
  • 用户描述含「发布 / 上线 / 投放 / 给客户 / 给老板 / 上传到平台」
  • 单次预估 credits ≥ 12

复述格式(保持简短):

我打算用 <model-key>(<credits> credits,<一句话原因>),需要换吗?
可选:<其他 1-2 个候选 key + 价格差异>

用户回复任一以下视为确认:「是 / 行 / 可以 / 继续 / 用这个 / 按你建议」。回复具体 key 视为指定。回复「换 / 不要 / 太贵」要重新决策并复述。

4. 决策可追溯

  • 工作流(写 manifest 的场景):把最终选定的 model 和选中原因写进 manifest.json 的 decision / notes 字段(若 runtime 暂未支持该字段,可暂留在 step sidecar)。
  • 单次 CLI 调用:在最后向用户的汇报里附 model + 一句话原因。

5. 例外

  • 音频默认使用 seed_audio(CLI kind 为 seed-audio),包括普通音频生成和参考音频生成;不默认使用 MiniMax 或 CosyVoice。仅用户明确选择目录音色或旧服务时使用 single / preview / clone / clone-direct。视频处理、素材管理按用户意图选择对应 --operation / --action 即可。
  • 单镜头工作流的图片和视频步骤由当前 registry 与任务约束共同选择;查看 dry-run 的 modelSelection,不沿用旧别名或旧价格。

当前可用的任务生成能力

已端到端实现:

  • 通过 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 创建素材组和素材。
  • 通过 video-analyze.js 分析视频,支持本地代理和长视频分段。
  • 通过 asr-transcribe.js 转录音频或视频。
  • 通过 run-workflow.js --workflow video-subtitle 执行 ASR、生成 SRT 和字幕烧录。
  • 通过 audio-generate.js --model seed_audio --voice-url <url> 执行参考音频生成;clone-direct 仅作为显式选择的旧服务保留。
  • 通过 account-balance.js 查询 OpenAPI 可用积分;查询失败不等于余额不足。
  • 通过 batch-run.js 批量调用 schema 中可批处理的服务,保留失败项和恢复信息。
  • 通过 chat-task-service.js 调用已知后端文本任务,使用 UTF-8 base64 的 userMessage 协议。
  • 通过 save-artifact.js 按契约保存分镜、分组计划等产物;通过 model-json-result.js 解析和审查模型 JSON。
  • 通过 supplement-video-service.js 提交、等待和导出补镜;通过 scripts/media/compatible-video-assembly.js 合成兼容视频。

本地视频代理、字幕烧录及视频拼接需要 ffmpeg / ffprobe。会员区域默认 CN,国际账号在私有环境配置中设置 SHOTFUN_REGION=EN。桌面宿主注入登录态时仍须验证账号区域,不可用手动配置绕过。

批量任务执行经验

多图生成时不要串行执行 image-generate.js --wait 等完一张再提交下一张。推荐流程:

  1. 先为每张图生成独立 prompt、参考图 URL 和 sidecar JSON。
  2. 优先用 batch-run.js 并发执行,显式设置 --concurrency 3 或 SHOTFUN_CONCURRENCY=3;运行时默认/最大并发度为 50,高成本模型或网络不稳时降到 2。
  3. 记录每个任务的 taskNo、输入 prompt、参考图 URL、模型、项目名和本地 sidecar 路径。
  4. 统一轮询所有 taskNo 到终态,成功后再下载或整理远程 URL。
  5. 单个任务超时但后端仍是 RUNNING 时,不要重新提交扣费;继续用 taskNo 查询或恢复。

适用场景:多页 PPT 图片重绘、小红书多图卡片、批量封面、任意内容多图展示图。单张图或需要人工逐张确认风格时,仍可串行生成。

批量图片归档默认规则

对小红书、多图封面、系列海报等批量图片任务,默认不要只返回分散在各个 run 目录里的原始图片。

  • 生成完成后,应额外整理一个同批次的聚合目录。
  • 聚合目录下统一使用 card-01.png、card-02.png 这类命名。
  • 同时提供一个 index.json,记录每张图的 taskNo、原始 run 路径、批次路径、标题和顺序。
  • 如果用户明确要求保留原始 run 结构,再只返回分散路径。

暂未作为工作流实现:

  • short-drama:把故事、角色、分镜、图片、视频和处理串成一个可恢复流程。
  • character-pack:多视角一致角色素材。
  • video-scene:包含多个协同镜头的单场景。
  • 工作流 --fetch-remote 仍未实现;单能力媒体任务使用 --wait 后默认下载产物并返回本地路径。
  • 导出可分享的 manifest 脱敏版本,隐藏私有/签名 URL。
  • 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 minimax-h3-768p-cheap \
  --aspect-ratio 16:9 \
  --asset-mode none \
  --wait \
  --agent-output

当请求需要素材模式参考行为时,使用支持 asset 模式的模型,例如 sd2.0-720p:

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 sd2.0-720p \
  --aspect-ratio 16:9 \
  --wait \
  --agent-output

语音 / 音频

普通音频生成和声音克隆(参考音频生成)默认都用 seed_audio。可传 --prompt 描述声音,也可用 --text 提供准确口播稿;参考声音通过 --audio-url 或 --voice-url 传入,不需要目录音色 ID。

价格为 5 积分/秒(人民币 0.02 元/秒),例如 10 秒为 50 积分、0.20 元。先确认目标时长再估算费用;未传 --duration-seconds 时默认 5 秒,长稿先分段并确认模型支持的时长,不把整篇稿件塞进默认 5 秒任务。参考音频必须获得声音授权,Seed Audio 不承诺生成可复用的 voiceId。

node {baseDir}/scripts/cli/audio-generate.js \
  --project-code <project-name> \
  --model seed_audio \
  --duration-seconds 5 \
  --text "你好,这是语音生成测试。" \
  --wait \
  --agent-output

参考声音生成语音:

node {baseDir}/scripts/cli/audio-generate.js \
  --project-code <project-name> \
  --model seed_audio \
  --voice-url "https://example.com/voice.mp3" \
  --duration-seconds 5 \
  --text "你好,这是克隆音色后的语音生成测试。" \
  --wait \
  --agent-output

只有用户明确需要目录音色时才使用 --kind single --voice-platform <platform>;音色目录见 references/voice_<platform>.json 和 references/voice-catalog-format.md。旧克隆流程仍可显式选择 --kind clone 或 --kind clone-direct,不作为默认入口。

视频处理

node {baseDir}/scripts/cli/video-process.js \
  --project-code <project-name> \
  --operation subtitle-remove \
  --video-url "https://example.com/input.mp4" \
  --wait \
  --agent-output

当前 --operation 仅支持 subtitle-remove;不要调用已移除的 upscale。

项目素材

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。
  • 如果 URL 看起来是签名或私有链接,告诉用户它可能会过期,并建议下载或妥善保存。

失败与恢复规则

  • 缺少 API key、用户输入的项目名称、提示词、输入文件、URL 或必需选项:停止并报告缺失输入。
  • API 任务失败:报告 taskNo、状态和人类可读错误;不要隐藏失败。
  • 如果失败原因是任务余额不足或积分不足,明确提示用户去 ShotFun 充值页 充值。
  • 超时:如果存在 taskNo,将其报告为可恢复状态。
  • 工作流部分失败:保留 manifest.json 和步骤 sidecar 文件,然后建议使用 --resume <run-id>。
  • 只有当工作流输入 hash、注册表版本、工作流版本和步骤输入 hash 都匹配时,恢复才安全。工作流版本不匹配时必须重新运行。

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

このスキルの問題を報告する