> 特看视频 API 的模块化 Python 工具包。
✨ 生成 · 编辑 · 协作 —— 一站搞定 ✨
> 你不需要了解任何 API 细节。只需描述你想要什么——Agent 会阅读下方技术文档并自动处理一切。
单项任务——一句话,一个结果:
组合工作流——自由串联各项能力:
这些能力可以任意组合。例如,告诉 Agent"用这张照片做一套完整的产品发布素材",它会将去除背景、商品展示、数字人视频和图片生成串联成一条流水线——全在一次对话中完成。更多示例:
> 始终使用 scripts/ 中的 Python 脚本。 这些脚本处理了身份验证、S3 文件上传、自动轮询、超时恢复和结构化错误处理——如果绕过它们直接用 curl 或 HTTP 调用,会丢失所有这些功能,而且仅在身份验证环节就可能失败。
pip install -r {baseDir}/scripts/requirements.txt
> 严禁向用户索要 API Key、UID 或任何凭证。用户没有这些东西,也无法自行获取。
> 授权链接只能通过运行 auth.py login 获得,用户没有其他渠道获取此链接。
Agent 必须遵守:
详细说明参见 references/auth.md。
> 安装依赖完成后,Agent 必须严格按以下步骤执行,不可跳过、不可改写、不可自行编写替代文案。
auth.py loginpython {baseDir}/scripts/auth.py login
命令会输出授权链接(格式如 URL: https://...),并尝试自动打开浏览器(无浏览器的环境下会静默跳过)。无论浏览器是否打开,都必须从输出中提取这个 URL,下一步要用。
> ⚠️ 极其重要 — 登录链接输出规则(必须逐字遵守):
> 1. 从步骤 1 的命令输出中找到 URL: https://... 那一行,提取完整的 URL
> 2. 将下方模板中的 (含尖括号)整个替换为该真实 URL,填入 Markdown 链接的圆括号内
> 3. 最终输出格式必须是 👉 点击此处完成登录授权
> 4. 禁止把 URL 单独裸露粘贴、禁止省略方括号文字部分、禁止用 < > 尖括号包裹 URL
> 5. 必须保持 描述文字 的完整结构,缺任何一部分都会导致链接失效
>⚠️ 微信平台发送方式强制规则
> ✅ 正确示例:
> ```
> ```
> ❌ 错误示例(裸 URL,没有方括号包裹):
> ```
> https://api.tekan.cn/oauth/authorize?code=abc123
> ```
> ❌ 错误示例(丢失了方括号描述文字):
> ```
> (https://api.tekan.cn/oauth/authorize?code=abc123)
> ```
> ❌ 错误示例(占位符未替换):
> ```
> ```
将 替换为步骤 1 获得的实际授权链接后,原样发送以下消息给用户:
安装完成,特看视频技能已连接到你的智能助手。
点击下方链接完成登录,登录后将解锁以下能力:
[👉 点击此处完成登录授权](<LOGIN_URL>)
🎬 视频生成
文字转视频、图片转视频、参考视频生成,自动配音配乐。
视频模型:地表最强模型S2.0-白名单版(支持上传真人图) · 拟真世界模型 V2 · 可灵 V3 · 电影级画质模型 V3.1 · Vidu Q3 Pro · 万象 V2.6
🖼 AI 图片生成与编辑
文字生图、AI 修图、风格转换,最高支持 4K。
图片模型:全能图片模型 V2 · Seedream 5.0 · 强语义理解模型 V1.5 · 照片级写实模型 V4 · 强上下文一致性模型 pro
🧑 口播数字人
上传一张照片 + 文案,自动生成真人口播视频,支持多语种。
✂ 背景移除
一键抠图,产品图、人像、任意图片秒去背景。
🔺 产品模特图
把你的产品图放到模特身上,自动生成带货展示图。
🎙 语音与配音
文字转语音、声音克隆,支持多语种配音输出。
登录完成后回我一句"好了",我马上继续。
禁止行为:
必须替换为真实 URL(保留 👉 点击此处完成登录授权 的完整 Markdown 链接结构),不可留空或写占位符[...]() 中的任何部分用户在浏览器中完成登录和授权后,会回复"好了"。此时 auth.py login 应已自动检测到授权并保存凭证到 ~/.tekan/credentials.json。
python {baseDir}/scripts/auth.py status
确认输出包含 Logged in 后,告知用户"登录成功,所有功能已解锁",即可开始正常使用。
> 以下规则适用于所有生成模块(avatar4, video_gen, ai_image, remove_bg, product_avatar, text2voice)。
run 开始 — 它会提交任务并自动轮询直到完成。这是默认且正确的选择,几乎适用于所有场景。query 仅用于恢复 — query 仅在 run 已超时且你有 taskId 需要恢复时有用,或用户主动提供了已有的 taskId。对新请求直接用 query 会失败,因为没有任务可轮询。query 持续轮询 — 它每隔 --interval 秒检查一次状态,直到状态为 success 或 fail,或 --timeout 到期。不会只检查一次就停止。query 也超时(退出码 2),增加 --timeout 并使用相同的 taskId 重试。除非任务确实失败,否则不要重新提交。决策树:
→ 新请求? 使用 `run`
→ run 超时了? 使用 `query --task-id <id>`
→ query 也超时了? 使用 `query --task-id <id> --timeout 1200`
→ 任务状态=fail? 用 `run` 重新提交
任务状态:
| 状态 | 说明 |
|---|---|
| -------- | ------------- |
init | 任务已排队,等待处理 |
running | 任务正在处理中 |
success | 任务成功完成 |
fail | 任务失败 |
> 每个生成任务都必须包含 --board-id。缺少看板 ID 会导致用户无法在网页上查看和编辑结果。
board.py list --default -q 获取默认看板 ID("My First Board")。每个会话只需执行一次。不可跳过此步骤。--board-id (avatar4.py、video_gen.py、ai_image.py、product_avatar.py、text2voice.py)。boardTaskId,按下方「视频/图片结果模板」用 Markdown 链接展示项目链接(勿粘贴裸 URL,避免长链接被截断无法点击)。每次任务完成都必须展示此链接,告诉用户可以点击查看和编辑结果。board.py create --name "..." 并将返回的看板 ID 用于后续任务。board.py list --default -q。会话流程:
1. BOARD_ID = $(board.py list --default -q)
2. avatar4.py run --board-id $BOARD_ID ...
3. video_gen.py run --board-id $BOARD_ID ...
4. (结果中显示包含 boardTaskId 的编辑链接)
| 模块 | 脚本 | 参考文档 | 说明 |
|---|---|---|---|
| -------- | -------- | ----------- | ------------- |
| Auth | scripts/auth.py | auth.md | OAuth 2.0 设备授权流程 — 浏览器登录,保存凭证 |
| Avatar4 | scripts/avatar4.py | avatar4.md | 从照片生成数字人视频;list-captions 查看字幕样式 |
| Video Gen | scripts/video_gen.py | video_gen.md | 图片转视频、文字转视频、Omni 参考(从参考视频/图片/音频/文字生成视频) |
| AI Image | scripts/ai_image.py | ai_image.md | 文字生图和 AI 图片编辑(10+ 模型) |
| Remove BG | scripts/remove_bg.py | remove_bg.md | 去除图片背景 — 商品模特图工作流的第一步 |
| Product Avatar | scripts/product_avatar.py | product_avatar.md | 商品模特展示图;list-avatars/list-categories 浏览模板 |
| Text2Voice | scripts/text2voice.py | text2voice.md | 文字转语音音频 |
| Voice | scripts/voice.py | voice.md | 声音列表/搜索、声音克隆、删除自定义声音 |
| Board | scripts/board.py | board.md | 看板管理 — 整理结果,在网页上查看/编辑 |
| User | scripts/user.py | user.md | 积分余额和使用记录 |
| 模型名称映射 | — | model_mapping.md | 模型 API 名称与用户展示名称的映射规则 |
> 请阅读各模块的参考文档了解用法、选项和代码示例。
> 本地文件(图片/音频/视频)作为参数传入时会自动上传——无需手动上传步骤。
> 核心原则: 从用户意图出发,而非从 API 出发。
> 分析用户想要实现什么,然后选择合适的工具、模型和参数。
>
> 语言规则(强制): 用户用什么语言沟通,生成内容就用什么语言。用户说中文,则 --text(TTS 文案)、--prompt(提示词)、脚本内容等全部使用中文。除非用户明确要求使用其他语言。
每次用户请求内容时,识别以下维度:
| 维度 | 自问 | 兜底方案 |
|---|---|---|
| ----------- | ------------- | ---------- |
| 输出类型 | 图片?视频?音频?组合? | 必须询问 |
| 用途 | 营销?教育?社交媒体?个人? | 通用社交媒体 |
| 源素材 | 用户有什么?缺什么? | 必须询问 |
| 风格/调性 | 专业?休闲?活泼?权威? | 专业且友好 |
| 时长 | 输出应该多长? | 片段 5–15 秒,数字人 30–60 秒 |
| 语言 | 什么语言?需要字幕吗? | 必须匹配用户的语言(中文用户 → 中文提示词/文案/脚本) |
| 渠道 | 将在哪里发布? | 通用 |
用户需要什么?
│
├─ 真人对着镜头说话(数字人)?
│ → avatar4 或 video_gen 的原生音频模型
│
├─ 把一张图片变成视频片段?
│ → video_gen --type i2v
│
├─ 纯文字生成视频?
│ → video_gen --type t2v
│
├─ 基于参考素材生成新视频(风格迁移、编辑)?
│ → video_gen --type omni
│
├─ 从文字提示生成图片?
│ → ai_image --type text2image
│
├─ 编辑/修改现有图片?
│ → ai_image --type image_edit
│
├─ 去除图片背景(如商品抠图)?
│ → remove_bg
│
├─ 将商品放到模特/数字人场景中?
│ → product_avatar(如果商品有背景,先用 remove_bg)
│ → product_avatar list-avatars 浏览公共模板
│
├─ 浏览可用的字幕样式?
│ → avatar4 list-captions
│
├─ 文字转语音?
│ → text2voice
│
├─ 查找声音 / 列出可用声音?
│ → voice list
│
├─ 从音频样本克隆声音?
│ → voice clone
│
├─ 删除自定义声音?
│ → voice delete
│
├─ 管理看板 / 在网页上查看结果?
│ → board (list, create, detail, tasks)
│
├─ 组合需求(如数字人 + 产品片段)?
│ → 使用配方(见第三步)
│
└─ 超出当前能力范围?
→ 见下方能力边界
快速路由参考表:
| 用户说… | 脚本和类型 |
|---|---|
| ---------------------------------------------- | ------------- |
| "用这张照片和文字做一个数字人视频" | avatar4.py(直接传入本地图片路径) |
| "用这张照片和我的录音生成视频" | avatar4.py(传入本地图片 + 音频路径) |
| "把这张图片变成视频 / 图片转视频" | video_gen.py --type i2v(传入本地图片路径) |
| "生成一个关于…的视频" | video_gen.py --type t2v |
| "参考这张图片的风格生成新视频" | video_gen.py --type omni |
| "生成一张图片 / 文字生图" | ai_image.py --type text2image |
| "修改这张图片 / 换背景" | ai_image.py --type image_edit |
| "去除图片背景 / 抠图" | remove_bg.py |
| "把这个产品放到模特图上" | product_avatar.py(如果产品有背景,先用 remove_bg.py) |
| "有哪些商品模特模板?" | product_avatar.py list-avatars |
| "有哪些字幕样式?" | avatar4.py list-captions |
| "把这段文字转成语音 / 音频" | text2voice.py |
| "有哪些可用的声音?/ 找一个女声" | voice.py list --gender female |
| "用这段录音克隆声音" | voice.py clone --audio |
| "删除这个自定义声音" | voice.py delete --voice-id |
| "查看我的看板 / 看看生成了什么" | board.py list 或 board.py tasks --board-id |
| "创建一个新看板" | board.py create --name "..." |
| "看看我还剩多少积分" | user.py credit |
> 视频模型选择 — 参见 references/video_gen.md § 模型推荐。
> 图片模型建议: 所有图片任务默认使用全能图片模型 V2 — 综合最强模型,画质最佳,支持 14 种宽高比、最高 4K、编辑时支持 14 张参考图。参见 references/ai_image.md § 模型推荐。
> 商品模特图工作流: 为获得最佳效果,使用两步流程:先用 remove_bg.py 获取 bgRemovedImageFileId,再用 product_avatar.py 配合 --product-image-no-bg。使用 product_avatar.py list-avatars 浏览公共模板并获取 avatarId。参见 references/product_avatar.md § 完整工作流。
> avatar4 字幕样式: 使用 avatar4.py list-captions 查看可用字幕样式,然后通过 --caption 传入 captionId。
> 数字人建议 — avatar4 vs video_gen 原生音频:
> 部分 video_gen 模型(如地表最强模型S2.0-白名单版(支持上传真人图)、可灵 V3、电影级画质模型 V3.1)支持原生音频,可以生成比 avatar4 画质更好的数字人视频。但它们最大时长更短(5–15 秒)且价格明显更高。Avatar4 支持单段最长 120 秒,成本低得多。
> 经验法则: 目标视频时长小于 15 秒时,默认使用 video_gen 原生音频模型;否则默认使用 avatar4。但你应该始终向用户说明各自优缺点并征求偏好。
简单请求 — 用户需求明确,素材就绪 → 直接根据参考文档处理。
复杂请求 — 用户给出的是目标(如"做一个推广视频"、"解释 AI 的工作原理"),而非直接的 API 指令。遵循以下通用工作流:
avatar4(数字人)。video_gen --type i2v 或 omni。video_gen --type t2v。 标签以实现自然节奏。avatar4 任务的 120 秒限制,在自然句子边界处将其分成逻辑段落(如每段 60 秒)。使用 submit 命令并行提交任务,确保各段参数(声音/模型)一致,并按顺序交付。> 每个生成任务前都遵循此协议。
video_gen.py estimate-cost,图片任务使用 ai_image.py estimate-cost;avatar4 费用取决于视频时长;product_avatar 固定 0.5 积分;text2voice 固定 0.1 积分list-models 检查)> 严格遵守:对外展示用中文名,构造命令用 API 名。
完整映射表见 references/model_mapping.md。
--model 参数):使用 API 名称。Lite、Pro、Plus、Best — 不推荐、不使用、不提及。关键映射速查:
API 名称 → --model 参数 | 展示名称 → 对用户说 |
|---|---|
| --- | --- |
Standard | 地表最强模型S2.0-白名单版(支持上传真人图) |
Fast | 地表最强模型S2.0 Fast-白名单版(支持上传真人图) |
Kling V3 | 可灵 V3 |
Kling O3 | 可灵 O3 |
Sora 2 Pro | 拟真世界模型 2 Pro |
Veo 3.1 | 电影级画质模型 V3.1 |
Veo 3.1 Fast | 电影级画质模型 V3.1 fast |
Nano Banana 2 | 全能图片模型 V2 |
GPT Image 1.5 | 强语义理解模型 V1.5 |
Kontext-Pro | 强上下文一致性模型 pro |
Imagen 4 | 照片级写实模型 V4 |
> 模型名称必须使用展示名称,不得直接输出 API 名称。 映射规则参见 model_mapping.md。
任务完成后,Agent 必须按照以下模板向用户展示结果。将占位符替换为实际值。
视频结果模板:
🎬 视频已生成完成
[👉 点击播放/下载视频](<VIDEO_URL>)
· 时长:<DURATION>
· 画幅:<ASPECT_RATIO>
· 模型:<MODEL_NAME>
· 消耗:<COST> credits
[🔗 项目链接(查看/编辑/下载)](https://video.tekan.cn/board/<BOARD_ID>?boardResultId=<BOARD_TASK_ID>)
不满意的话可以告诉我,我帮你调整后重新生成。
图片结果模板:
🖼 图片已生成完成
[👉 点击查看/下载图片](<IMAGE_URL>)
· 分辨率:<RESOLUTION>
· 模型:<MODEL_NAME>
· 消耗:<COST> credits
[🔗 项目链接(查看/编辑/下载)](https://video.tekan.cn/board/<BOARD_ID>?boardResultId=<BOARD_TASK_ID>)
不满意的话可以告诉我,我帮你调整后重新生成。
模板使用规则:
必须使用展示名称(例如:显示「地表最强模型S2.0-白名单版(支持上传真人图)」而非"Standard",显示"强语义理解模型 V1.5"而非"GPT Image 1.5")说明文字,禁止单独粘贴裸 URL,以免长链接在对话中被截断导致无法点击 和 从任务返回结果中提取,项目链接不可省略参见 references/error_handling.md 了解错误码、任务级失败和恢复决策树。
| 能力 | 状态 | 脚本 |
|---|---|---|
| --------------------------------- | -------------- | ---------------------------------------------------------- |
| 照片数字人 / 口播视频 | 可用 | scripts/avatar4.py |
| 字幕样式 | 可用 | scripts/avatar4.py list-captions |
| 积分管理 | 可用 | scripts/user.py |
| 图片转视频 (i2v) | 可用 | scripts/video_gen.py --type i2v |
| 文字转视频 (t2v) | 可用 | scripts/video_gen.py --type t2v |
| Omni 参考视频 | 可用 | scripts/video_gen.py --type omni |
| 文字生图 | 可用 | scripts/ai_image.py --type text2image |
| 图片编辑 | 可用 | scripts/ai_image.py --type image_edit |
| 去除背景 | 可用 | scripts/remove_bg.py |
| 商品模特图 / 图片替换 | 可用 | scripts/product_avatar.py |
| 商品模特模板 | 可用 | scripts/product_avatar.py list-avatars / list-categories |
| 文字转语音 (TTS) | 可用 | scripts/text2voice.py |
| 声音列表 / 搜索 | 可用 | scripts/voice.py list |
| 声音克隆 | 可用 | scripts/voice.py clone |
| 删除自定义声音 | 可用 | scripts/voice.py delete |
| 看板管理 | 可用 | scripts/board.py |
| 看板任务浏览 | 可用 | scripts/board.py tasks / task-detail |
| 营销视频 (m2v) | 无模块 | 建议使用 特看视频 网页端 |
> 承诺一个没有对应模块的能力会导致工作流中途卡住,损害用户信任。如果请求超出上表范围,请建议用户使用特看视频网页端。
共 1 个版本