@libukai/wx-search-cli
v0.1.0
Published
CLI for searching and reading WeChat Official Account articles via Sogou WeChat
Maintainers
Readme
wx-search-cli
一个通过搜狗微信搜索微信公众号文章、解析真实微信链接并提取正文的 TypeScript 命令行工具。搜索结果以 JSON 输出,正文以纯文本输出,适合人工使用、Shell 管道和 Agent 自动化流程。
[!IMPORTANT] 本工具改善的是搜狗微信搜索的调用、跳转解析和正文提取流程,底层数据源仍然是搜狗微信。搜狗的相关性排序、收录范围、验证码和限流仍会影响结果。
功能
- 按关键词搜索微信公众号文章。
- 将搜狗
/link?...跳转链接解析为真实mp.weixin.qq.com链接。 - 提取传统公众号文章的
#js_content正文。 - 提取
item_show_type=8新版图文消息中content_noencode的文本说明。 - 自动分页,并以串行请求和页面间隔降低触发验证码的概率。
- 对反爬验证和请求失败返回非零退出码,便于自动化流程判断状态。
安装
让 Agent 一句话安装
将下面这句话直接发送给 Codex、Claude Code 或其他能够操作终端的 Agent:
从 npm 安装
@libukai/wx-search-cli的最新公开版本。先确认 Node.js 不低于 18.17 且 npm 可用,执行npm install -g @libukai/wx-search-cli,然后运行command -v wx-search-cli、wx-search-cli --version和wx-search-cli --help验证。不要使用 sudo;如果缺少依赖、权限不足或验证失败,停止并如实报告。
这是一段给 Agent 的操作指令,不是 Shell 命令。需要人工逐步安装时,请继续使用下面的方式一。
环境要求
- Node.js
>= 18.17 - npm
- 从源码构建时需要 Bun
node --version
npm --version
bun --version方式一:从 npm 全局安装(推荐)
npm install -g @libukai/wx-search-cli
wx-search-cli --version
wx-search-cli --help验证安装位置:
command -v wx-search-cli
npm list -g --depth=0 @libukai/wx-search-cli方式二:安装 fork 的独立全局快照
这种方式会把构建产物实体安装到 npm 的全局目录,不依赖之后仍然保留源码目录,适合定时任务和 Agent Skill。
git clone https://github.com/libukai/wx-search-cli.git
cd wx-search-cli
bun install --frozen-lockfile
bun run build
package_file=$(npm pack --silent)
npm install -g "./$package_file"
wx-search-cli --version
wx-search-cli --helpnpm pack 生成的 .tgz 文件在安装完成后可以删除。不要默认使用 sudo npm install -g;如果全局目录没有写权限,优先使用 Node 版本管理器或修复 npm prefix。
方式三:链接本地源码(开发使用)
git clone https://github.com/libukai/wx-search-cli.git
cd wx-search-cli
bun install --frozen-lockfile
bun run build
npm install -g .这种方式通常会将全局命令链接到当前源码目录。修改代码并重新构建后即可测试,但移动或删除源码目录会使全局命令失效,因此不推荐用于无人值守任务。
方式四:免安装运行 npm 版本
npx @libukai/wx-search-cli search "人工智能"
# 或
bunx @libukai/wx-search-cli search "人工智能"这种方式适合临时调用。长期自动化任务建议使用方式一固定安装,再在独立维护步骤中升级。
升级
升级 npm 安装:
npm install -g @libukai/wx-search-cli@latest
wx-search-cli --version升级源码快照时,在源码仓库中执行:
git switch main
git pull --ff-only origin main
bun install --frozen-lockfile
bun run build
package_file=$(npm pack --silent)
npm install -g "./$package_file"
wx-search-cli --version卸载
npm uninstall -g @libukai/wx-search-cli使用
# 搜索一页,输出 JSON
wx-search-cli search "人工智能"
wx-search-cli search "人工智能" --page 2
# 自动搜索多页
wx-search-cli search-all "人工智能" --max-pages 3
# 使用搜索结果中的 real_url 和 link 读取正文
wx-search-cli content "https://mp.weixin.qq.com/s?src=11&..." \
--referer "https://weixin.sogou.com/link?..."
# 缩写容易产生歧义时,优先使用具体组合词
wx-search-cli search "DeepSeek Harness"
wx-search-cli search "DSH Agent 插件"
wx-search-cli --helpsearch <query> [--page <n>]
搜索一页公众号文章并输出 JSON。每条结果包含:
title:文章标题。link:搜狗跳转链接。real_url:解析后的微信文章链接;解析失败时为空字符串。publish_time:ISO 8601 格式的发布时间。page:结果所在页码。
search-all <query> [--max-pages <n>]
自动搜索多页结果,每页通常约 10 条,页间默认等待 1 秒。遇到空页、验证码或达到 --max-pages 时停止。
content <real_url> [--referer <url>]
获取文章正文并输出纯文本。建议把搜索结果中的 real_url 作为第一个参数,并将 link 作为 --referer。
传统文章优先读取 #js_content。新版图文消息没有该容器时,工具会安全解码页面中的 content_noencode,不会执行页面脚本。图片中独有、未出现在文本说明里的内容不会自动 OCR。
skill
输出随 npm 包附带的 SKILL.md,供 Agent 了解命令用法:
wx-search-cli skill搜索范围与排序
- 搜狗默认按相关性排序,不保证严格按发布时间倒序。
- 需要“最新”结果时,应使用
publish_time在本地排序和筛选。 - 简短缩写可能产生大量噪音。例如
DSH通常也指德国高校入学德语考试,应优先搜索DeepSeek Harness等具体组合词。 search-all会显著增加请求数。自动化任务应优先使用单页搜索、限制关键词数量并串行执行。- 遇到验证码或无法访问时,应将该渠道标记为覆盖受限,不能据此判断“没有新文章”。
自动化建议
无人值守任务应先执行:
command -v wx-search-cli
wx-search-cli --version不要在每次定时任务中自动安装或升级 CLI。固定已验证的本地版本,在独立维护步骤中完成升级和回归测试。
开发
bun install --frozen-lockfile
# 从源码运行
bun run src/index.ts search "关键词"
# 构建
bun run build
# 离线测试
bun run test
# 真实搜狗冒烟测试;会访问外部服务,应低频运行
bun run test:live致谢
本项目是 fancyboi999/weixin_search_mcp 的 TypeScript / CLI 实现。原始项目提供了搜狗微信搜索和链接解析思路,在此向作者致谢。
使用边界
- 搜狗或微信页面结构变化可能导致解析失效。
- 高频请求可能触发验证码或临时限流。
- 抓取内容仅用于合法的学习、研究和信息整理,请遵守适用法律、平台条款及内容版权要求。
