贴吧数据归档 · tieba-archive
> 把散落在贴吧十年里的「发过的帖、回过的话」收拢成一份属于你自己的档案。
> 别人看到的是灌水,你看到的是自己年轻时的足迹。
一、这个 skill 是做什么的(先说人话)
你有没有想过:我在贴吧这些年到底发过多少帖?都发在哪些吧?最活跃是哪几年?那些老帖里有没有能翻出来当写作素材的?
这个 skill 就是来回答这些问题的。它帮你做三件事:
| 步骤 | 做什么 | 拿到什么 |
|---|---|---|
| ① 抓取 | 把你贴吧账号里发过的帖子(标题、内容、时间、吧名、配图)抓下来 | 一份完整的数据底稿 |
| ② 回帖 | 顺带抓「你发帖评论区里你自己的回帖」,按「回复谁 / 对方说什么 / 我回什么」整理 | 回帖明细(尽力而为) |
| ③ 盘点 | 按年份 / 贴吧 / 活跃期统计,并评估老帖哪些能改造成新内容 | 汇总 + 盘点 两份文档 |
> 📦 最终交付两份文档:一份「汇总」讲你有哪些数据(数据底稿),一份「盘点」讲这些数据说明你是什么样的人、哪些老帖还能用。
优先级策略(核心设计,请记住):
- 🔴 发帖必抓——这是主流程,不管后面回帖/配图怎么样,发帖一定要抓全;
- 🟡 回帖、配图尽力而为——抓得到最好,卡住了就跳过继续,绝不让回帖拖垮发帖。
全程不碰你的账号密码。抓取用你自己的浏览器登录态(browser-skill 复用已登录浏览器),你本人在场配合,AI 不代填任何凭证、不偷偷跑。
二、什么时候用(触发条件)
当你有以下想法时,就可以用:
- 「我想把贴吧这些年发过的东西存一份档」
- 「帮我把贴吧发帖整理成表格」
- 「我贴吧都发在哪些吧?哪几年最活跃?」
- 「贴吧老帖里哪些能改造成公众号文章」
- 「我要做个人数字资产管理,贴吧这部分怎么归档」
- 「我贴吧的帖子配图想一起存下来」
三、开始之前(准备清单)
在使用前,请先准备好两样东西:
-
你的贴吧个人主页链接(必需)
- 电脑浏览器打开 tieba.baidu.com → 登录你的账号 → 点头像进个人主页 → 复制地址栏网址
- 格式长这样:https://tieba.baidu.com/home/main?id=一串数字&fr=home
- 那串数字就是你的贴吧 UID,你的发帖、回帖都挂在它下面 -
装好 browser-skill(核心前提,必需)
- 本 skill 要复用你已登录的浏览器做自动化抓取 → browser-skill 是硬前提,请先装好(命令行 + 浏览器插件)
- 装法、插件装法、连接验证(bsk status/ 弹窗绿色)、开始使用,见references/prerequisites.md(一文说清)
> 💡 如果你记不清主页链接,告诉我你的贴吧用户名,我帮你从搜索里找到主页,你再确认一下是不是你本人。
四、小白用户指导(第一次用也能跑通)
如果你不熟悉命令行、没搞过「抓取」,照这一节走就行——不用先懂原理,先跑通,再回头看上面的介绍。
你只需要知道的三件事
- 用大白话跟我提需求:在 WorkBuddy 里直接说「帮我把我的贴吧发帖整理成表格」就行,我会把要做的步骤一条条讲清楚,你跟着确认即可。你不必自己拼命令。
- 主页链接怎么拿:电脑浏览器登录贴吧 → 点头像进个人主页 → 复制地址栏网址。那串
id=一串数字就是你的贴吧 UID。 - 登录态抓取要你本人操作:需要你先在浏览器里登录好贴吧,并保持 browser-skill 扩展连接。这一步必须你自己来(平台账号安全),我替不了。
零基础启动清单(照顺序走)
- 跟我说:「帮我归档我的贴吧数据」。我会加载本 skill。
- 给我你的主页链接(或告诉我用户名,我帮你找主页让你确认)。
- 告诉我大概有多少发帖(几十条还是几百条?)——方便我预估分几批抓。
- 我一步步带你抓(录种子 → 抓发帖 → 尽力抓回帖/配图 → 核验),每抓完一批报进度,你可以随时叫停。
- 最后交付两份文档:汇总(数据底稿)+ 盘点(年份/贴吧/活跃期 + 素材复用评估)。
第一次最容易卡的点(提前说清)
- 找不到主页链接:把用户名告诉我,我帮你从搜索里找到主页,你确认是不是本人即可。
- 连不上 browser-skill:先看
references/prerequisites.md装好命令行 + 浏览器插件,验证bsk status通了再继续。 - 抓了几条突然全失败:多半是浏览器连接断了(扩展掉线/会话超时)。重连后继续跑就行——脚本是「纯追加」设计,已抓的不重跑、不丢。
- 抓完数字对不上:比如你自述发过 187 帖,只抓到 160 条。别慌,这是正常现象(PC 端主页不展示移动端专属类型:视频帖/相册帖),我会把缺口原因写进报告说明。
卡住时的自救话术
把下面任意一句发给我,我就能接手:
> 「主页链接我发你了,帮我抓」 | 「browser-skill 怎么连?」 | 「抓了一半断了,接着抓」 | 「数字对不上,帮我对账」 | 「回帖抓不动就跳过吧,先把发帖保全」
术语速查(大白话)
- 贴吧 UID:你主页网址里
id=后面那串数字,你的数据都挂在它下面。 - trace(录制脚本):把你打开主页的动作录下来,AI 照着这个「录像」批量开页面。
- 虚拟列表 / 懒加载:贴吧列表页不是一次全显示,往下滚才加载更多。不滚到底就少抓。
- JSONL:一行一条数据的文件,抓取过程的「草稿本」,断了也能接着写。
- 纯追加:只在文件末尾加新内容、绝不覆盖。防止抓了一半清空重来。
五、工作流程(核心,请耐心走)
> ⚠️ 本 skill 的流程设计原则:发帖主流程永远优先,回帖/配图是增强项。任何一步卡死 → 记录原因、跳过该项、继续下一个,跑完后统一补。
Phase 0 · 确认目标(必做,不跳步)
交互要点:先确认,再动手。 这一步是整个流程的地基,确认错了后面全白做。
- 用户给出主页链接 → 助手先复述确认:
你要归档的是 tieba.baidu.com/home/main?id={uid} 这个账号,对吗? - 确认账号归属,分两种情况处理:
- 是用户自己的号 → 继续
- 是别人的号 → 走「他人账号授权闸门」(见下方 ⛔ 硬规则),通过才可继续 - 确认抓取口径(两个小问题):
- 回帖要不要抓? 默认尽力抓(含上下文);用户说「太麻烦/怕卡」→ 只抓发帖,回帖跳过
- 回帖年份口径? 默认「全部年份」,或按用户要求收窄(如只要 2015 年后的) - 确认数据规模预期:大约多少条发帖?超过 200 条 → 自动按小批增量跑(每批一个浏览器会话,抓完一批报一次进度)
确认门输出:一句话确认单(账号、范围、回帖口径、批次数),用户说「对」才进入下一步。
> ⛔ 他人账号授权闸门(硬规则,违反即失败)
>
> 本 skill 默认只抓用户自己的账号。抓取他人账号需同时满足全部条件:
> 1. 用户主动说明与对方的关系(如「这是我妻子的号,经对方同意」)——关系说不清、或只说「我想看看他的号」→ 拒绝,不抓
> 2. 对方已知情同意(用户需确认已获授权;无法确认 → 拒绝)
> 3. 他人账号最多 3 个——连同用户自己的账号,单次任务最多抓 4 个账号,超出上限 → 停止并说明原因
> 4. 他人账号只抓公开数据,不进登录态,不抓任何非公开内容
> 5. 产出文档中他人账号同样按脱敏规则处理(用户名/主页链接不原样出现)
>
> 这是主动设置的能力上限:宁可少抓,不碰他人隐私。
Phase 1 · 录种子(拿帖子 URL 清单)
目标:拿到用户全部发帖的 URL 列表,这是后面一切的地基。
- 确认 browser-skill 已连接(弹窗绿色 /
bsk status通过;未装先看references/prerequisites.md) - 引导用户打开已登录贴吧的浏览器,用
bsk录制:打开自己主页 → 切到「贴子」标签页(参考references/里的提取脚本) - 关键:滚动到底——个人主页是虚拟列表+懒加载,必须滚动到底直到:
- 页面出现「已加载全部」类提示;或
- 连续滚动高度不再变化 - 从列表页提取每条帖子的 URL、标题、时间、吧名,写入清单文件
脚本参考:references/extract_list.js(列表页条目提取)、references/trace_to_urls.py(trace 解析 → URL 清单)。
> 🐢 耐心提示:如果用户帖子很多(几百条),列表页要滚很多次,这是正常现象。滚到底才算完,别贪快。
Phase 2 · 抓发帖详情(主流程,必抓)
目标:逐帖打开详情页,抓标题、内容、时间、吧名、配图(配图尽力)。
方法:批量导航 + 页面提取,逐条追加写入 posts_detail.jsonl。核心纪律(脚本层面已内置,手工跑也照此执行):
- 纯追加,绝不覆盖:一律
>>追加写文件,禁止>覆盖(覆盖一次,前面全白抓) - 每帖防卡死:导航超时设 40 秒、失败重试(最多 5 次);页面没加载完(标题仍是「百度贴吧」)判定失败,跳过该帖记原因
- 提取幂等:evaluate 结果重试 3 次,返回的不是合法 JSON 就重来
- 一条一记录:每帖一条 JSON,带 url 字段(去重键)
- 跑后清理:用 Python 清掉坏行、按 url 去重(保留第一条有效记录)
配图策略(尽力而为):能抓到就存 URL(过滤头像/表情/portrait/avatar),抓不到不阻塞、标记「配图缺失」。
脚本参考:references/scrape_posts.sh(v4 改良版:纯追加+重试+滚动到底+跑后清理,已按本 skill 规则整理)。
Phase 3 · 抓我的回帖(增强项,尽力而为)
目标:抓「你发帖评论区里你自己的回帖」,按「回复谁 / 对方说什么 / 我回什么 / 时间」结构整理。
方法(在 Phase 2 的详情页提取里顺带完成):
1. 在详情页评论区定位你的回帖(按你的昵称匹配)
2. 每条回帖取:回复对象(被你回复的人)、对方内容(被你回复的那条)、我的内容、时间
3. 按 Phase 0 确认的年份口径过滤(默认全部,或只留 2015 后)
回帖卡住的兜底:
- 某帖评论区太长/加载失败 → 跳过该帖回帖,不影响发帖已抓部分
- 回帖整体抓不动 → 停下来问用户:继续重试,还是放弃回帖只保发帖?(尊重用户选择,不硬扛)
脚本参考:references/scrape_posts.sh 内置 myReplies 提取逻辑(作者匹配 + 上下文关联)。
Phase 4 · 数据核验(关键,别跳过)
抓完不是结束,要做数字对账,防止漏抓:
| 对账项 | 怎么验 | 对不上怎么办 |
|---|---|---|
| 发帖数 | 抓到的 URL 去重数 vs 用户自述数(如 187) | 说明 PC 端主页不展示移动端专属类型(视频帖/相册帖),缺口原因写进报告 |
| 配图覆盖 | 含配图的帖数 / 总帖数 | 标记「配图缺失」清单,可后续补抓 |
| 回帖数 | 我的回帖总数 vs 用户预期 | 回帖按尽力策略,缺口如实说明即可 |
核验规则:数字核对结果必须写进交付文档的说明区(「共抓到 X 条,你自述 Y 条,缺口可能来自…」),不藏着掖着。
Phase 5 · 交付(最终成果)
只交付两样东西——一份汇总 + 一份盘点。不散成多个文件。
-
汇总 · 数据底稿(主交付)
- 自包含 HTML,单文件、内联 CSS/JS、零外链(不依赖网络,双击即开)
- 浅色主题 + 深色文字,手机可看
- 含:统计卡(发帖数/配图数/回帖数/时间范围)、发帖明细表(标题/时间/吧名/配图缩略图/链接)、回帖明细表(原帖/回复对象/对方内容/我的回复/时间)
- 命名示例:我的贴吧汇总.html
- CSV 明细(utf-8-sig 编码,Excel 打开不乱码)仅在用户明确要求时另附 -
盘点 · 数据解读(轻量盘点)
- 自包含 HTML,同样是零外链单文件
- 含:年份分布(哪年最活跃)、贴吧分布(都发在哪些吧)、活跃期洞察、素材复用评估(老帖哪些能改造成公众号文章,A/B/C 分级)
- 命名示例:我的贴吧盘点.html
两份文档的关系:汇总回答「我有什么」,盘点回答「这些说明了我是什么样的人、哪些还能用」。先给汇总(看得快),再给盘点(想得深)——用户要哪个给哪个,或两个一起给。
交付规范:
- 文件名含「贴吧」字样 + 类型(汇总 / 盘点)
- 报告中不出现:用户真实姓名、主页链接原样、真实地名(按脱敏规则泛化)
- 素材复用评估只给方向和示例句式,绝不代笔(红线)
六、隐私与脱敏(硬规则,违反即失败)
- 绝不采集凭证:不碰账号密码、验证码、Cookie 明文
- 登录态用用户自己的浏览器:引导用户操作,不代填凭证
- 默认只抓用户自己的账号:抓他人账号必须过「授权闸门」(说明关系 + 对方知情 + 最多 3 个 + 仅公开数据,见 Phase 0)
- 输出脱敏三件套:
- 用户名/昵称 → 用「用户」或按用户意愿处理,不原样出现在报告里
- 主页链接 → 报告中不附完整链接(可写tieba.baidu.com/home/main?id={已隐藏})
- 真实地名 → 泛化为「某地」「老家」「沿海城市」等 - 他人账号只抓公开数据:不进登录态,不抓任何非公开内容,产出同样脱敏
- 抓取频率:翻页/导航间隔 ≥2 秒,不并发轰炸,不做绕过反爬的操作
- 图片直链不外传:抓到的图片 URL 仅用于本地归档展示,不打包上传任何平台
七、交互与耐心(使用体验红线)
这个 skill 面对的是普通用户,不是技术专家。请全程做到:
- 每一步先说人话:解释「为什么做这步、做完会得到什么」,不堆术语
- 确认门机制:关键节点(开始前/换模式/交付前)先简述计划,用户确认再继续,绝不闷头跑完
- 耐心兜底:
- 用户找不到主页链接 → 帮他搜,让他确认
- 用户不会开浏览器扩展 → 给分步指引(点哪里、看到什么算成功)
- 用户不理解某个术语 → 用大白话解释
- 用户觉得慢 → 解释分批机制,给出预计批数 - 错误恢复:某一页失败 → 重试一次;连续失败 → 停下来问用户,不盲试
- 节奏感:长流程主动分段汇报(录种子完/抓发帖完/抓回帖完/核验完/交付),每次汇报给用户一个叫停或调整的机会
- 不硬扛:回帖/配图卡住时,主动问「跳过还是再试」,尊重用户选择——主流程(发帖)永远不受影响
八、坑清单(陪跑时提醒 / 自查)
- 个人主页虚拟列表+懒加载:列表页不滚动到底就少抓。必须滚到「已加载全部」或高度稳定 2 次,才算到底。
- bsk 会话 30 秒超时会杀连接:导航命令必须带
timeout 40,失败重试(最多 5 次),别裸跑。 >覆盖毁数据(最痛的坑):任何写文件一律>>纯追加;覆盖一次,前面抓的全没(实战丢过 13 条)。- CRLF 换行符:Windows 生成的 URL 清单可能带
\r,导致 URL 比对永远失败。先tr -d '\r'。 - 页面没加载完就提取:标题还停在「百度贴吧」= 页面没起来,判定 loaded=false,跳过重试。
- 提取偶发坏 JSON:evaluate 结果重试 3 次 + JSON 合法性校验,坏行跑后清理。
- 数字对不上 ≠ 抓漏:PC 端主页不展示移动端专属类型(视频帖/相册帖),缺口要如实写进报告说明。
- 图片抓到头像/表情:过滤
portrait/avatar/emoji,只留正文配图。 - 帖子很多(几百条)一次跑完会卡死:分批增量跑,每批一个浏览器会话,抓完一批报进度。
- 回帖上下文错位:提取「我回复谁」时按时间序取我回帖的前一条,别取错对象;拿不准就只存「我的回复+时间」,不编造对方内容。
九、边界(不做什么)
- ❌ 不做绕过反爬/验证码的抓取(违反贴吧条款)
- ❌ 默认不抓他人账号;除非用户说明关系 + 对方知情,且最多 3 个(连同自己的号最多 4 个)
- ❌ 不抓取他人非公开数据
- ❌ 不碰账号密码、验证码、Cookie 明文
- ❌ 不做纯技术讲解(用户问「浏览器自动化原理」→ 引导去别处)
- ❌ 不替用户决定「该归档什么」——范围由用户定
- ❌ 素材复用评估绝不代笔(只给方向和示例句式)
- ❌ 抓取数据不用于任何商业用途
- ❌ 不适合单次天量抓取(建议单批 ≤200 帖,超出分批跑)
> 💡 与同类 skill 的分工:本 skill 聚焦「贴吧」个人数据归档。豆瓣数据归档见 douban-archive,知识星球内容导出见 zsxq-topic-archive,网盘资产盘点见 netdisk-audit——各管一摊,互不重叠。
十、常见问题(FAQ)
Q:能抓别人的贴吧账号吗?
A:默认不抓。本 skill 主动设置了能力上限:只抓你自己的账号。如果你确实要归档家人的号(比如配偶),需要:① 说明你和对方的关系;② 确认对方知情同意;③ 最多 3 个他人账号(连同你自己的一共最多 4 个);④ 只抓公开数据。关系说不清或无法确认授权 → 拒绝。
Q:抓到的帖子数和我自己数的不一样?
A:最常见原因是 PC 端个人主页不展示移动端专属类型的帖子(视频帖、相册帖)。另外列表页没滚到底也会少抓。我会把「抓到 X 条 vs 你自述 Y 条」的缺口原因写进报告,不藏着。
Q:抓一半断了,前面抓的会丢吗?
A:不会。脚本是纯追加设计,断了重连后接着跑,已抓的自动跳过、不重抓不覆盖。
Q:回帖一直抓不动怎么办?
A:回帖是「尽力而为」项。卡住了就跳过,先把发帖保全;你也可以选择放弃回帖,只交付发帖部分。主流程永远不受影响。
Q:配图能一起存吗?
A:尽力而为。能抓到就存图片 URL 并在汇总里显示缩略图;抓不到的标记「配图缺失」,不影响发帖归档。
Q:抓来的数据能用来干什么?
A:做你自己的个人数字资产归档(存档、回顾、素材复用评估)。不用于商业用途,不外传他人数据。
十一、CHANGELOG
- v1.0.0(2026-08-27)|初版:贴吧发帖必抓 + 回帖配图尽力,交付汇总/盘点两份 HTML。
附:出厂铭牌
- 开发者:广东小张
- 适用场景:归档你自己的贴吧发帖/回帖,做个人数字资产管理 + 老帖素材复用评估
- 不适用场景:替他人抓取隐私、绕过反爬、商业用途、单次天量(>200 帖/批)抓取
- 数据来源:用户本人贴吧账号(登录态浏览器,browser-skill,全程不碰凭证)
- 脱敏规范:用户名/主页链接/真实地名按硬规则泛化,不原样暴露
- 合规:MIT 协议,仅限个人自我回顾用途
- 数据/经验来源:作者 2026-08-23 百度贴吧批量抓取实战沉淀(bsk 录制 + 增量抓取 v2→v4 演进、187/2115 数字对账、纯追加防覆盖、超时重试、CRLF 清理等踩坑经验)
- 触发指令实例:「把我的贴吧发帖整理成表格」「贴吧这些年发过什么存个档」「帮我盘点一下我的贴吧」「贴吧老帖哪些能改造成文章」「贴吧数据一起归档了吧」
- 测试记录:v1.0.0 已实测(build_report.py / trace_to_urls.py 用 mock 数据跑通;scrape_posts.sh 语法校验通过)
隐私与安全底线(统一增补 2026-09-03)
敏感个人信息七类,从严处理:生物识别、宗教信仰、特定身份、医疗健康、金融账户、行踪轨迹,以及不满十四周岁未成年人的个人信息——不主动采集、不追问、不记录、不输出、不外传;用户无意说出即跳过并轻提醒;结果输出前二次过滤。
危地不往,乱地不去(安全边界):识别到用户拟进入高风险或混乱环境(线下见陌生网友、野游野泳或未开发区域、承诺高息回报与荐股、培训贷与押金陷阱、秩序混乱的拥挤现场等),在正常回答之外追加一句轻量避险提醒——不评判、不说教,给出「不去 / 不碰 / 不贷 / 不信」的边界选项,最终决定权在用户。
数据本地优先:个人数据整理默认只落本地文件;联网请求只带关键词、不携带个人数据;用户可随时要求删除已记录内容。
作者与联系
| 渠道 | 账号 |
|---|---|
| 作者 | 广东小张 |
| ima 知识号 | 广东小张 |
| 公众号 | 广东小张的养娃纪事 |
| 微信 | bujuetianyayuan |
用着顺手,或者想聊聊养娃、写作与 AI 实战,欢迎来公众号找我——一个一边倒班一边折腾 AI 的一线工程师父亲。