agentsclimarketplace

Laohan xiazai

Skill hanzhcn/laohan-skills/laohan-xiazai

从互联网拿内容一站式——视频下载、音频提取+转文字、字幕下载、评论采集、博主数据、网页抓取、搜索聚合、跨平台发布与数据分析,覆盖 30+ 平台(抖音/TikTok/YouTube/B站/小红书/知乎/公众号/视频号/微博/Reddit/HackerNews/即刻/知识星球/雪球/贴吧/头条/Twitter等),按降级链自动选择最优工具。Use when 用户说"下载""下个视频""帮我抓""抓一下""爬""爬取""读一下""读这个链接""看看这个网址""搜一下""搜索""查一下""帮我查""转文字""转录""听写字幕""评论""看看评论""抓评论""博主数据""博主更新""up主""谁谁最近发了什么""封面""发抖音""发小红书""定时发布""草稿""账号数据""粉丝数""给我截图""网页正文""这个页面讲了啥",或给出任意 URL / 短链接 / BV号 / 视频号链接 / 公众号文章链接 要求获取内容,或提到抖音/TikTok/YouTube/B站/小红书/知乎/公众号/视频号/微博 等具体平台名要求下内容、搜内容、读评论、抓数据,以及任何涉及从互联网拿内容的操作。优先按降级链选工具:搜索走 anysearch→opencli→agent-reach;下载按平台路由;抓取走 Scrapling→browser-use→web-access。From its SKILL.md

Install
npx -y skills add hanzhcn/laohan-skills --skill laohan-xiazai

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

4 things to look at

  • reads credentialsReads from 1 credential source: `SILICONFLOW_API_KEY`.
  • 11 stars11 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 8 commands, including `npm update -g @jackwener/opencli` and 7 more.
  • fetches URLsInstructs the agent to fetch 2 URLs, including https://r.jina.ai/<url> and 1 more.

SKILL.md

16.5 KB, ~5.5k tokens by cl100k_base, as published. Nobody here has run it

从互联网拿内容

按平台选择正确方法,一步到位。先看平台路由表,再读对应 reference 文件。平台方法不行时,按品类降级链逐层深入——每层解决不同问题,能浅不深。

核心理念

能浅不深——先用最轻的方法(HTTP 请求),不行再加重量(浏览器渲染→反检测→AI 操作→手动控制)。成本递增,每层解决不同问题,不要跳层。

不适用场景

  • 批量爬取/爬虫开发 → 这不是爬虫框架,是一次性内容获取工具
  • 需要登录才能访问且用户未登录 → 告诉用户先登录对应平台,web-access CDP 可以接管已登录的 Chrome
  • 下载付费内容/会员内容 → 不处理侵权场景

前置检查(定期更新,命令报错时必做)

opencli 高频发版(每周 2-3 次),但不需要每次使用都更新——定期(如每周)更新,或命令报错/找不到新命令时再更新即可。

第1步:更新 opencli(npm 包)

npm update -g @jackwener/opencli

第2步:更新 opencli skills(npx 管理)

npx skills update -g -y

opencli 自带 4 个辅助 skill,随 opencli 仓库更新但独立于 npm 包。必须单独更新:

  • opencli-usage:查命令总览,不确定有什么命令时用
  • opencli-autofix:命令失败时自动诊断修复(SELECTOR 错误、页面结构变化等)
  • opencli-browser:浏览器自动化操作
  • opencli-adapter-author:写新的 opencli 适配器

第3步:查最新命令比对文档

opencli <platform> --help

opencli 经常加新命令(如 4 月加了 bilibili download、xiaohongshu download),SKILL 文档可能滞后。发现新命令时更新对应 reference 文件。

第4步:检查 Browser Bridge

opencli doctor

3 项全绿(Daemon + Extension + Connectivity)才能用 Cookie 命令。失败时排障:

  1. opencli doctor 看哪项失败
  2. daemon 没跑 → opencli daemon restart(opencli 自带 daemon 管理,不要用 launchctl——opencli 不提供 LaunchAgent)
  3. daemon 在跑但扩展未连 → 让用户 chrome://extensions/ 关开 OpenCLI 扩展
  4. 都 OK 还连不上 → opencli daemon stop 后再跑任意 opencli <命令> 触发 daemon 自启

