在 AI 客户端里使用

两种办法:让 AI 帮你写 REST 调用;或者(以后)让 AI 客户端通过 MCP 直接调用。

1. 选一种办法

提示词 · 粘贴到你的 AI 客户端对话里
Write code that calls a captions HTTP API.

Base URL: https://api.textfrom.dev
Auth: send my key from the environment variable TEXTFROM_API_KEY
as a Bearer token. Never ask me to paste the key here.

GET /v1/youtube/videos/{id}/transcript
  query: lang (comma list, tried in order), kind (manual,auto), format
On success read data.delivered.lang and data.delivered.kind.
On error read error.category, error.code, error.retryable.

Rules:
- Never pick a different language than I list.
- language_not_available: show details.available to me; do not retry.
- retryable=true: wait for the Retry-After header, then retry a few times.
- rate_limit_exceeded or quota_exceeded (429): wait for Retry-After; never loop.
  The free plan allows 1,000 requests a month and 10 a minute.
- Translation is not supported. Do not offer it.
- An empty or failed result is never "this video has no captions".

提示词只描述能力和限制:没有密钥、没有客户数据、也没有“替我注册”这类指令。选定域名后服务地址可能变化。

2. 一次对话大概是这样

编造的示例:AI 如实说出实际返回的语言,出问题时不乱猜。

示例编造的对话 · 没有调用任何服务
你取这个视频的日语字幕:VIDEO_ID。
工具调用
get_transcript(lang=["ja"], kind=["manual","auto"])
→ error.code = language_not_available
→ details.available = en (manual), es (auto)
AI这个视频没有日语字幕,只有英语(人工)和西班牙语(自动)。要用哪一个?我不会自己换语言。

3. 密钥怎么保管

要这样

  • 把密钥放进环境变量,或客户端的密钥设置。
  • 每个工具用单独的密钥,出事只撤销一个。

不要这样

  • 把密钥贴进对话、提示词、文档或网址。
  • 让 AI 替你注册或创建密钥。

4. 出问题时 AI 该怎么说

响应AI 应该说AI 不该
language_not_available有哪些语言,请用户选。自己换一个语言。
retryable: true临时故障,等一会儿再试。说视频没有字幕。
unsupported这个请求(例如语音转写)不支持。拿原文冒充译文。
quota_exceeded
rate_limit_exceeded
额度或频率到上限了;说什么时候重置,或等 Retry-After。循环重试。
invalid_token密钥缺失或不对,请检查设置。让用户把密钥贴出来。
  • language_not_available
    说有哪些语言,请用户选;不要自己换语言。
  • retryable: true
    临时故障:等一会儿再试;不要说视频没有字幕。
  • unsupported
    说明不支持;翻译失败就说失败,不要拿原文冒充译文。
  • quota_exceeded / rate_limit_exceeded
    说额度或频率到上限了、什么时候重置,或等 Retry-After;不要循环重试。
  • invalid_token
    说密钥缺失或不对;不要让用户贴密钥。
规划中 给 AI 工具读的文档文件(如 llms.txt)和 OpenAPI 文件。目前都还没有。