Skip to content

fix+feat: 修复搜狗搜索链路并新增公众号合集接口 - #6

Merged
ZouZhao321 merged 5 commits into
mainfrom
feat/sogou-fix-and-album
Sep 20, 2026
Merged

ZouZhao321 merged 5 commits into
mainfrom
feat/sogou-fix-and-album

Conversation

@ZouZhao321

Copy link
Copy Markdown
Owner

背景

mpget 已取消归档,回到独立维护。url-to-markdown 里的 search 是从 mpget 移植的,但丢了 URL 还原函数;同时 mpget 原实现存在三处缺陷。

修复(搜狗搜索链路)

  • resolveRealUrl 从未接线:search 结果里的 link 一直是搜狗中间页,realUrl 恒为空。现在 search(CLI 与 MCP)默认逐条解析真实 mp.weixin.qq.com 链接,可用 --no-resolve 关闭。
  • 拼接前缀重复:真实 /link 页面第一段就是 https://mp.,原代码 "https://mp." + parts.join("") 会拼出 https://mp.https://mp...。已修正(识别已含前缀的情况)。旧测试用假样本,未暴露此问题,已换成真实抓取样本做 fixture。
  • publishTime 拿到 script 源码:真实页面是 <span class="s2"><script>document.write(timeConvert('...'))</script></span>,原实现取到的是脚本文本。现在从 timeConvert('...') 提取时间戳转日期,并新增 account 字段(.all-time-y2,公众号名)。
  • cookie 会话缺失:/link 页面依赖搜索阶段建立的会话 cookie,原生 fetch 不持久化导致解析失败。加了最小 cookie jar,搜索时收集 Set-Cookie 并在解析时携带。

新增(公众号合集接口)

mpget album <biz> <albumId>:调用微信 appmsgalbum 接口(匿名可用),返回合集内文章列表(标题/时间/msgid/真实链接),支持翻页与 --all 拉全量。CLI 与 MCP(新增 album tool)双入口,skill 同步更新。

测试

29 个测试全绿(原 25 + 新增 album 库/MCP 各若干),lint/prettier/tsc 通过。端到端实测:search 解析真实链接成功;album 拉取 TRAE 合集 119 篇无重复。

- album 命令:校验 --count/--max-pages 为正整数,biz/albumId 非空
- fetchAlbumArticles:count clamp 到 [1,20],网络错误带 NETWORK: 前缀与 cause
- fetchAlbumArticlesAll:支持 count 与起始游标,maxPages 截断时如实返回 continueFlag
- resolveResultsRealUrls:有界并发解析 + 重复链接去重
- cookie jar 按名合并而非整段覆盖,避免并发覆盖
- timeConvert 兼容单双引号;搜狗时间按北京时区常量说明
- MCP:biz/albumId 空值校验,all 模式 page 归一为 1,工具描述字段名对齐
@ZouZhao321
ZouZhao321 merged commit e7bcc50 into main Sep 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant