面向 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 显示这些工具后适用。
规则
- 绝不凭记忆报价。 价格会变化。每次报价前都要调用
estimate_website_clips_cost(需密钥)、get_video_prices或get_plans_and_pricing,引用其返回的价格以及定价页面链接。 - 仅在用户确认确切价格后才能消费。 只有
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时,表示内容政策不允许该请求:请如实告知用户,不要重新措辞以绕过政策。 - 保持 API 密钥机密。 从
ZOROMI_API_KEY环境变量中读取。切勿打印、回显、写入项目文件、提交到版本控制或粘贴到对话中。仅将其发送至zoromi.studio。 - 检查返回值,而非 HTTP 状态码。 即使 HTTP 返回 200,工具也可能报告错误:在读取
result.structuredContent之前,先检查result.isError。参见错误。 - 使用工具返回的链接(定价页面、账户页面、图书的
open_url),不要自行构造 URL。 - 用通俗易懂的语言向用户说明。 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 为单位;为用户询问的时间段求和,并链接返回的用量页面。
“给我做一张……的图片。” 有消费密钥时:
- 调用
estimate_image_cost,参数包括提示词(谁/什么、地点、光线、风格),如果用户指定了框架形状则加上aspect_ratio。除非用户要求,否则省略model和quality。 - 告知用户将要制作的内容和
price,并询问是否同意。如果enough_balance为false,说明 API 余额不足,并提供account_page供用户充值。 - 获得明确肯定后,使用相同的参数、
quote_id和confirmed_by_user: true调用create_image。 - 每隔至少 5 秒使用
task_id检查get_generation_status,直到状态为SUCCESS或FAILURE,然后将view_url(用户在 Zoromi 上查看和下载的页面;如果存在,也提供result_url)和charge中显示的收费金额告知用户。当图片最终失败时,已扣除的费用将返还至 API 余额。
“修改这张图片……” 有消费密钥时:
- 图片必须是用户在 Zoromi 上的自有图片:使用其 id 或 Zoromi 提供的地址。通过
create_image制作的图片也适用:传入get_generation_status在制作完成时返回的地址。不接受其他网络地址;请勿自行上传或获取。 - 分别询问用户两句话,仅在用户对每句都明确回答“是”后才发送
true:“此图片中所有显示的人都同意使用”和“我有权使用此图片”。