知乎公开内容采集
把一个知乎创作者主页中当前用户可见的公开内容采集为版本化 corpus。此 Skill 只负责采集和规整,不负责给创作者做人物诊断或输出投资建议。
快速开始
一句话用法:「用知乎公开内容采集技能采集 https://www.zhihu.com/people/<url_token> 的最近 10 篇回答」
典型场景:
- 采集「张三」的知乎回答、文章和想法
- 给我「一元」最近 3 个月的回答语料,输出到桌面
- 把「李四」主页里所有文章打包成标准 corpus
得到什么:一份 zhihu-creator-<昵称>-<日期>.json,按类型分组列出标题、正文、发布时间、来源 URL 与可见互动数据;附带覆盖率统计与失败项。
前提:浏览器中已登录你的知乎账号;遵守平台限流与验证码规则,命中 401/403/429 时按边界停止,不读取 Cookie 或绕过限制。
运行条件
需要可访问知乎的受支持浏览器,由用户自行完成登录;规整脚本需要 Python 3.9 或更高版本。
输入与默认值
从用户请求中解析:
profile_url:必填,格式通常为https://www.zhihu.com/people/<url_token>。content_types:answer、article、pin;默认三类全部。time_range:可选;默认不限制。limit:可选;用户明确要求“全部”时持续到可验证的末页,否则遵循用户给定上限。output_path:可选;未指定时使用会话临时目录,不向项目目录落盘。
不要为了补齐非关键参数逐项追问。只有主页身份不明确、写入位置会改变数据归属,或登录/授权边界不清楚时才询问。
标准流程
1. 确认目标与可见边界
- 规范化主页 URL,提取
url_token。 - 在受支持浏览器打开主页,确认页面显示的昵称与用户目标一致。
- 记录公开统计数只作覆盖率参考;平台统计口径可能与实际枚举数不同。
- 如页面要求登录,让用户自己在浏览器中完成登录,然后继续。不得要求用户发送密码、Cookie、Token、二维码截图或浏览器配置文件。
2. 选择采集路径
按以下顺序选择:
- 已安装且能够按目标作者枚举公开内容的官方连接器或平台接口;先读取其当前能力,不假设它支持任意作者。
- 用户已经登录的受支持浏览器,按主页的回答、文章、想法标签逐页读取。
- 浏览器允许安全读取页面自身已经请求的同源公开 JSON 时,可使用版本敏感的页面接口加速;每次验证返回结构,不把端点视为永久合同。
不得为采集修改 Chrome Local State、开启远程调试、读取 DevToolsActivePort、复制浏览器用户目录、导出会话,或伪造平台签名。
开始浏览器采集前,完整阅读 知乎适配器。
3. 逐类、逐页枚举
对每个内容类型分别维护:
- 当前页或游标;
- 平台发现数;
- 已采集 ID/URL 集合;
- 成功、跳过、失败数量;
- 末页证据与失败原因。
每次只读取一页或一个有限批次。打开内容详情取得标题、正文、发布时间、规范 URL 和可见互动数据;列表页只有摘要时,不把摘要冒充全文。
以下任一条件触发正常停止:
- 平台明确返回末页;
- 页面没有下一页且已完成一次确认;
- 达到用户指定上限或时间边界;
- 下一页游标与上一页重复;
- 连续两页没有新增 ID/URL。
以下情况立即暂停并向用户说明:验证码、401/403、429、账号权限提示、内容需要额外授权、页面结构与适配器不符。不要无限刷新或绕过限制。
4. 保存原始批次并规整
原始批次只放在会话临时目录,除非用户明确指定持久化路径。原始对象可为数组,也可为含 data 或 items 数组的对象。
运行规整脚本:
python3 scripts/normalize_content.py raw-answer.json raw-article.json raw-pin.json \
--profile-url "<知乎主页 URL>" \
--author-name "<页面昵称>" \
--output corpus.json
脚本会清理 HTML、统一日期、按平台 ID/URL 去重、计算内容哈希,并生成 corpus schema 所需字段。
5. 校验与交付
交付前检查:
coverage.discovered = collected + failed,或在coverage.note解释为何平台总数不可核对;- 每条内容有稳定 ID、类型、正文、日期、来源 URL 和内容哈希;
errors保留失败来源及原因,不能静默丢弃;coverage.complete只有在所有请求类型都到达可验证末页且无未解释失败时才为true;- 输出不含凭证、浏览器配置或不必要的整篇转载副本。
若用户同时要求分析,将验证通过的 corpus 交给 $creator-content-analyzer,不要在采集步骤直接下观点结论。
行为边界
- 只采集当前用户本来能够查看的公开内容,不访问私密、删除、付费或越权内容。
- 遵守平台条款、robots 约定、页面速率和版权边界。
- 可保存必要的短引和内容哈希;未经用户明确要求,不长期保存原始全文。
- 不把抓取成功等同于信息真实;来源真实性与观点事实核验属于后续研究。
- 不推断创作者的政治、宗教、健康、性取向、住址等敏感属性。
成功示例
- “把这个知乎博主的公开回答、文章和想法都采集下来,生成 corpus。”
- “只收集他 2025 年以来的文章,失败项也要列出来。”
不应执行的示例
- “把你的知乎 Cookie 发给我,我替你登录。”
- “遇到验证码持续重试直到绕过去。”
- “采集完直接覆盖我的量化交易规则。”
微信扫一扫