命令失败时的处理

  1. 先用 opencli-autofix skill 诊断:OPENCLI_DIAGNOSTIC=1 重跑失败命令
  2. 修复成功 → 更新 reference 文件记录正确方法
  3. 修复失败 → 按降级链切换方法

快速路由

场景 A:下载(视频/音频/字幕/博主数据)

先判断平台,再读对应的 reference 文件:

关键词平台reference 文件
抖音 / douyin抖音references/douyin.md
TT / tiktok / TikTokTikTokreferences/tiktok.md
YouTube / youtube / 油管YouTubereferences/youtube.md
B站 / bilibili / BVB站references/other-platforms.md
小红书 / xhs小红书references/other-platforms.md
知乎 / zhihu知乎references/other-platforms.md
公众号 / 微信文章微信公众号references/other-platforms.md
视频号 / 微信视频号微信视频号references/other-platforms.md

不确定平台时,默认尝试 yt-dlp <url>,失败再按平台路由。

references/douyin.md 除下载/转录外,还含发布自动化(publish/draft/update)与账号数据分析——发布需求直接读该文件对应章节。

场景 B:搜索/阅读(文章/评论/帖子/搜索结果)

不走 reference 文件,直接走平台封装降级。注意:场景B 的首选方法与第一层降级表(下载场景)不同——搜索/阅读优先用 opencli 搜索命令或 agent-reach,下载才用移动端 UA / fetch.py 等。

平台第1选第2选第3选第4选
公众号opencli weixin search/downloadagent-reachfetch.pyJina Reader
知乎opencli zhihuagent-reachJina Reader
小红书opencli xiaohongshuagent-reachScrapling stealthy
微博opencli weiboagent-reachJina Reader
B站opencli bilibiliagent-reachJina Reader
抖音opencli douyin search(视频流搜索)同命令 trace/autofixopencli browser 绑定当前登录页只读取证douyin-session(评论)
TikTokopencli tiktok(需 Browser Bridge)agent-reachScrapling stealthy
任意平台agent-reach(13平台搜索/阅读,含 GitHub/RSS/V2EX/Twitter/Reddit/小宇宙/Exa 等 opencli 不覆盖的)web-content-fetcherJina ReaderScrapling stealthy

agent-reach 触发场景:用户说"搜一下""读一下这个链接""这个公众号文章""帮我查",或给出非视频的社交平台链接。

降级链

第一层:平台路由(Layer 2 平台封装)

每个平台方法失败时,按以下顺序降级,直到成功或全部失败才报错给用户:

