caishi
Provides tools for searching Bilibili, retrieving video details and hot videos, fetching subtitles, and obtaining official AI summaries.
Provides tools for searching dblp for papers, authors, and venues, with browser-based access that handles anti-bot protections.
Provides tools for searching WeChat Official Accounts articles via Sogou and exporting articles to clean Markdown.
Provides tools for searching Xiaohongshu and reading note details including title, body, interactions, and image galleries, plus saved lists.
Provides tools for reading Zhihu answers and columns and exporting them to Markdown.
采诗 · 给 AI 用的中文互联网能力包
原作者:ZhongQuinnKing(主号署名) 许可:见 LICENSE(分层:代码 MIT,内容与文档 CC BY-NC-ND 4.0;五档:免费用/自改自由/转发署名/改版发布先授权/商用零豁免) 商用与合作:请先联系 hello@xinchuan.dev(标题注明【商用授权】或【改编授权】)
English TL;DR — A capability pack that lets AI agents read the Chinese internet: Douyin, Bilibili, Xiaohongshu, WeChat Official Accounts, Zhihu, Toutiao + 30+ academic / developer / lifestyle sites. Read-only, reuses your own browser sessions, one link at a time — no scraping at scale.
英文全文版:README.en.md(English full version)
只读、不爬虫、不做批量:所有请求都走你自己的浏览器会话(opencli 浏览器桥), 复用你已经登录的账号,就像你自己在浏览器里看一样。
把你 AI 的眼睛接到中文互联网上——抖音、小红书、B站、微博、知乎、公众号、头条, 一条命令读内容。给 Claude Code 这类能跑命令行的 Agent 直接用。
仓库地址:https://github.com/ZhongQuinnKing/caishi (平台变化、命令失效,欢迎提 issue)
能干什么
平台 | 一句话 | 命令(示例) |
抖音 | 单链接全解:文案/作者/四项互动数/发布时间/时长/无水印下载地址 |
|
抖音 | 任意视频评论(内容/点赞/作者/回复数) |
|
抖音 | 搜索、某用户作品列表 |
|
小红书 | 搜索(自研,绕开官方既有 bug) |
|
小红书 | 笔记全解(自研:标题/正文/互动/图集)/ 收藏列表 |
|
B站 | 搜索/详情/热门;字幕;官方 AI 总结 |
|
微博 | 热搜 |
|
知乎 | 回答 / 专栏读取导出 Markdown |
|
公众号 | 搜狗搜索;文章导出干净 Markdown |
|
头条 | 热榜、推荐流(免登录免浏览器) |
|
乐谱 | IMSLP 公有领域乐谱库:搜索、作品文件清单(自研) |
|
乐谱 | 弹琴吧:流行曲谱搜索、页面预览图(自研;完整谱为站点会员内容,不绕过) |
|
学术 | dblp:论文 / 作者 / 会议检索(自研,浏览器版自动过防机器人盾) |
|
网页 | 任意网页正文读取(自研;正文转纯文本,长文截 6 万字) |
|
本包自研补充共九件 14 条命令(抖音 detail / comments / collection、小红书 find / read、
IMSLP 与弹琴吧乐谱、dblp 学术检索、网页正文读取):命令行各件随包附带装在 clis/ 目录、
安装即就位,网页一路随 opencli 官方适配器就位;其余平台命令来自 opencli 官方适配器。
逐平台实测状态与已知坑见 平台状态表.md。
一线 AI(MCP)
不只有命令行的 AI 能用——独立包 caishi-mcp 是自包含 MCP 服务器(协议层
自实现、无 MCP SDK 依赖;浏览器引擎随包自动装),Claude Desktop、Cursor、Codex、DeepSeek Harness
等任何 MCP 客户端都能接入同一套能力(同一个浏览器、同一份登录态)。四站命令已上架(B站视频/
抖音详情/小红书笔记/任意网页正文):npm install -g caishi-mcp。
装法与边界见 caishi-mcp/README.md 与 MCP.md。
另带三个小工具
zhread "<链接>"—— 一条命令读中文互联网:自动识别平台(抖音/B站/公众号/知乎/小红书/乐谱站), 输出统一格式 Markdown;--save 目录存成文件。跨平台就是它。
真实录制:
zhread一条命令读 B 站视频。等待段压缩,输出未剪。zhcheck—— 平台体检:默认轻检(只查浏览器桥,不开任何页面);--deep才逐平台探测 (会依次打开各平台页面并事先提示)。平台哪天坏了,先跑它。zhupdate—— 自更新与修复:比对远程最新版本,git 安装自动拉取并重跑部署; 修不了的问题给出上报模板(平台改版是常态,修好的版本当天就能到)。一个查、一个修。
可选通道:反爬挑战墙兜底
公开页面被反爬挑战系统拦住(主链 403/挑战页)时,可选启用 cloak/ 通道:
独立环境、默认不装,只读公开内容、不绕登录与付费墙。说明、安装与边界见
cloak/README.md。
Related MCP server: browser-mcp
安装
前提:macOS(或任意能装 Node 的桌面系统)+ Chrome/Chromium。
运行
bash install.sh(自动装 opencli、下载浏览器扩展文件、装入自研命令)手动一步:Chrome 打开
chrome://extensions→ 开发者模式 → 「加载已解压的扩展程序」 → 选~/.opencli/extension(脚本会把扩展文件准备好,商店装了也行)按需登录平台:在同一个浏览器里打开对应网站扫码登录即可(一次长期有效)
用法(给 AI 的一句话)
"帮我看看这条抖音说了啥 https://v.douyin.com/xxxx/" "在小红书上搜一下钢琴教学,把前几条列出来" "把这个公众号文章导出成 markdown"
Agent 会自己走上表里对应的命令。
在国产 AI(豆包等)上使用
本包自带的 skills/zh-web 技能是跨环境的,国产 AI 也能装:
下载本仓库,把
skills/zh-web文件夹(含 SKILL.md)拖进豆包「我的技能」——或对豆包说:"请安装这个 skill:https://github.com/ZhongQuinnKing/caishi"装上后它会自己看环境:能跑命令的(Claude Code / Codex 等)走完整命令路由; 只有对话的(豆包等)走"无命令路径"——借用 AI 自身的联网能力读公开页面,读不动的 如实告诉你、请你贴文字或截图
一句话说明白:深度读取(评论、收藏、字幕、导出……)需要命令行环境;纯对话环境能拿到哪些,技能里逐平台写清楚了。
已知坑与纪律(重要,用前必读)
一切以你的指令为准:安装本身不打开任何网页;平台页面只在你明确提出使用它时才出现—— 要一个开一个、要几个开几个;未指令的绝不打开。登录同样按需。
只读,不批量,不互动。频率克制——账号安全第一,工具不替你们担责。
登录建议用测试号/小号,别把主力账号往上挂。
小红书会话短命:关掉浏览器就掉登录,用的时候保持浏览器开着;撞上"设备超限"风控就停一两天再登。
抖音/小红书等平台改版频繁,接口可能失效——坏了欢迎提 issue。
本包不含需要翻墙的平台(YouTube、Twitter 等),它们不在此列。
姊妹篇
同一个家族的另外三个免费开源项目:
夜诵 —— 离线信息哨兵: AI 睡着时替你盯世界(热榜 / GitHub 动态 / HN),零成本、不调大模型
拾级 —— 从高三到工位的军师: 装进 AI 助手的成长顾问,152 篇覆盖高考志愿 / 大学 / 考研 / 考公 / 求职 / 职场 / 论文 / 留学等十二条线
玉尺 —— 中文写作的一把尺: 量节奏、点套话、标平仄,文章与诗都能过一遍(写完自查的趁手家伙)
合规与免责
本包是个人学习与研究用途的读取工具:只读、单条、低频。
请不要用于批量采集、商业用途,或任何违反所在平台服务条款的场景。
工具不破解任何技术措施(请求签名由平台页面自身完成)、不绕过任何付费或会员内容。
使用者对自己的使用行为负责;因使用本工具产生的任何后果由使用者承担。
它站在谁的肩膀上
核心运行时是 opencli("把任意网站变成 CLI")。 本包做三件事:给中文平台做实测、补上缺的命令(自研九件、14 条命令)、把登录与踩坑经验写成说明书。
参与
问题(平台失效、新平台建议)与改进建议走 issue;想法与交流走 Discussions;动手改代码或文档前,先读 CONTRIBUTING.md。
维护节奏(先说清)
按需发布:没有固定发版排期;影响使用的问题(平台失效一类)优先处理。
issue 尽力回:每条都会看;暂时回不了的,说明状态,不沉默。
以用为本:项目按需要生长,不追热点,不承诺功能路线图。
状态
名字取自《汉书·礼乐志》"乃立乐府,采诗夜诵"——采集中文互联网的声音,献给需要它的 AI。 首版覆盖七个平台的读取能力:抖音 / B站 / 小红书 / 微博 / 知乎 / 公众号 / 头条。
2026 年 10 月起,收录于 chinese-independent-developer (国内独立开发者项目清单,6 万+ 星)程序员版。
致谢名单见 ACKNOWLEDGMENTS.md。
Available Tools
4 toolsbilibili/videoB
Get Bilibili video metadata (title, author, duration, stats, description) by BV id, video URL or b23.tv short link.
| Name | Required | Description | Default |
|---|---|---|---|
| bvid | Yes | BV id、视频链接或 b23.tv 短链 | |
| page | No | 分P 序号(从 1 起);缺省取 P1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and falls short. It implies a read (returning metadata) but says nothing about auth/cookie requirements, rate limits, behavior on invalid BV ids or dead b23.tv links, or how multi-part videos are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that packs the verb, resource, output fields, and accepted identifier formats with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, listing the returned fields is a useful substitute and the accepted ID formats are covered. The gaps are behavioral (auth, errors) and the unexplained `page`/multi-part semantics, which is why it falls short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both params are documented in the schema, so the baseline is 3. The description adds nothing for the `page` (分P) parameter and only restates the accepted bvid formats that the schema already lists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (Bilibili video metadata) and even enumerates the returned fields (title, author, duration, stats, description). It does not explicitly contrast itself with the sibling tools (douyin/detail, xiaohongshu/note), though the 'Bilibili' scoping implies the platform split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: use it when you need metadata for a Bilibili video. No when-not conditions, no mention of alternatives such as web/read for pages that aren't Bilibili videos, and no note that an invalid or private video will not resolve.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
douyin/detailA
Get a Douyin video/post in full: caption, engagement stats, author, no-watermark play address, image gallery (for 图文 posts). Accepts share short link, video URL, or numeric id.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | 分享短链 / 视频链接 / 纯数字 ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the returned payload, including the no-watermark play address and that galleries appear only for 图文 posts, and 'Get' implies a read operation. It says nothing about authentication, rate limits, or what happens for private/deleted/unavailable posts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the payload front-loaded and no filler; the second sentence efficiently covers accepted input forms. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description does the important work of listing what comes back, and there is no output schema that would otherwise cover returns. Minor gaps remain around auth/error behavior, but the agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single target parameter is already documented in the schema (分享短链 / 视频链接 / 纯数字 ID). The description's 'share short link, video URL, or numeric id' is essentially an English restatement, adding no new syntax or format detail. Baseline 3 for a fully-documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get a Douyin video/post') and enumerates the payload (caption, stats, author, play address, gallery), and the 'Douyin' qualifier naturally separates it from the platform-specific siblings bilibili/video and xiaohongshu/note. It never explicitly contrasts itself with those siblings, but the platform scoping makes selection unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the identification of the resource type (Douyin posts and 图文 image posts), and the accepted input forms are spelled out. There is, however, no when-to-use/when-not guidance, no mention of auth or permission prerequisites, and no routing advice versus the sibling platform tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web/readB
Read any web page: open the URL and return its main text as plain text (uses your logged-in Chrome session).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | http(s) URL | |
| wait | No | seconds to wait for rendering (default 2) | |
| selector | No | optional CSS selector to scope the text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that it runs through the user's logged-in Chrome session (an authentication/privacy-relevant fact) and that output is extracted main text rather than raw HTML, but says nothing about failure modes, rate limits, timeouts, or how long pages are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the action, the return format, and the session context with zero wasted words. Nothing could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly covers the return value (main text as plain text) and the session context. However, for a no-annotation tool it is thin on behavioral completeness — no error/timeout behavior, no guidance on dynamic pages despite exposing a `wait` parameter, and no indication of output size limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each of the three parameters (url, wait, selector) already documented in the schema, so the baseline is 3. The description adds no syntax, units, or format detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Read") and resource ("any web page"), plus the output shape ("main text as plain text"). The phrase "any web page" implicitly positions it as the generic reader against the site-specific siblings (bilibili/video, douyin/detail), but it never names or contrasts those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no mention of the sibling tools or when to prefer them over this generic reader. Usage is only implied by the verb "Read," leaving the agent to infer the routing decision itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xiaohongshu/noteA
Read a Xiaohongshu (Little Red Book) note: title, author, full text, likes/collects/comments, tags. Pass a full note URL (with xsec_token) when possible.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | 完整笔记链接(优先,含 xsec_token)或 24 位笔记 ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that this is a read operation and what fields come back, but says nothing about authentication needs, rate limits, or failure behavior when the note is private or the token is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action and return payload front-loaded, followed by the key invocation hint. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema and no annotations, the description is nearly sufficient: it names the platform, the resource, and the return fields. The only meaningful gap is behavioral context (auth, failure modes) that an agent might want before invoking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter's own description already covers both the full-URL-with-xsec_token preference and the 24-character ID alternative. The description merely restates the URL preference, adding no new syntax or format detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Read) and resource (a Xiaohongshu note) and even enumerates the returned fields (title, author, text, engagement counts, tags). The platform specificity implicitly separates it from siblings like bilibili/video and douyin/detail, though it never names or contrasts them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Pass a full note URL (with xsec_token) when possible" gives a parameter preference hint, which implies the tool is for fetching a note when you have a link. However, there is no when-to-use vs. when-not guidance and no routing toward web/read or other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
bilibili/video - First observed
douyin/detail - First observed
web/read - First observed
xiaohongshu/note
TDQS
Scored across 4 tools
Each tool targets a clearly distinct platform (Bilibili, Douyin, Xiaohongshu) or generic web, so there is no overlap in purpose. An agent can select the right tool purely from the source platform.
All names follow a consistent platform/resource pattern (bilibili/video, douyin/detail, web/read, xiaohongshu/note). The second segment mixes nouns (video, detail, note) with a verb (read), a minor deviation from a strict convention.
Four tools is slightly thin but reasonable for a focused content-fetching server covering three specific platforms plus generic web. Each tool clearly earns its place with no redundancy.
The surface covers read/retrieve operations well but offers no search, listing, or discovery operations, so agents must already know a URL or id. This is a notable gap for a content platform aggregator.
Maintenance
Related MCP Connectors
MCP server: AI-agent access to Chinese social & trend signals — Douyin, Weibo, Xiaohongshu/RedNote,
Unified social scraper MCP — profiles, posts, videos across ~40 platforms via Streamable HTTP.
Web scraping MCP server: any URL to Markdown or JSON, with JavaScript rendering and batch jobs.
Weibo posts, hot search, comments and profiles to JSON. No login or cookies needed.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for crawling social media platforms (e.g., Bilibili) by keywords, video IDs, or creator IDs, with support for MySQL, JSON, and CSV storage.39MIT
- AlicenseAqualityAmaintenanceA local MCP server that leverages your real Chrome session to read and interact with web pages, including JavaScript-rendered and login-required content. Supports page actions like clicking, scrolling, typing, and platform-specific tools for Zhihu, Xiaohongshu, X, Reddit, and search engines.247MIT
- AlicenseBqualityCmaintenanceMCP server that reads your personal Douyin favorites and collection folders via a logged-in browser session, providing tools to list and retrieve video/collection data for AI assistants.92MIT
- AlicenseAqualityCmaintenanceMCP server for parsing Douyin links to fetch video info/download links, transcribing audio locally, and organizing transcripts into polished spoken copy.51Apache 2.0