它解决什么问题
教练和教育者每天都在评论区和私信里回答同样的问题,尽管视频里早就讲过。受众找不到对应的视频,创作者也无法规模化地一对一回复。频道聊天机器人能用创作者的口吻作答,并把观众引回原始内容。
第一版应该包含哪些功能
- 答案只来自创作者自己的视频
- 链接到具体视频和时间戳的引用
- 新视频发布后自动更新
- 有提问次数限制的免费层,以及面向会员的付费层
- 可嵌入创作者网站或社群的小组件
分步实现指南
- 01
导入频道
解析频道或精选播放列表,把所有视频 ID 发送到 /batch,并启用 format.paragraphs 和 format.timestamp。
- 02
分块并嵌入
把每个段落连同视频标题、URL 和开始时间一起存储,并在向量数据库中生成向量嵌入。
- 03
检索并作答
针对每个问题,检索最相关的段落,让 LLM 只根据这些段落作答,并引用视频和时间戳。
- 04
保持更新
定时检查频道的新上传视频,只把新字幕加入索引。
入门代码
这个创意基于“方案 3:把播放列表批量导入知识库”模式。替换成你自己的频道、提示词和存储即可。
import requests
API = "https://www.youtubetranscript.dev/api/v2"
HEADERS = {"Authorization": "Bearer yt_sk_live_YOUR_KEY"}
playlist = requests.post(f"{API}/playlists/resolve", headers=HEADERS,
json={"playlist_url": "https://www.youtube.com/playlist?list=PLAYLIST_ID",
"limit": 100}).json()
ids = [v["video_id"] for v in playlist["items"]]
batch = requests.post(f"{API}/batch", headers=HEADERS, json={
"video_ids": ids,
"format": {"timestamp": True, "paragraphs": True},
}).json()
# Large batches run async: poll GET /batch/{batch_id} until status is "completed"
for r in batch.get("results", []):
if r["status"] == "completed":
for p in r["data"]["transcript"].get("paragraphs") or []:
store(video_id=r["video_id"], start=p["start"], text=p["text"]) # your vector DB如何赚钱
向创作者收取托管聊天机器人的月费,或在他们向受众销售的付费层中分成。会员社群和课程卖家可以把它作为高级权益打包。
需要避开的坑
- 让模型用通用知识作答:限定它只能使用检索到的字幕段落,这样听起来才像创作者本人。
- 使用会把句子切断的固定长度分块:按段落分组能保持上下文完整。
- 未经创作者同意就上线:要和创作者一起做,毕竟那是他们的声音和内容。
关于这个创意的问题
能用 YouTube 频道训练聊天机器人吗?
能。不需要训练模型,而是检索相关的字幕段落,让 LLM 基于这些内容作答。这就是检索增强生成(RAG)。
如何让聊天机器人引用来源?
为每个字幕块存储视频 URL 和开始时间,并指示模型在每个回答中附上它们。
为整个频道建立索引要花多少钱?
有原生字幕的视频每个消耗 1 个额度。一个有 300 个视频的频道,首次建索引约需 300 个额度,之后只需为新上传的视频付费。