平台第1选第2选第3选最终兜底
抖音移动端 UA + iesdouyinopencli douyindouyin_tiktok_scraper(Python)+ douyin-session(评论)Scrapling stealthy
TikToktikwm APIyt-dlpopencli tiktok(需 Browser Bridge)
YouTubeyt-dlp(需 --cookies-from-browser chromeopencli youtube transcript(字幕)
B站opencli bilibili download(需 Browser Bridge)Jina Reader
小红书opencli xiaohongshu download(需 Browser Bridge)agent-reachJina Reader
知乎opencli zhihuJina Reader
公众号opencli weixin download(导出 Markdown)fetch.pyagent-reachJina Reader
视频号wx_video_download(MITM 代理)
未知平台yt-dlpScrapling MCP(get)Scrapling stealthyJina Reader

降级时注意:

  • 抖音不存在 yt-dlp 降级路径(已验证无效),不要浪费时间尝试
  • B站 yt-dlp 已被 HTTP 412 全面拦截(2026-04-28 验证),不要尝试 yt-dlp 下载B站视频
  • YouTube 无 cookies 会被 bot 检测拦截,必须加 --cookies-from-browser chrome
  • 每步失败后简要告诉用户换了个方法,不要静默切换
  • 全部失败时,告诉用户具体哪步失败了、可能的原因、建议用户做什么

第二层:品类降级(平台路由全部失败时)

平台方法全部失败后,按能力从轻到重逐层深入。每层解决一个不同的问题:

平台封装已试过(opencli / agent-reach / yt-dlp 全部失败)
  ↓ 问题:普通网页抓取即可
轻量抓取 → Scrapling MCP get(普通 HTTP 请求,无 JS 渲染)
  ↓ 问题:页面需要 JS 渲染
JS 渲染抓取 → Scrapling MCP fetch(Playwright 浏览器渲染)
  ↓ 问题:被反爬拦截
反检测抓取 → Scrapling stealthy_fetch(绕过检测 + 提取内容)
  ↓ 问题:页面结构未知,写不出选择器
AI 浏览器 → browser-use(AI 理解页面结构、自主操作)
  ↓ 问题:需要登录态,或要多步交互(点击/翻页/表单/上传)/视频帧采样
CDP 接管 → web-access(接管用户日常 Chrome,天然登录态;已知需登录时跳过 browser-use 直接来这层)
  ↓ 问题:需要代码级精确控制,或要独立无登录态浏览器做隔离
手动驱动 → ECC Playwright MCP(代码级精确控制每一步)

每层解决的问题不同,不要跳层

  • 普通网页 → Scrapling get(最轻,HTTP 直接请求)
  • JS 渲染 → Scrapling fetch(需要浏览器但不需隐身)
  • 反爬拦截 → Scrapling stealthy(隐身模式绕过检测)
  • 页面看不懂 → browser-use(AI 理解能力)
  • 需要登录态 / 多步交互 / 视频采样 → web-access(用户日常 Chrome 的真实登录态 + 确定性 CDP API)
  • 精确操作 → Playwright(人工级控制)

成本递增,能浅不深:Scrapling get(HTTP 秒级)< Scrapling fetch(浏览器秒级)< Scrapling stealthy(反检测)< browser-use(需调 LLM API)< web-access(需 CDP 连接)< Playwright(需写代码)

评论采集

详查命令见 references/other-platforms.md。opencli 是评论主力(read 8 平台 / write 3 平台),MediaCrawler 只抓不写且禁商业,不装。

平台read 评论write 评论命令
B站✅(含楼中楼 --parent✅ 发评论/回复opencli bilibili comments <bvid> / comment <bvid> <msg>
小红书✅(楼中楼)opencli xiaohongshu comments <note-id>
知乎answer-commentscomment <target> <text>回答评论列表 / 发评论
微博opencli weibo comments <id>
即刻✅(post 含评论)comment <id> <text>opencli jike post <id> / comment
知识星球✅(topic 含评论)opencli zsxq topic <id>
雪球opencli xueqiu comments <symbol>
贴吧✅(read 含回复)opencli tieba read <id>
抖音△(user-videos 含热门评论,无独立 comments)opencli douyin user-videos;深度评论用 douyin-session adapter
快手❌ opencli 无此平台唯一真缺口,需另调研(移动端 UA / web-access CDP)

批量评论/批量主页采集属爬虫框架范畴,不在本 skill(见「不适用场景」);按需取评论走 opencli。

通用兜底

方法工具场景
agent-reachagent-reach(pipx/pip 安装,官方推荐 pipx)13 平台搜索/阅读统一入口(Tier0 零配置:Web/YouTube/GitHub/RSS/Exa/V2EX/雪球;Tier1 需登录态:Twitter/Reddit/B站/小红书用 Cookie,小宇宙用免费 Groq Key)。管"读/搜",与 opencli(管"下载/操作")互补
Jina Readercurl -sL "https://r.jina.ai/<url>"通用网页内容提取
web-content-fetcher/web-content-fetcher skillagent-reach 失败时的三级降级抓网页
Scrapling stealthyMCP stealthy_fetch反爬场景
yt-dlpyt-dlp <url>通用视频下载
browser-use/open-source skillAI 自主操作浏览器,全新/未知页面
web-access/web-access skillCDP 接管已登录日常 Chrome(localhost:3456),覆盖:登录态内容、复杂交互(点击/翻页/表单/上传)、视频帧采样、本地书签历史检索
Playwright 手动ECC Playwright MCP精确手动控制,最后兜底

web-access 调用要点(降级链中唯一连用户日常浏览器的工具)

降级链其余工具(Scrapling / browser-use / Playwright MCP)都开独立无状态浏览器,唯独 web-access 直连用户日常 Chrome,天然带登录态、书签、历史。触发 /web-access 加载后按此调用:

  1. 启动 CDP proxynode "${CLAUDE_SKILL_DIR}/scripts/check-deps.mjs"(Node 22+ 必需,脚本自动启动并等待 proxy 就绪)
  2. 操作前必须向用户展示封禁须知:部分站点对浏览器自动化检测严格,存在账号封禁风险,已内置防护但无法完全避免,继续操作即视为接受。
  3. curl 调 localhost:3456 API/new(后台 tab,URL 走 POST body 保留完整参数)//eval(读写 DOM,递归穿透 Shadow DOM·iframe)//click·/clickAt(真实鼠标手势,触发文件对话框)//scroll(触发懒加载)//screenshot(含视频当前帧)//setFiles(上传,绕过对话框)//close(关闭自建 tab,保留用户 tab)
  4. 本地浏览器检索(web-access 独有):用户说"我之前看过的""公司内部系统"等公网搜不到的目标 → node "${CLAUDE_SKILL_DIR}/scripts/find-url.mjs" 关键词 [--only bookmarks|history] [--since 7d] 查 Chrome/Edge 书签+历史

何时优先 web-access:需登录态 / 多步 GUI 交互(点击·翻页·表单·上传)/ 视频帧采样 / 本地浏览器检索——这四类其余工具都做不了或不如它。仅当页面结构完全未知、需 AI 自主探索时才用 browser-use;需代码级隔离测试时才用 Playwright MCP。

工具速查

语音转文字

优先级工具命令说明
1硅基流动 APIcurl -X POST https://api.siliconflow.cn/v1/audio/transcriptions -H "Authorization: Bearer $SILICONFLOW_API_KEY" -F "model=FunAudioLLM/SenseVoiceSmall" -F "[email protected]"秒级,免费,中文优化
2whisper-cliwhisper-cli -m model.bin -f audio.mp3 -l zh本地 C++,快
3whisper Pythonpython3 -c "import whisper; ..." (small 模型)本地,最准
4whisper-timestampedpython3 -c "import whisper_timestamped; ..."精确时间戳,字幕制作用

语音合成 / 音视频处理

操作命令
语音合成(TTS)edge-tts --text "文本" --voice zh-CN-XiaoxiaoNeural --write-media output.mp3
音视频转码ffmpeg -i input.mp4 -vn -acodec libmp3lame output.mp3
OCRtesseract image.png stdout -l chi_sim+eng
PDF 提取文本python3 -c "import fitz; doc=fitz.open('file.pdf'); [page.get_text() for page in doc]"
图片处理magick input.png -resize 800x600 output.png

搜索兜底

注:smart-search/web-search/multi-search-engine/baidu-search 位于 ~/.openclaw/skills/需 OpenClaw 环境已安装anysearch~/.agents/skills/(通用,无 OpenClaw 也可用)。无 OpenClaw 环境时优先 anysearch。

工具场景说明
anysearch实时搜索+垂直领域+批量并行+URL全文提取16 个垂直领域(股票/CVE/DOI/法律/学术等;Stock/CVE/DOI 是触发标识符非 domain),~/.agents/skills/anysearch//anysearch
smart-searchopencli 搜索路由基于 opencli 的智能搜索,覆盖社交/技术/新闻/购物,~/.agents/skills/smart-search/
web-search通用网页搜索DuckDuckGo API,轻量搜索,~/.openclaw/skills/web-search/
multi-search-engineagent-reach + Jina 都搜不到时17 搜索引擎聚合对比,~/.openclaw/skills/multi-search-engine/
baidu-search中文内容搜索百度 AI 搜索,中文场景优于通用引擎,~/.openclaw/skills/baidu-search/

搜索优先级:通用搜索/事实查询/垂直领域 → anysearch(最轻最快)→ opencli(平台结构化数据)→ agent-reach(opencli 未覆盖的平台兜底)。

Scrapling 调用路径

环境方式说明
Claude Code 主会话MCP 直调 mcp__ScraplingServer__stealthy_fetch直接可用
OpenClaw 子 agentmcporter 桥接 mcporter call ScraplingServer.stealthy_fetch url=<url>子 agent 无 MCP 权限,需桥接

关键注意事项

  • 抖音反爬极强,yt-dlp/Jina 全部无效,只能用移动端 UA 方法(见 references/douyin.md
  • TikTok 用 tikwm API,CDN URL 临时,获取后立即下载
  • YouTube 字幕首选 opencli youtube transcript(返回干净文本免清洗),备选 yt-dlp 的 VTT 需 clean_vtt.py 清洗(见 references/youtube.md
  • opencli Cookie 命令需要 Browser Bridge 运行(排障:opencli doctor

What ships with it: 4 files

32.8 KB alongside SKILL.md

references/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.