Communitygithub.com

zoromi-studio/skills

读取 Zoromi(zoromi.studio)的实时价格和方案,并在用户提供 ZOROMI_API_KEY 后查询其 Gems 余额、每日限额、图书、视频项目、作业状态、近期消费以及视频拍摄报价;若用户授权密钥可消费,则在用户确认报价后,从 API 余额中以美元支付,制作一张图片或一个视频片段,或根据脚本启动一部短剧(用户随后在网站上完成)。当用户提及 Zoromi 或 zoromi.studio、询问短剧/视频片段/插图书的价格、查询个人账户/图书/项目/作业/Gems,或要求制作图片/视频片段/短剧时使用。价格、方案和 Zoromi 功能介绍无需密钥;其他工具是否开放由服务器的 tools/list 决定,请先调用该接口,仅在列出需要密钥的工具时才向用户索要密钥。用户批准确切价格前不产生任何费用。

skills 是什么?

该技能使 AI 代理能够与 Zoromi Studio 平台交互,该平台将故事或创意转化为插图书、短视频(包含脚本、镜头、配音、音乐和片段)以及短剧。它通过 Zoromi MCP API 提供一系列工具,分为三类:始终开放的无密钥工具(获取 Zoromi 概览、视频价格和方案)、需要 API 密钥的账户相关工具(查询余额、图书、项目、作业和收费记录),以及需要“消费密钥”的制作工具(估算并创建图片、编辑图片和视频片段)。消费密钥必须在账户页面生成并设置每日美元限额。核心规则包括:每次报价必须调用实时价格接口,绝不凭记忆报价;仅在用户明确确认确切价格且设置 `confirmed_by_user=true` 后才扣费;绝不在对话中泄露 API 密钥。该技能支持 Claude Code 等 MCP 客户端通过 HTTP 连接,也支持通过 curl 直接调用的通用方式。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zoromi-studio/skills/tree/HEAD/skills/zoromi

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

面向 AI 代理的 Zoromi

