素材工房 · 搜索优化 · 设计草案 v2

快速搜索 + 多源:两个改动怎么落

2026-07-07 · material-board-cc 起草 · v2 已融合 tobatsu-cc2 的设计意见与 TikHub 端点实测 · 环境:st(测试流量)

现在搜素材只有一条路:发起研究任务,agent 搜 TikTok、转存、逐条分析,几分钟后回来一批入库的样片。这份方案加两样东西:一个秒级返回的快速搜索(新 tobatsu workflow,跳过重活),和给现有搜索加更多平台源

01 · 现状

现在的搜索是怎么跑的

1 个
搜索源(TikTok via TikHub)
分钟级
出结果耗时(含转存+分析)
2 条
链路共用同一搜索内核
6 条
每次研究返回的样片数

02 · 方案总览

两个改动,各管一件事

A · 快速搜索(新东西)
  • UI 上加 fast 切换 + 源选择(TikTok / 抖音 / 小红书 / YouTube…)。
  • 背后是一个新 tobatsu workflow:只做「翻译意图 → 调 TikHub 搜索」,把候选列表直接回调回来。
  • 跳过三样重活:不转存 R2、不跑 Gemini 分析、不入库。
  • 用途:先快速看料,看中了再"转正"入库走完整流程。
B · 现有搜索加源(改现有)
  • viral-trawler-test skill 里加 TikHub 其他平台端点:同一把 key、同一个返回结构,改动是文档级的。
  • 研究任务和每日爬取自动获得新源。
  • UI 的源选择同样传给完整搜索,agent 按你选的源挑端点。
  • 前置:先实测这把 TikHub key 开通了哪些平台(探测任务已请 tobatsu 侧跑)。

03 · 快速搜索

fast 这条路怎么走

POST DISPATCH SEARCH CALLBACK USER 浏览器 fast 开关 + 源选择 WORKER material-board 鉴权 · 派发 · 存态 NEW · TOBATSU2 fast_search 工作流 意图→关键词→搜索 API TikHub tiktok · 抖音 · xhs · yt RESULT 候选列表 JSON 回 Worker · 不入库 LEGEND 新增 workflow(焦点) 本仓代码 结果数据 外部 API 用户侧 快速搜索主路径

和完整链路相比,fast 这条路在拿到 TikHub 结果后就直接回调——没有 R2 转存、没有 Gemini 分析、没有入库。这三步正是分钟级耗时的来源,砍掉之后剩下的只有 agent 翻译意图和一次 HTTP 搜索。

完整 vs 快速,一张表看差别

步骤完整搜索(现有 preview_research)快速搜索(新 fast_search)
意图 → 关键词agent 翻译agent 翻译(同款逻辑)
TikHub 搜索有,支持多源参数
mp4 转存 R2有(拿永久地址)无 — 展示用 share_url + 封面
Gemini 视频分析有(逐条看片写判断)无 — 只有平台自带的标题/数据
入素材库6 条全入 hot_materials不入库,结果暂存展示
耗时(tobatsu 实测量级)分钟级p50 约 1–2 分钟;打包 runner 后可压到 30–60s(见下)
结果去向素材卡片,可直接加入成片候选列表;勾选"转正"后走一次完整重活入库
取舍说明 快速搜索回来的是"生肉":TikTok 系的封面/播放地址是签名 CDN,小时到天级就过期,所以列表展示即用,用户收藏/入库那一刻才由 material-board 把这一条转存 R2——重活只花在你真正要的素材上,这是这个设计省时间的本质。

快有三档,分界线在"意图翻译"(tobatsu-cc2 实测意见)

档位形态端到端说明
本期tobatsu workflow · agent 单轮p50 约 1–2 分钟,p95 3 分钟+容器启动 + 排队 10–30s 是固定开销;agent 翻译意图 + 打 2–3 发 TikHub 30–90s
优化同 workflow,逻辑打包成 python runner,agent 只执行一条命令30–60s 地板去掉 LLM 自由发挥的不确定性;kamila 系已验证的模式
终局material-board 后端直调 TikHub(不经 tobatsu)<5s只有明确 keyword+源时才成立;自然语言 brief 的翻译步在哪边都要 LLM。搜索核心从第一天就写成独立 .py,将来搬过去零重写

