powertokens-video
Provides access to ByteDance's Seedance video generation models (versions 1.0, 1.5, 2.0, and 2.5, including Mini/Fast variants) through the PowerTokens API. Supports text-to-video using media-text prompts, image-to-video with asset:// first-frame/last-frame inputs, reference video/audio inputs, and configurable duration, resolution, aspect ratio, seed, and audio generation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@powertokens-videogenerate a 5-second video of a cat dancing on grassland"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
powertokens-video
English: A tool-agnostic CLI + MCP server that drives PowerTokens image / video / Seedance models through the official REST API (no Node, no
powertokens-cli). One engine, two shells (Agent SkillsSKILL.md+ MCPmcp_server.py). Works across any agent that supports the Agent Skills open standard or MCP.
目录
Related MCP server: MiniMax MCP JS
1. 这是什么
powertokens-video 是一个跨 agent 的图片 / 视频生成工具,把 PowerTokens 的模型能力,封装成「一份引擎 + 两种接入壳」:
引擎
pt_video.py:纯 Python 标准库,零外部依赖、直连官方 REST API、不需要 Node、也不需要 powertokens-cli。壳 A · Agent Skills(
SKILL.md):符合开放标准,直接被 40+ 支持该标准的 agent 读取(Claude Code、Cursor、GitHub Copilot、Codex、Trae、Zed、Kiro、Junie、Roo Code …)。壳 B · MCP server(
mcp_server.py):被任何 MCP 客户端当作「工具」调用(Claude Desktop、Cursor、Trae、VS Code、Windsurf、Cline、Zed …)。
三种壳共用同一个引擎,所有生成逻辑只维护一份(单一真相源)。
官方 REST 直连,没有中间层:
类型 | 提交端点 | 机制 |
视频( |
| 异步:提交后每 10 秒轮询 |
图片( |
| 同步:提交后直接返回 |
默认模型为 auto(按你账号真实可用的模型自动挑选,视频/图片/seedance 分开),也可显式指定任意模型,并可查询每个模型的定价与支持的参数。
2. 为什么做这个
跨 agent 通用:不想每次换 agent(Claude / Cursor / Trae …)都重写一遍调用代码。本仓库同时输出 Agent Skills 标准 与 MCP 标准 两份接入,覆盖市面上绝大多数 agent 客户端。
开源、零依赖:只依赖 Python 标准库,任何人
git clone后python pt_video.py即可跑,无需装 Node、无需装 powertokens 的 CLI。官方 API 直连:不依赖任何第三方中转/网关,调用行为可预测、可审计,出问题直接对照官方端点排查。
踩坑已沉淀:Seedance 协议签署、asset:// 素材格式、文生视频的 media-text 提交方式、跨账户资产共享等坑,都已实测并写入
docs/pitfall-archive.md与本文档。
3. 快速开始(CLI)
git clone https://github.com/tjj1234/powertokens-video.git
cd powertokens-video
export POWERTOKENS_API_KEY="sk-pt-xxxx" # 推荐用环境变量(见 §8)
python pt_video.py check # Key 体检
python pt_video.py models -t all --json # 列出模型 + 定价 + 参数
# 视频(默认 auto,按账号可用模型自动选)
python pt_video.py generate -p "一只猫在蒙古草原跳舞" -d 5 -r 720p
python pt_video.py generate -m kling-v2-1-master -p "一只猫跳舞" -d 5 -r 1080p
# 图片(加 --type image)
python pt_video.py generate -p "赛博城市夜景" --type image --aspect-ratio 16:9
python pt_video.py generate -m seedream-5-0-260128 -p "赛博城市" --type image --aspect-ratio 16:9
python pt_video.py estimate -m seedance-1-5-pro-251215 -d 5 -r 720p # 仅估算消耗(不扣费)
# Seedance 全系(1.0/1.5/2.0/2.5 均可,独立类型:--type seedance,需先签协议,见 §10)
python pt_video.py models -t seedance --json
python pt_video.py generate --type seedance -m seedance-1-5-pro-251215 -p "一只猫在草地上走" -d 5 -r 720p --no-download # 文生视频:纯 -p 即可
python pt_video.py upload -f ./first_frame.png # 上传素材拿 asset://<id>(免费)
python pt_video.py generate --type seedance -m seedance-1-5-pro-251215 -p "镜头推进" --first-frame asset://<id> --no-download # 图生视频
python pt_video.py seedance enable # 签好协议后标记,不再弹开通引导工作原理:
视频
generate提交后进入异步轮询——每 10 秒查一次状态,直到成功拿到视频链接(默认自动下载到out/<task_id>.mp4并打印链接)。真实出片通常 1–3 分钟。图片
generate --type image提交后同步返回data[].url(通常几秒),默认下载到out/<model>_<n>.png。
4. 能力总览:image / video / seedance 三类型
本项目把生成能力分成三种并列类型(这是经过实测后刻意的设计,见 §10):
类型 | 子命令 | 说明 | 协议前置 | 素材格式 | 生成机制 |
|
| 文生图 | 无 | — | 同步( |
|
| 普通视频模型(Kling / Wan / Hailuo / Vidu / HappyHorse) | 无 |
| 异步轮询( |
|
| Seedance 全系(ByteDance:1.0/1.5/2.0/2.5,含 Mini/Fast) | 需签《Asset Library User Agreement》 | 仅 | 异步轮询( |
关键设计点:Seedance 被拆成独立类型,而不是塞进普通
video。原因:它有三大独有前置(签协议 / 素材走资产库asset:/// 文生靠media-text而非顶层prompt),与普通视频模型系统性不同。普通video的auto候选已剔除 Seedance,--type seedance才显式走它。
5. 支持的模型与定价
价格为 PT 预扣单价(美元,$),基于
5s / 720p探测;时长与分辨率按系数换算(见 §15)。图片单价 PT 未公开 API,表中标n/a,以仪表盘为准。 实际可用模型以python pt_video.py models -t all --json在你账号下查到的为准(不同账号额度/白名单不同)。
视频模型(--type video,auto 候选)
模型 ID | 5s/720p 单价 | 时长上限 | 分辨率 | 主要输入 |
| $0.20 | 10s | 720p/1080p | text, image |
| $0.70 | 10s | 720p/1080p | text, image |
| $0.475 | 10s | 720p/1080p | text, image |
| $0.42 | 10s | 720p/1080p | text, image, audio |
| $0.42 | 10s | 720p/1080p | text, image |
| $1.40 | 10s | 720p/1080p | text, image, audio(运镜) |
Seedance 模型(--type seedance,实测 7 个全部 available)
模型 ID | 5s/720p 单价 | 时长上限 | 分辨率 | 主要输入 |
| $0.247 | 10s | 720p/1080p | text, image(first-frame), start-end, video+audio ref |
| $0.605 | 10s | 720p/1080p | 同上 |
| $0.756 | 10s | 720p/1080p | 同上 |
| n/a | 10s | 720p/1080p | 同上 |
| n/a | 10s | 720p/1080p | 同上 |
| n/a | 10s | 720p/1080p | 同上 |
| n/a | 10s | 720p/1080p | 同上 |
图片模型(--type image,auto 候选)
模型 ID | 单价 | 宽高比 | 输入 |
| n/a | 1:1/16:9/4:3/3:2/2:3/3:4/9:16/21:9 | text |
| n/a | 同上 | text |
6. 前置要求
Python 3.9+(仅标准库;只有 MCP server 需要可选的
mcp包)。PowerTokens API Key:打开 https://powertokens.ai/zh-Hans/dashboard → 注册/登录 → 充值 → 创建 Key(形如
sk-pt-xxxx)。(仅 Seedance):使用
--type seedance前,需在仪表盘手动签署《Asset Library User Agreement》(https://powertokens.ai/assets-library?tab=1)。该协议无 API 端点可程序化签署,只能网页手签。
7. 安装
方式一:直接用(推荐,零安装)
git clone https://github.com/tjj1234/powertokens-video.git
cd powertokens-video
python pt_video.py check引擎只用标准库,python pt_video.py <子命令> 即可,无需 pip install。
方式二:作为 MCP server 安装(可选)
仅当你要用「接入方式 B(MCP)」时才需要装 mcp 依赖:
pip install -e ".[mcp]" # 或 pip install "mcp[cli]>=1.2"
python mcp_server.py # stdio;agent 客户端会自动拉起8. 配置 API Key
三种配置方式,优先级从高到低:
环境变量
POWERTOKENS_API_KEY(推荐,任何 agent 通用)export POWERTOKENS_API_KEY="sk-pt-xxxx"本地配置文件(权限 0600,推荐在共享机器上用)
python pt_video.py config --set-key "sk-pt-xxxx" # 保存在 ~/.config/powertokens-video/config.json(用户级,不在仓库内)仓库级配置(可选):
PT_VIDEO_CONFIG环境变量可覆盖配置文件路径。
⚠️ Key 属于敏感凭据:不要写进任何会被提交的文件。
.gitignore已忽略config.json与.env。
9. 命令参考(全参数)
所有命令形式:python pt_video.py <子命令> [参数]。
子命令 | 作用 | 备注 |
| Key 体检 | exit 0=就绪,2=缺 Key |
| 保存 Key 到 config.json | — |
| 保存默认模型 | 默认 |
| 查看配置(Key 脱敏) | — |
| 打印 auto 首选模型(不生成) | — |
| 列出模型 + 定价 + 支持参数 | 无 Key 也能看公开目录 |
| 仅估算消耗(美元) | 不扣费 |
| 生成(视频轮询 / 图片同步) | 核心命令 |
| 上传素材到资产库,拿 | 免费 |
| 管理 Seedance 协议本地标记 | 见 §10 |
generate 完整参数
通用:
-p/--prompt(必填,文生/图生提示词)-m/--model(默认auto;也可写具体模型 ID)--type(默认按模型 ID 推断;显式video/image/seedance)-o/--output(输出路径;不传则落到out/)--no-download(只拿链接,不下载文件)--timeout(轮询总上限秒,默认 600)
视频(video / seedance):
-d/--duration(2–30s,默认 5)-r/--resolution(480P/720P/1080P,默认 720P)--ratio(如16:9/9:16/adaptive)--seed(整数,可复现)--first-frame/--last-frame(首帧/尾帧,asset://或http(s))--ref-image/--ref-video/--ref-audio(参考素材,可多次)--no-audio(关闭生成音频)--no-prompt-extend(关闭提示词扩展)--watermark(开启水印)
图片(image):
--aspect-ratio(1:1/16:9/4:3/3:2/2:3/3:4/9:16/21:9,默认1:1)--n(1–9 张,默认 1)--response-format(url/base64,默认url)
upload 参数
-f/--file(图片路径,必填;资产库要求宽 300–6000px)--group-name(资产分组名,可选;不可与已存在组名重复)
10. Seedance 专题(独立类型)
10.1 为什么是独立类型
Seedance 全系模型(ByteDance,1.0 / 1.5 / 2.0 / 2.5 及 Mini/Fast 变体)有三个与其他视频模型系统性不同的前置:
必须签《Asset Library User Agreement》(仪表盘手签,无 API);
图生视频的素材必须走资产库,以
asset://<ASSET_ID>传入;文生视频的 prompt 必须放进
media:[{type:text, text:...}],服务端不认顶层prompt字段。
因此把它提升为独立类型 --type seedance,而不是在 video 里打补丁。普通 video 的 auto 候选已剔除它。
10.2 协议签署流程(本地标记 + 报错回退)
PT 没有「查询协议是否已签」的 API 端点,所以 skill 用本地标记 + 报错回退近似判断:
未标记时,生成前会打印 4 步「跳转 PT 开通」引导(不阻断提交);
你签好后跑
python pt_video.py seedance enable标记已签,之后不再弹引导;若提交仍被服务端判「未签」(关键词命中),skill 自动
reset标记并重新弹引导;首次成功生成后自动记为已签。
python pt_video.py seedance status # 查看当前标记
python pt_video.py seedance enable # 签好后标记
python pt_video.py seedance disable # 取消标记10.3 文生视频 vs 图生视频(实测澄清)
文生视频只需
-p,无需任何 media:提交时引擎自动把 prompt 放进media:[{type:text}]。图生视频(首帧/参考图)才需要素材,且素材必须经资产库上传后以
asset://<ASSET_ID>格式传入。
⚠️ 纠正旧认知:网络/早期文档有「BytePlus 系文生视频必须带 media」的说法,是误判——当初用假
asset://占位符才触发BytePlus video models only accept media;换成真实 Key 实测,纯 prompt 文生视频可正常走到扣费校验(余额不足时返回pre-consume quota failed)。
10.4 素材上传闭环(upload,免费)
图生视频必须用 asset:// 素材。两步拿到:
# 1) 上传本地图(资产库要求宽 300–6000px),免费,返回 asset://<id>
python pt_video.py upload -f ./first_frame.png
# 2) 用 asset id 做首帧
python pt_video.py generate --type seedance -m seedance-1-5-pro-251215 -p "镜头缓慢推进" --first-frame asset://<id>Seedance 类型下,
--first-frame等媒体只收asset://;传公网http(s)会在前置校验被拒绝(避免绕过协议)。
11. 跨账户资产共享与安全注意
实测结论(2026-10-27,真实双账户):PowerTokens 的 asset:// 资产 id 是跨账户可解析、读路径不做账户隔离的共享引用。
用账户 A 上传的
asset://xxx,可以直接在账户 B 的 Key 下作为首帧生成视频,生成任务完整跑完、消耗记在账户 B。安全含义:不要把涉密 / PII 内容放进 asset 却指望「账户隔离」——任何知道 asset id 的人都能在自有 Key 下引用它做生成(只要过预扣费)。asset id 应视作「不可猜测但可共享」的 token。
产品机会:这也意味着「上传一次素材、多人/多账户复用生成」是平台原生支持的能力,可在协作类产品里直接利用。
12. 输出与下载
视频:轮询成功后默认下载到
out/<task_id>.mp4并打印链接;--no-download只返回链接。图片:同步返回后默认下载到
out/<model>_<n>.png(多张自动加_1/_2序号);--no-download只返回data[].url。图片 URL 有效期:
data[].url是临时签名地址(约 24 小时),请及时下载或转存。所有生成产物落在仓库内
out/目录(已加入.gitignore,不会被提交)。
13. 接入方式 A:Agent Skills
本仓库根目录本身就是一个 Agent Skill 文件夹(含 SKILL.md),复制到 agent 的 skills 目录即可被读取。
Agent | skills 目录 |
Claude Code |
|
Cursor |
|
GitHub Copilot | 项目内 |
Codex (OpenAI) |
|
Trae / Zed / Kiro / Junie / Roo Code | 对应 skills 目录(参考各工具文档) |
# 例:Claude Code
mkdir -p ~/.claude/skills
cp -r . ~/.claude/skills/powertokens-video目录结构(本仓库根即 skill 文件夹):
powertokens-video/
├── SKILL.md # Agent Skills 清单(name + description + 指令)
├── pt_video.py # 引擎(直连官方 REST,零依赖)
├── mcp_server.py # MCP server(可选)
├── LICENSE
├── README.md
├── pyproject.toml
└── docs/
├── publish.md # 注册表提交清单
└── pitfall-archive.md # 踩坑档案SKILL.md 的 description 使用工具无关的触发语(如 “generate a video with PowerTokens”),不含任何单一 agent 专有字眼,因此可被 40+ agent 通用。
14. 接入方式 B:MCP server
仅 MCP server 需要 mcp 依赖(见 §7 方式二)。运行:
python mcp_server.py # stdio;agent 客户端自动拉起在各 MCP 客户端的配置里加上(把路径换成你的绝对路径,并带上 Key 环境变量):
{
"mcpServers": {
"powertokens-video": {
"command": "python",
"args": ["/abs/path/to/powertokens-video/mcp_server.py"],
"env": { "POWERTOKENS_API_KEY": "sk-pt-xxxx" }
}
}
}各客户端配置入口:
客户端 | 入口 |
Claude Desktop | 设置 → 开发者 → Edit Config(claude_desktop_config.json) |
Claude Code |
|
Cursor | Settings → MCP → Add |
Trae | 设置 → MCP → 添加 |
VS Code (Copilot) | 命令面板 → MCP: Add Server |
Windsurf / Cline / Zed | 对应 MCP 配置面板 / JSON |
MCP 暴露的工具
工具 | 说明 |
| 检查 API Key 是否就绪 |
| 列出模型 + 定价 + 参数; |
| 估算一次生成消耗(美元) |
| 生成视频(异步自动轮询) |
| 生成图片(同步) |
| 生成 Seedance 视频(独立类型) |
注:
upload(资产上传)目前仅 CLI 提供,MCP 工具未暴露;Seedance 图生视频所需的asset://可先通过 CLIupload拿到,再传给generate_seedance的first_frame。
15. 定价与消耗估算
视频基于 PT 预扣单价估算;系数:时长线性(5s→10s = ×2),1080p = 720p ×2。 例:
seedance-1-5-pro-2512155s/720p = $0.247 → 10s/720p = $0.494 → 5s/1080p = $0.494。图片按张计费,PT 未开放单价 API,表中标
n/a,以仪表盘为准。estimate子命令只估算、不扣费,也不进入生成流程。PT 额度按美元计;生成前服务端会做
pre-consume quota failed预扣校验——校验不通过不会扣费。
16. API 直连参考
所有端点 Base:https://api.powertokens.ai,鉴权:Authorization: Bearer <POWERTOKENS_API_KEY>。
用途 | 方法 + 路径 | 要点 |
提交视频 |
| body: |
轮询视频 |
| 状态 |
文生图 |
| OpenAI 风格,同步返回 |
列出可用模型 |
| 返回当前 Key 可调用的模型列表(用于 auto 候选 / 预校验) |
上传资产 |
| 异步:返回 |
常见错误:
cannot unmarshal number into ... seconds of type string:服务端seconds是enum<string>,必须传字符串(引擎已处理)。pre-consume quota failed:余额不足,预扣校验未通过,未扣费。BytePlus video models only accept media:多为传了无效/假asset://导致(详见 §10.3)。404于/v1/images:正确路径是带/generations后缀的/v1/images/generations。
17. 常见问题 / 排错
Q:视频生成一直停在某个状态?
A:视频是异步生成,真实出片 1–3 分钟。脚本每 10s 轮询,默认总上限 600s;超时可加 --timeout。若长时间 unknown,多半是服务端排队,可稍后拿 task_id 用 GET /v1/videos/{id} 复查(后续版本会补 status 子命令)。
Q:图片 URL 打不开?
A:data[].url 是临时签名地址(约 24 小时)。请及时用 --no-download 之外的默认行为下载,或自行 curl 保存。
Q:Seedance 提示要签协议?
A:去 https://powertokens.ai/assets-library?tab=1 手签,然后 python pt_video.py seedance enable。
Q:为什么我的 auto 没选到 Seedance?
A:Seedance 是独立类型,普通 video 的 auto 不含它;要显式 --type seedance。
Q:跨账户能用同一个 asset id 吗? A:可以(见 §11)——asset id 跨账户可解析,但注意安全含义。
Q:MCP server 启动报缺 mcp?
A:pip install -e ".[mcp]" 或 pip install "mcp[cli]>=1.2"。
18. 已知限制与路线图
轮询熔断:429 退避 / 5xx 熔断为已知待办(见
docs/pitfall-archive.mdA.02/A.03)。status子命令:按task_id单独复查状态未实现。图片单价:PT 未开放单价 API,
estimate对图片返回n/a。Seedance 协议无 API 签署:只能仪表盘手签 + 本地标记近似。
结果视频直连下载:部分 result URL 在本机直连 R2 可能返回 403(桶热链/访问策略),生成任务 server-side 完成不受影响;下载链路策略待进一步确认。
19. 贡献
欢迎 Issue / PR。改动请保持「引擎单一真相源」原则:CLI / SKILL / MCP 三处共用 pt_video.py,不要在 MCP 或 SKILL 里重复实现生成逻辑。新增踩坑请同步更新 docs/pitfall-archive.md。
20. License
21. Changelog
0.4.1 — 纠正「Seedance 文生视频必须带 media」误判(实测纯 prompt 可行);补充跨账户资产共享发现(A.14);
upload资产上传闭环;文档对齐。0.4.0 — Seedance 拆为独立类型(
image/video/seedance并列);协议「本地标记 + 报错回退」开通流程;force_asset媒体校验;MCPgenerate_seedance工具。0.3.0 — 补齐图片生成(同步
/v1/images/generations);REST 直连替代 CLI。0.2.0 — 异步视频提交 + 轮询;
auto模型选择;定价/参数查询。0.1.0 — 初始引擎骨架。
This server cannot be deployed
Maintenance
Related MCP Connectors
Generate images, video, audio and short films with 140+ AI models from any MCP client.
- Flux AIOAuthart.fluxaipro
Generate images, videos and music with model discovery, cost estimates and asynchronous results.
Create and manage AI image and video generations through Quriov's fixed public MCP tools.
AI video and image generation for any MCP client: Veo, Kling, Seedance, Grok via one OAuth login.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables MCP-compatible clients to generate and upscale AI images, videos, music, and sound effects, manage generation jobs, access model catalogs, and track credits.3MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-compatible clients to generate images and videos, synthesize speech, clone and design voices, and create related media outputs.188 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-compatible clients to generate images and videos, synthesize speech, clone and design voices, and dynamically configure API interactions.188 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI clients to create images and videos through a hosted remote MCP endpoint with browser OAuth, letting users discover available models and Quick Apps, quote credit costs, upload reference files, submit single or batch generation tasks, and retrieve finished results. It also supports task tracking, retries with consistent request IDs, and ranged downloads, while spending account credits only on actually submitted jobs.MIT