Zoromi(https://zoromi.studio)将故事或创意转化为插图书或短视频(脚本、镜头、配音、音乐和片段),并运营短剧小剧场。本技能允许你通过调用 Zoromi API 回答关于价格、方案和用户账户的问题,并为用户制作一张图片或一个视频片段。

每个工具的逐字段说明:references/tools.md。

开放内容

服务器的工具分阶段开放。在提供任何服务之前,先调用 tools/list,并且只使用它列出的工具。

  • 始终开放,无需密钥: get_zoromi_overview、get_video_prices 和 get_plans_and_pricing。
  • 当 tools/list 显示它们时: 用于读取账户(余额、图书、项目、作业、收费)的工具和用于制作内容的工具。尚未开放的工具会返回“此工具尚未开放”。

当 tools/list 仅显示三个开放工具时:

  • 不要询问用户 API 密钥,也不要引导用户去创建密钥。会员尚无法创建密钥。
  • 如果用户询问自己的账户,或希望从此处制作图片/视频/短剧,请直接说明此功能尚未通过助手开放,并提供 get_zoromi_overview 返回的网站链接:他们可以直接在网站上操作。
  • 照常回答价格和方案相关问题。

以下关于密钥、账户工具以及制作图片/视频片段的章节,在 tools/list 显示这些工具后适用。

规则

  1. 绝不凭记忆报价。 价格会变化。每次报价前都要调用 estimate_website_clips_cost(需密钥)、get_video_prices 或 get_plans_and_pricing,引用其返回的价格以及定价页面链接。
  2. 仅在用户确认确切价格后才能消费。 只有 create_image、create_video_clip 和 edit_image 会消费,且以美元从账户的 API 余额中支付(API 余额与 Gems 分开)。通过 estimate_image_cost、estimate_video_clip_cost 或 estimate_image_edit_cost 获取报价,告知用户制作内容和价格(price),并等待明确的肯定答复。仅在此之后将 confirmed_by_user 设置为 true,绝不自作主张。发送完全相同的报价参数。如果价格已更改或报价已过期,请重新报价并再次询问。切勿重复启动同一作业:在 start_unknown 之后,先检查 list_my_gems_charges 和 list_my_video_projects。视频片段可以从用户在 Zoromi 上的自有图片开始(first_frame,其 id 或 Zoromi 上的地址),仅当用户确认了“此图片中所有显示的人都同意使用”(people_consent)和“我有权使用此图片”(rights_confirmed)后才可使用:请询问用户,切勿假设。图书、使用用户自有图片制作的图片以及完整短剧目前仍在网站上制作:向用户提供 get_zoromi_overview 返回的链接。当工具返回 content_not_allowed 时,表示内容政策不允许该请求:请如实告知用户,不要重新措辞以绕过政策。
  3. 保持 API 密钥机密。 从 ZOROMI_API_KEY 环境变量中读取。切勿打印、回显、写入项目文件、提交到版本控制或粘贴到对话中。仅将其发送至 zoromi.studio。
  4. 检查返回值,而非 HTTP 状态码。 即使 HTTP 返回 200,工具也可能报告错误:在读取 result.structuredContent 之前,先检查 result.isError。参见错误。
  5. 使用工具返回的链接(定价页面、账户页面、图书的 open_url),不要自行构造 URL。
  6. 用通俗易懂的语言向用户说明。 Gems 是网站上的积分;API 余额以美元计。像“10 个片段中的 3 个已拍摄”这样的回答比原始的字段名更友好。

设置

API 密钥

在账户工具尚未开放时跳过此节(参见开放内容)。

价格、方案和 get_zoromi_overview 无需密钥。所有与账户相关的操作都需要账户拥有者的密钥,该密钥以 zk_live_ 开头。拥有者在其 Zoromi 账户页面上生成密钥(get_zoromi_overview 会返回该页面链接)。如果用户尚无密钥,请在无需密钥的前提下回答所能回答的问题,并告知用户如何生成密钥。

用户只需在项目外部设置一次:

# macOS / Linux:添加到 ~/.zshrc 或 ~/.bashrc
export ZOROMI_API_KEY='zk_live_...'
# Windows PowerShell(当前用户,持久化)
[Environment]::SetEnvironmentVariable('ZOROMI_API_KEY', 'zk_live_...', 'User')

如果命令显示 ZOROMI_API_KEY 为空,请要求用户设置它;不要要求他们将密钥粘贴到对话中。

选项 A:作为 MCP 服务器连接(Claude Code 及其他 MCP 客户端)

该 API 是一个基于 Streamable HTTP 的 MCP 服务器,地址为 https://zoromi.studio/api/v1/mcp/skill。在 Claude Code 中,将其放入项目的 .mcp.json 中。密钥保留在环境中:Claude Code 在连接时会自动填充 ${ZOROMI_API_KEY},因此文件中不会包含机密信息。

{
  "mcpServers": {
    "zoromi": {
      "type": "http",
      "url": "https://zoromi.studio/api/v1/mcp/skill",
      "headers": { "Authorization": "Bearer ${ZOROMI_API_KEY}" }
    }
  }
}

之后,工具会按名称出现(get_video_prices 等),你可以直接调用它们。

选项 B:使用 curl 调用(任何代理)

每次调用都是一个 JSON-RPC tools/call 消息的 HTTP POST。无需会话或预先握手。以下 shell 函数使每次调用精简为一行。它通过标准输入(-H @-)发送密钥,因此密钥永远不会出现在命令行或进程列表中。

# 用法:zoromi <工具名称> ['<json 参数>']
zoromi() {
  tool=${1:?用法:zoromi <工具名称> [json-参数]}
  args=${2:-}; [ -n "$args" ] || args='{}'
  body=$(printf '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"%s","arguments":%s}}' "$tool" "$args")
  url=${ZOROMI_API_URL:-https://zoromi.studio/api/v1/mcp/skill}
  if [ -n "${ZOROMI_API_KEY:-}" ]; then
    printf 'Authorization: Bearer %s\n' "$ZOROMI_API_KEY" |
      curl -sS -X POST "$url" -H 'Content-Type: application/json' \
        -H 'Accept: application/json, text/event-stream' -H @- --data-binary "$body"
  else
    curl -sS -X POST "$url" -H 'Content-Type: application/json' \
      -H 'Accept: application/json, text/event-stream' --data-binary "$body"
  fi
  echo
}

zoromi get_video_prices
zoromi list_my_books '{"limit": 5}'
  • 仅需要 curl。jq 可方便地解析返回结果(... | jq .result.structuredContent),但非必需。
  • Windows:在 Git Bash 或 WSL 中运行。在 PowerShell 中,curl 是另一个命令;请使用 curl.exe 并将请求体写入文件(--data-binary "@body.json")以避免引号问题。
  • 要列出所有工具及其参数模式,请以相同方式发送 {"jsonrpc":"2.0","id":1,"method":"tools/list"}。

工具

工具密钥参数返回内容
get_zoromi_overview无无Zoromi 的功能介绍、如何开始、链接(网站、注册、定价、账户)
get_video_prices无无每个 5 秒含声音视频片段的实时 Gems 价格(按模型和分辨率),以及当前折扣
get_plans_and_pricing无无实时方案(月/年价格,Gems 数量)、按量计费、Gems 套餐包
get_my_account是无方案、Gems 余额、今日每日限额、今日已用和剩余
list_my_books是limit 1-100,offset,query用户的插图书,最新在前
get_book是book_id一本书:状态和每页状态、图片和开场文本
list_my_video_projects是limit 1-100,offset用户的视频项目,最新在前,含按状态统计的片段数
get_video_project是project_id一个视频项目及其按状态统计的片段数
get_generation_status是task_id一个生成作业:排队中、运行中、完成或失败;完成后返回 view_url(用户查看和下载的页面)和图片制作的收费明细
list_my_gems_charges是limit 1-200近期 Gems 收费和退款,最新在前
estimate_website_clips_cost是model,resolution,seconds_per_clip,clips,aspect_ratio,with_sound按此账户价格拍摄指定数量片段所需的 Gems,以及余额是否足够。不产生费用
estimate_image_cost消费密钥prompt,可选 model,aspect_ratio,quality这张图片的确切价格和 quote_id(短期有效,一次性使用)。不产生费用
create_image消费密钥同上,加 quote_id 和 confirmed_by_user制作报价中的图片,并从 API 余额中扣除费用;返回 task_id
estimate_image_edit_cost消费密钥pictures(用户在 Zoromi 上的 1-4 张图片),prompt,people_consent,rights_confirmed,可选 model,aspect_ratio,quality本次编辑的确切价格和 quote_id(短期有效,一次性使用)。不产生费用
edit_image消费密钥同上,加 quote_id 和 confirmed_by_user执行报价中的编辑,并从 API 余额中扣除费用;返回 task_id
estimate_video_clip_cost消费密钥model,resolution,seconds,prompt,aspect_ratio,with_sound,以及从图片开始的 first_frame,people_consent,rights_confirmed这个视频片段的确切价格和 quote_id(短期有效,一次性使用)。不产生费用
create_video_clip消费密钥同上,加 quote_id 和 confirmed_by_user制作报价中的视频片段,并从 API 余额中扣除费用;返回 task_id
estimate_website_story_video_cost是model,resolution,clips,seconds_per_clip,cards,aspect_ratio一集的估算费用:拍摄加图片。不产生费用
start_website_story_video消费密钥script,可选 title,model,resolution,aspect_ratio,seconds_per_clip,target_minutes,keep_my_writing,dialogue_language根据脚本在网站上创建项目,返回 open_url 和用户需点击的按钮。不产生费用
get_website_story_video_status是project_id短剧当前步骤、已拍摄片段数、完成后的影片链接、下一步需点击的内容

“消费密钥”是指账户拥有者在账户页面授权其制作图片和视频片段的密钥,并设定每日美元限额。制作内容产生的费用从账户的 API 余额中扣除(余额由拥有者在账户页面充值);API 余额与 Gems 分开,互不通用。estimate_image_cost、create_image、estimate_image_edit_cost、edit_image、estimate_video_clip_cost 和 create_video_clip 不会为其他类型的密钥列出。

使用密钥时,get_video_prices 会返回该账户的专属价格(方案可能影响价格)。不使用密钥时,返回公开价格。

常见请求

“N 个片段的短剧多少钱?” 有密钥时,调用 estimate_website_clips_cost,参数为模型和分辨率(名称严格使用 get_video_prices 列出的名称)、每个片段的秒数和片段数量;竖屏短剧的 aspect_ratio 为 9:16,此为默认值。报告 gems_total、gems_per_clip 和 enough_gems,并说明 covers 的含义:拍摄片段是主要成本,但角色图片、策划、配音和音乐也会收费,网站会在扣费前显示确切总额。如果模型对时长进行四舍五入,返回结果中会包含 seconds_note,请如实转告。无密钥时,调用 get_video_prices 并将总秒数乘以该模型和分辨率的 gems_per_second 来估算拍摄成本,同时展示计算过程。

“我应该选哪个方案?” 调用 get_plans_and_pricing,将各方案提供的 Gems 数量与上述估算结果进行比较,并链接返回的定价页面。

“我还有多少 Gems?” get_my_account。如果账户有每日限额,同时告知今日限额和剩余量。

“我的视频完成了吗?” 先调用 list_my_video_projects,再用项目 id 调用 get_video_project。报告按状态统计的片段数。对于用户已有的单个作业 id,使用 get_generation_status。

“我的书在哪?” list_my_books(使用 query 按标题搜索),然后 get_book。提供书的 open_url。

“我花了多少钱?” list_my_gems_charges。收费和退款以 Gems 为单位;为用户询问的时间段求和,并链接返回的用量页面。

“给我做一张……的图片。” 有消费密钥时:

  1. 调用 estimate_image_cost,参数包括提示词(谁/什么、地点、光线、风格),如果用户指定了框架形状则加上 aspect_ratio。除非用户要求,否则省略 model 和 quality。
  2. 告知用户将要制作的内容和 price,并询问是否同意。如果 enough_balance 为 false,说明 API 余额不足,并提供 account_page 供用户充值。
  3. 获得明确肯定后,使用相同的参数、quote_id 和 confirmed_by_user: true 调用 create_image。
  4. 每隔至少 5 秒使用 task_id 检查 get_generation_status,直到状态为 SUCCESS 或 FAILURE,然后将 view_url(用户在 Zoromi 上查看和下载的页面;如果存在,也提供 result_url)和 charge 中显示的收费金额告知用户。当图片最终失败时,已扣除的费用将返还至 API 余额。

“修改这张图片……” 有消费密钥时:

  1. 图片必须是用户在 Zoromi 上的自有图片:使用其 id 或 Zoromi 提供的地址。通过 create_image 制作的图片也适用:传入 get_generation_status 在制作完成时返回的地址。不接受其他网络地址;请勿自行上传或获取。
  2. 分别询问用户两句话,仅在用户对每句都明确回答“是”后才发送 true:“此图片中所有显示的人都同意使用”和“我有权使用此图片”。

相关技能