mcpField
L
laohan-douyinsousuo

laohan-douyinsousuo

github.com/hanzhcn营销与增长15169 次安装今天更新
代码仓库

关于 laohan-douyinsousuo

laohan-douyinsousuo 是用于工作流的抖音搜索技能,面向需要获取并留存搜索证据的内容研究流程。它调用宿主已安装且登录的 OpenCLI,并通过确定性包装器生成 JSON 与 Markdown 证据,不自带爬虫或浏览器。

主要功能

  1. 01通过 OpenCLI 搜索抖音
  2. 02支持单次或多关键词查询
  3. 03生成 JSON 与 Markdown 证据
  4. 04保留结果字段及可用互动数据
  5. 05预检失败时记录不可用状态

适用场景

  1. 01为内容选题收集抖音搜索样本
  2. 02将搜索结果保存到 episode 研究目录
  3. 03记录失败或空结果供后续流程判断

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hanzhcn/laohan-skills --skill laohan-douyinsousuo

安装后在 Claude Code 中输入/laohan-douyinsousuo确认已加载。

附带文件scripts/search-evidence.mjs

详细介绍

来自项目 README

抖音搜索

这是工作流里的抖音搜索编排接口。只使用宿主已安装且已登录的 OpenCLI,不自带爬虫、浏览器、cookie 复制、独立 profile 或 Python runtime。

输入

  • query:必填,搜索关键词。
  • limit:可选,1—30,默认 10。
  • episode:可选,本期 episodes/<slug> 路径;三稿研究阶段用互斥的--workspace <研究目录>复用同一包装器,不伪造episode。只允许写 00-抖音搜索证据.json 与 .md,不得写 candidates、source-health 或 00-选题.*。

执行

1. 预检
opencli doctor
opencli douyin whoami -f json

Browser Bridge 可连接且 logged_in=true 时执行搜索。任一预检失败时,episode 模式仍写出 UNAVAILABLE 证据与原始错误供①继续判断;独立搜索请求则如实报告当前不可用。不要抽取或复制 Chrome cookie,也不要安装新工具。

2. 搜索

Episode 模式用确定性包装器一次执行 1—3 个短名单查询并原子写 JSON/Markdown:

node ~/Documents/laohan-skills/laohan-douyinsousuo/scripts/search-evidence.mjs \
  --episode episodes/<slug> \
  --query "关键词一" \
  --query "关键词二" \
  --limit 10

独立单查询可直接执行:

opencli douyin search "$QUERY" --limit "$LIMIT" -f json

结果必须是 JSON 数组,并逐条保留 OpenCLI 返回的 rank、desc、author、url、aweme_id、发布时间及可用互动字段。稳定 id 优先使用 aweme_id 或 URL 中的 /video/<id>;两者都没有时才用 sha256(url + desc)[:12]。排名不得参与稳定 id;不要按缺失字段重排,也不要把 OpenCLI 的结果顺序描述成“按点赞排行”。

3. 失败降级

按顺序执行,成功即停:

  1. 同一命令加 --trace retain-on-failure,使用 OpenCLI autofix 修复现有 adapter;总尝试最多 3 次。
  2. 若 opencli doctor 仍正常但 adapter 持续失败,使用 opencli browser douyin-search bind 绑定用户当前已登录的抖音标签页,仅做读取和取证。执行浏览器降级前说明会操作当前标签页。
  3. 仍失败则记录失败层级和原始错误。episode 模式标记平台数据 UNAVAILABLE 并返回证据文件,不把它升级为①的卡点;独立搜索请求报告本次未取得结果。不得临时安装 DrissionPage、Playwright、浏览器或自制爬虫。

输出与判断

先展示搜索健康状态和实际返回条数,再展示结果表:

#作者点赞标题链接
1authorlikes/不可用descurl
  • 互动字段缺失写 null 并在 field_availability 标记 false;实际返回数字 0 则保留 0 并标记 true,不得混为一谈。
  • 返回空数组时写 EMPTY_OR_FIELD_UNAVAILABLE;不能据此断言抖音上没有相关内容。
  • 历史OpenCLI 1.8.6及本轮实测2.0.2的douyin search只提供搜索结果样本;2.0.2的部分命令使用{ok:true,data:...},包装器显式兼容该成功终态与旧数组/裸对象,ok:false不得记成功,合法空结果66单独记空。搜索量、供给总量、增长速度和官方内容缺口默认均为UNAVAILABLE;以后只有实际返回这些字段才使用,不从条数或点赞反推。hashtag hot为全站热点,历史hashtag关键词失败不能当作新版能力结论,命令行为以本机实测为准。
  • 事实性结论必须回到原视频或权威来源核验;搜索结果只能作为发现证据。
  • 用户单独要求搜索分析时,可总结结果中可见的内容类型和重复角度;不得决定工作流最终选题,不得补造搜索结果未提供的事实。
  • 指定 episode 时必须使用 runtime-locked 包装器,先写机器真源 00-抖音搜索证据.json,再从它生成 .md;Markdown 不得新增 JSON 没有的结论。

Episode JSON 最小合同:

{
  "schema_version": 1,
  "collected_at": "ISO-8601",
  "executor": {
    "name": "opencli",
    "version": "实际版本",
    "doctor_status": "PASS|FAILED",
    "logged_in": true,
    "availability_status": "AVAILABLE|UNAVAILABLE"
  },
  "queries": [{
    "query": "关键词",
    "command": "opencli douyin search ... -f json",
    "attempted_at": "ISO-8601",
    "status": "OK|EMPTY_OR_FIELD_UNAVAILABLE|FAILED",
    "result_count": 1,
    "results": [{"id":"稳定id","rank":1,"desc":"原字段","author":"原字段","url":"https://..."}]
  }]
}

OK 必须 result_count > 0 且等于 results 长度;EMPTY_OR_FIELD_UNAVAILABLE 必须为 0 和空数组;FAILED 必须为 0、空数组并有 error。全部查询 FAILED 或预检失败时写 availability_status: UNAVAILABLE,仍完成 episode 证据落盘;①不得据此推断平台没有需求。

executor.availability_status表示本次搜索至少取得一个有效终态(可含合法空结果),不表示有市场需求;预检可达性单独看doctor_status/logged_in。成功退出0却无JSON是协议失败,退出66是明确合法空结果;查询值不得是-f或--limit等选项。workspace与episode使用同一规则,失败覆盖当前文件如实表示最近尝试,当前下游按研究目录及文件SHA绑定,不把旧成功静默当新证据。

边界

  • 下载视频、博主作品列表:用 /laohan-xiazai。
  • 评论、发布、账号运营:用 /laohan-yunying 或对应 OpenCLI adapter。
  • 禁止 DrissionPage、browser_cookie3 cookie 注入、独立 user-data-dir、额外 Chrome/Chromium、后台自动发布或回复。

评论

支持 Markdown