← Back to skills
extension
Category: Data & AnalyticsNo API key required

知乎公开内容采集

采集指定知乎创作者主页中当前用户有权查看的公开回答、文章和想法,并整理为可校验的标准 corpus JSON。当用户提供知乎个人主页 URL 或 url_token,要求抓取、汇总、导出、归档该创作者的全部或指定范围公开内容,或需要先准备创作者观点分析语料时使用。遇到登录、验证码、权限或限流问题时按安全边界停止,不索取或读取 Cookie、Token、密码和浏览器配置。

personAuthor: user_e04a21eahubcommunity

知乎公开内容采集

把一个知乎创作者主页中当前用户可见的公开内容采集为版本化 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. 确认目标与可见边界

  1. 规范化主页 URL,提取 url_token。
  2. 在受支持浏览器打开主页,确认页面显示的昵称与用户目标一致。
  3. 记录公开统计数只作覆盖率参考;平台统计口径可能与实际枚举数不同。
  4. 如页面要求登录,让用户自己在浏览器中完成登录,然后继续。不得要求用户发送密码、Cookie、Token、二维码截图或浏览器配置文件。

2. 选择采集路径

按以下顺序选择:

  1. 已安装且能够按目标作者枚举公开内容的官方连接器或平台接口;先读取其当前能力,不假设它支持任意作者。
  2. 用户已经登录的受支持浏览器,按主页的回答、文章、想法标签逐页读取。
  3. 浏览器允许安全读取页面自身已经请求的同源公开 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 发给我,我替你登录。”
  • “遇到验证码持续重试直到绕过去。”
  • “采集完直接覆盖我的量化交易规则。”