04 · 契约草案

新 workflow:material_board_fast_search

派发(material-board → tobatsu2)

// POST /tasks · task_type: material_board_fast_search + tag:"test"(测试流量)
{
  "brief":          "俄罗斯户外生存题材热梗,末世建造感",
  "sources":        ["tiktok", "douyin"],   // UI 源选择,缺省 ["tiktok"]
  "count":          20,                      // 每源 top 20,多源总 cap 50(一发=一次计费,翻页费用线性涨)
  "region":         "US",                    // 可选
  "callback_url":   "https://sozai-st.../api/fast-search/:id/result",
  "callback_token": "..."
}

回调(tobatsu2 → material-board)

{
  "task_id": "...",
  "mode": "fast_search",
  "sources_searched": ["tiktok", "douyin"],
  "per_source_counts": { "tiktok": 20, "douyin": 18 },
  "failed_sources": [],                // 部分源挂只降级,不整单失败
  "candidates": [{
    "source":       "tiktok | douyin | youtube",
    "id":           "aweme_id / video_id",  // 平台稳定 id,"转正"用
    "title":        "...",
    "author":       { "name": "...", "id": "..." },
    "stats":        { "plays": 0, "likes": 0, "comments": 0, "shares": 0 },
    "duration_seconds": 34,
    "share_url":    "跳转用,稳定",
    "cover_url":    "封面 CDN,签名过期(小时~天级)",
    "published_at": "ISO8601",
    "search_meta":  { "keyword": "...", "sort": "...", "cursor": 0 }
  }]
}

material-board 侧新增:一个 fast-search 状态表(或复用 slot 加类型字段)、回调端点、结果面板 UI、以及"转正入库"按钮(对单条候选派一次现有的转存+分析)。具体表结构等 tobatsu 侧契约意见回来后定。

05 · 现有搜索加源

给 viral-trawler 加平台,三步走

TikHub key 探测结果(tobatsu-cc2 已实跑,2026-07-07)

平台可用端点结果说明
TikTokGET .../tiktok/app/v3/fetch_video_search_result✓ 200现役对照组,不动
抖音POST .../douyin/search/fetch_video_search_v2✓ 200用这个;旧 app/v3 GET 是 TikHub 上游坏(400,非权限),skill 里标"勿用"
YouTubeGET .../youtube/web_v2/get_shorts_search(优先)+ 通用 web/search_video✓ 200素材场景优先 shorts
小红书web_v3/fetch_search_notes✗ 403key 没开 XHS scope,要去 TikHub 后台开通/加购;开通前 UI 不放小红书或标"待开通"

分页参数三平台三样,skill 端点表必须写死,不然 agent 翻页会瞎猜:TikTok 用 offset、抖音 v2 用 cursor(要回传 search_id)、YouTube 用 continuation_token。一个小尾巴:这次打的是 viral-trawler 本地 .env 的 key,和 tobatsu runtime-env 里那把大概率同一把,收尾时在容器里补一发确认。

落地三步

步骤做什么改哪里状态
1 · key 探测实测各平台端点开通情况tobatsu 侧直打 TikHub✓ 已完成(见上表)
2 · skill 加端点SKILL.md 加「平台端点表 + 每平台单独的响应→candidate 映射 + 分页语义」,含 id 前缀(dy_/yt_)、source 显式标注;抖音 v2 的 aweme 结构与 TikTok 相近但统计字段名有差,YouTube shorts 完全另一套要单独 parseviral-trawler-test(纯文档改动,workflow 零改)可以开做
3 · 源参数透传UI 源选择跟着研究任务一起传,agent 按 sources 挑端点;不传维持 TikTok 缺省material-board 派发 inputs + skill 里的路由指导随 fast 搜索一起做

06 · 环境与开放问题

在哪试、还有什么没定

环境事实(已核实)

已定 / 待定

一句话总结 A(fast)是新增一条轻链路,B(加源)是把现有链路的弹药库扩容;两者共用同一本搜索手册(viral-trawler skill),所以先把 key 探测和 skill 端点表做掉,fast workflow 和 UI 再压上去。