← 返回 Skill 列表
extension
分类: 效率与办公API Key 暂未确认

小红书对标内容采集

批量采集小红书对标内容入库:从链接文档或直接给的小红书链接抓取笔记信息、图片、评论,去重归档成标准素材文件夹;单条也能跑——用户说「提取图片文字」「图片OCR」「小红书图片文案」「提取笔记图片内容」「提取文案」时走单条模式。社媒助手(Chrome 插件)复制的笔记 JSON 同样走本技能。用户说「采集对标内容」「把链接文档里的小红书内容入库」「保存小红书素材」「小红书入库」时使用。

person作者: sunny31221hubOpenAPI

小红书对标内容采集

Overview

把链接文档里的小红书笔记批量采集入库:一条笔记一个文件夹,完整保存原文信息与图片;视频笔记转写脚本;重复链接跳过;入库后在链接文档回写标记。

链接文档、编号、去重、图片落位、字段表、回写标记这些机械环节全部由 scripts/ 下的脚本负责——不用把链接文档读进上下文,也不用自己数编号。

安装方法

  1. 先问使用者用的是什么 AI 工具,选项按这个顺序列:1. WorkBuddy 2. Claude Code 3. Codex 4. 其他(用户直接说工具名),回答记作 X
  2. 只安装给 X,不安装或链接其他任何工具:
    • X 是 WorkBuddy:把本技能下载后放进 ~/.workbuddy/skills/(WorkBuddy 的技能目录;skills CLI 不支持 WorkBuddy,由你直接放置)

    • X 是其他工具:

      npx -y --registry=https://registry.npmmirror.com skills add https://modelscope.cn/skills/sunny31221/xiaohongshu-collect-buheliwa -a X -y
      

      (不带 -a 会安装给本机所有检测到的工具,禁止;--registry 为 npmmirror 镜像,保证国内不翻墙也能拉到 CLI)

    • X 不在上述范围时,按该工具自身的技能机制安装,装完确认 X 能识别本技能即可

  3. 装完后询问是否现在使用本技能

When to Use

  • 用户要求把 规律研究/对标内容采集/对标采集内容链接.md 里的链接批量入库
  • 用户说「采集对标内容」「小红书入库」「保存小红书素材」
  • 用户提供一条或多条小红书链接要求完整采集(信息+图片+评论+脚本)
  • 社媒助手复制的笔记 JSON(直接发对话,或贴在链接文档里)→ JSON 模式
  • 用户说「提取图片文字」「图片OCR」「小红书图片文案」「提取笔记图片内容」「提取文案」,或给一条小红书链接要求提取完整内容(标题/正文/标签/图片文字/互动数据/评论)→ 单条模式

When NOT to Use

  • 只要笔记正文文字、不下载图片不做 OCR → 用 opencli xiaohongshu note 直接取
  • 视频号、公众号等其他平台内容(本 skill 仅处理小红书)

依赖与安装

开工前先确认工具都在:

command -v opencli >/dev/null || echo "opencli 未安装"
command -v python3 >/dev/null || echo "python3 未安装"
python3 -c "import rapidocr_onnxruntime" 2>/dev/null || echo "rapidocr-onnxruntime 未安装(图片笔记认字要用)"

转写引擎不用在这里查——scripts/transcribe.py 自己看系统选,缺了它会告诉使用者装哪个。

缺了就把对应命令给用户,装不装由用户定,不要替他安装:

| 工具 | 用途 | 安装 | |------|------|------| | opencli | 抓笔记/评论/图片 | npm install -g @jackwener/opencli | | python3 | 跑本技能的脚本 | macOS 自带,或 brew install python@3.12;Windows 用 python.org 安装包 | | rapidocr-onnxruntime | 图片认字(OCR)。图片笔记的文字走它,图片不进模型 | pip install rapidocr-onnxruntime(约 16MB,macOS / Windows / Linux 通用) | | 转写引擎(视频笔记才需要) | 见下 | 见下 |

scripts/ 下的脚本(含认字用的 ocr.py、压图用的 shrink.py)随技能一起装好,不用另外下载;要自己装的只有 opencli 和上面这些 python 库。

转写引擎按系统二选一,scripts/transcribe.py 会自动挑,不用手工判断:

| 系统 | 引擎 | 安装 | |------|------|------| | macOS + Apple 芯片 | mlx-whisper | pip3 install mlx-whisper | | 其他(Windows / Linux / Intel Mac) | faster-whisper | pip install faster-whisper "av<17" |

av 必须锁 <17:PyAV 从 17 起删掉了 metadata_errors 参数,而 faster-whisper 1.2.1 还在传它,装最新版会一跑就报 TypeError(2026-10-03 实测)。

国内网络慢时换镜像:npm 用 npm config set registry https://registry.npmmirror.com;pip 加 -i https://pypi.tuna.tsinghua.edu.cn/simple。

装的时候认准同一个 python:本机可能装了不止一个 python(比如 python3 是 3.14,而 pip3 指向 3.12),装到别的 python 里脚本会认不到。脚本查不到依赖时会把它自己用的 python 路径打出来,照着那个路径装即可。

未安装时的处理:

  • opencli 缺失 → 本技能无法抓取,告知用户需要先装
  • rapidocr 缺失 → 图片笔记先问用户装不装;不装就退回读图,读之前先压缩(见「工作流 · 第二步」第 4 条)
  • 转写引擎缺失 → 视频笔记只存信息与封面,跳过转写并在汇报里说明
  • python3 缺失 → 无法建夹与落媒体,停在这里等用户装

登录态:opencli xiaohongshu whoami 确认已登录;未登录时提示用户执行 opencli xiaohongshu login 打开浏览器完成认证。

目录与命名规范

保存根目录:AI第二大脑/规律研究/对标内容采集/小红书/,一条笔记一个文件夹,命名 编号_笔记标题_笔记ID(编号三位补零,脚本按已有最大编号 +1 算)。

同一个数字永远指同一种文件,按笔记类型取其中几个,不是每个都有:

001_标题_笔记ID/
├── 01_原始素材/
│   ├── 01-封面图/01.jpg        ← 笔记第一张图的副本(视频笔记就是它的封面)
│   └── 02-正文图片/01.jpg…     ← 图文笔记才有;首图也在这里,封面是它的额外副本
├── 02_内容信息.md              ← 字段表 + 正文 + 标签 + 评论 + 图片引用
├── 03_图片文案原文.md           ← 图片笔记才有(图片里大量文字时 OCR)
├── 04_文案结构化梳理.md         ← 图文型与视频型都有
└── 05_视频脚本.md               ← 视频笔记才有

封面单独留一份副本,是因为以后要单独拿封面做「小红书封面规律提炼」——即使和正文第一张图重复也复制一份。

视频笔记的原片不进素材文件夹:下载到临时目录 → 转写 → 删掉,留下的是转写稿和封面。

标题里的 / \ : * ? " < > | 等非法字符由脚本做必要替换,不改标题原文。图片没下载成功时留空夹,不伪造封面。

少花调用次数

有些链路按请求次数计费(第三方兼容接口的每日额度多是这样),不按 token。一次模型回复里发多个工具调用,只算 1 次请求;串行一次发一个,就一次一个数。同一个任务排得好坏,能差三倍次数。

  1. 能串的串成一条命令:python3 a.py && python3 b.py,中间结果用 $(...) 接住。互不依赖的命令别分成两次 Bash。
  2. 抓取三路一轮发完:note、comments、download 互不依赖,放在同一条回复里三个 Bash 一起发。
  3. 落文件一轮发完:02_内容信息.md、03_图片文案原文.md、04_文案结构化梳理.md 三个 Write 放在同一条回复里。
  4. 脚本输出要过滤:check_library.py 的输出配 head / grep 再看。全量输出进上下文既拖速度,也容易把关键信息淹掉。

按这几条排,单条笔记入库的请求次数从二十来次压到 5 次上下:

| 轮次 | 做什么 | 工具调用 | |------|--------|---------| | 1 | 依赖检查 + 清单 + 追加链接 | 1 条 Bash | | 2 | 抓取 note / comments / download | 3 条 Bash 并行 | | 3 | 建夹 + OCR + 回写标记 | 1 条 Bash | | 4 | 落三个 md 文件 | 3 个 Write 并行 | | 5 | 入库检查 + 汇报 | 1 条 Bash |

批量采集时,每条笔记之间仍要 sleep 5,不要并发多条笔记;同一条笔记的三路抓取照旧并行。

工作流

第一步:预处理

  1. 跑清单脚本,拿到这次要采什么:

    python3 "<本技能目录>/scripts/link_doc.py" list
    

    返回一行 JSON:待采集(ID、来源是链接还是 JSON、完整链接)、已入库、主页链接、其他平台、其他行。

    • 链接必须原样用脚本给的 完整链接,?xsec_token= 及之后的参数一个都不能截,截了 opencli 会报 ARGUMENT 错
    • 主页链接 与 其他平台 不归本技能处理,原样留到汇报里列出
    • 其他行 是脚本认不出的行(重复行、解析失败的 JSON),汇报时说明
  2. 确认工具与登录态(见「依赖与安装」)。

第二步:逐条入库

对清单里的每一条:

单条模式——用户只给一条链接或一个笔记 ID 时走同一套流程,两处差别:

  1. 先把它追加进链接文档(不要手工编辑那个文件,走脚本;已经有这条会自动跳过):python3 "<本技能目录>/scripts/link_doc.py" add "<完整链接>",JSON 原文则用 add --json '<JSON>'
  2. 不用跑第一步的 list,清单就是刚追加的这条

之后每一步都同下面。

  1. 抓取——三路可以并行;条与条之间至少间隔 5 秒(sleep 5)再起下一条,遇风控/频率限制/验证码错误把间隔提到 10-15 秒再重试这一条。不要并发多条笔记。

    • opencli xiaohongshu note "<完整链接>" -f json → 标题、作者、正文、标签、互动数据
    • opencli xiaohongshu comments "<完整链接>" -f json → 评论
    • opencli xiaohongshu download "<完整链接>" --output <临时目录> -f json → 图片 / 视频
  2. 建文件夹 + 落媒体——跑脚本,编号、去重、建骨架、字段表、图片按序落位都由它做:

    python3 "<本技能目录>/scripts/create_note_folder.py" \
      --id <笔记ID> --title "<笔记标题>" --type 图文|视频 \
      --author "<作者>" --published <YYYY-MM-DD> --url "<完整链接>" \
      --likes <N> --collects <N> --comments <N> \
      --media-dir <下载临时目录>
    

    返回的 JSON 里有文件夹绝对路径、编号、已存在、以及落了哪些图。

    • 类型由下载结果判定:含视频 → --type 视频,否则 --type 图文
    • 发布时间接口不返回时传空,脚本写「接口未提供」,不编造
    • 已存在: true 说明这条之前采过,脚本不会重复建也不覆盖——跳过第 3、4 步,直接做第 5 步
    • 脚本只按文件名顺序落名;页面顺序与文件名顺序不一致时(文章型笔记常见图片内页码角标「01/13」),在 OCR 那一步按页码重排图片文件与 03 的顺序
  3. 补内容——脚本已经把字段表填好了,只补它写不了的部分,用 Edit 改这几节,不要整份重写:

    • 正文、标签、评论列表:原文照抄,不概括、不改写、不分析
    • 「内容图片」一节按 01_原始素材/02-正文图片/ 的顺序嵌入本地图片引用
    • 视频笔记补「视频脚本」引用,图片笔记补「图片文案」引用
  4. 按类型出衍生文件:

    • 视频笔记:先看时长,超过 20 分钟先问用户要不要转,然后跑转写脚本——它自己看系统挑引擎(macOS + Apple 芯片走 mlx-whisper,Windows / Linux 走 faster-whisper),不用手工判断:

      python3 "<本技能目录>/scripts/transcribe.py" <视频文件> --out-dir <临时目录> --model medium
      

      转写稿出来后删掉原片,再出 05_视频脚本.md 与 04_文案结构化梳理.md(格式分别见 assets/视频脚本模板.md、assets/文案结构化梳理模板.md)。 转写稿要按上下文语义修正明显误转词(同音字、专有名词),只修错别字,不润色、不改口语表达,拿不准的原样保留并在文末「修正说明」里列出。 脚本报「两个转写引擎都没装」时,把它的提示原样转给用户,装不装由用户定;用户不装就只存信息与封面,跳过转写。

    • 图片笔记:封面带「全文N字」标记、或图片 ≥3 张、或正文为空 → 跑 OCR 脚本,出 03_图片文案原文.md 与 04_文案结构化梳理.md:

      python3 "<本技能目录>/scripts/ocr.py" --dir "<笔记文件夹>/01_原始素材/02-正文图片"
      

      脚本在本地认字,图片不进模型——不吃图片 token,也不受「图片被当成文字喂给模型」那类链路故障影响。输出已按坐标还原排版(表格按行、栏位用 | 分界)。

      • 拿脚本输出做底稿,交给模型按语义修一遍再落 03:脚本是按坐标拼的,仍会有断行、错字(同音字、形近字)、栏位内多个片段的先后顺序问题。把认出来的字给模型,按上下文语义修正,只修明显错误,不润色、不重写、不增删内容——和视频转写的处理方式一致

      • 图片内见页码角标(如「1/4」)时,先按页码重排图片文件与本文顺序

      • 先只跑第一张,确认出得来字、内容对得上,再跑其余;第一张就不对就停下来查,别整批跑完才发现

      • 不要把原图交给模型读。原图进了提示词就是 base64 文本,一张约十万 token(2026-10-07 实测:7 张图把单轮输入从 6.9 万顶到 46.8 万),此后每轮请求还带着它重发。要图里的字,就走上面的 OCR

      • OCR 没装或跑不通时,先给用户安装命令;确实装不上、又必须看图(比如要照着版式写一篇),先用 scripts/shrink.py 压小再读:

        python3 "<本技能目录>/scripts/shrink.py" --dir "<笔记文件夹>/01_原始素材/02-正文图片" --out .tmp/shrink-<笔记ID> --max-edge 800
        

        压完一张图降到原来的三分之一左右(实测 192KB → 67KB)。一次最多读封面加一张内页,不要整批读。压缩件放临时目录,用完删掉,不写进素材夹

      • 读图拿到乱码、一大段编码数据、或与图无关的内容 → 立刻停手,不要接着读第二张,向用户报告链路异常

  5. 回写标记——跑脚本,不要手工编辑链接文档:

    python3 "<本技能目录>/scripts/link_doc.py" mark <笔记ID>
    

    脚本只往那一行行尾追加「(已入库 ✓ 日期)」,其余行逐字不动,改前先留一份 .bak。 JSON 条目会顺带把原文剪切归档到 03_知识库/04_采集JSON存档/,原行换成一行记录——原文先落盘、确认写好才替换,不会只删不存。

第三步:入库后检查

全部处理完后,按 references/入库检查清单.md 执行检查,更新 规律研究/对标内容采集/_入库检查报告.md。

先跑 scripts/check_library.py 拿客观事实(条数、字段齐不齐、图片在不在、![[xx.jpg]] 指得对不对),只让模型做脚本做不了的那一项——判断疑似重复,再写报告。不要为了数条数去逐个读文件:全库读一遍是几十万 token,脚本跑一遍是两千。

该清单扫的是全库口径,报告是全平台共用的。

第四步:汇报

  • 新增入库条数(列出文件夹位置)
  • 跳过重复条数、失败条数及原因
  • 图片下载成功 / 失败数量
  • 正文为空的条数(哪些已用 OCR 补充)
  • 视频转录条数及脚本位置
  • 主页链接列表、其他平台链接(未处理)
  • 当前 对标内容采集/ 已入库总数

JSON 模式(社媒助手复制粘贴)

社媒助手(Chrome 插件)复制的笔记 JSON,跟普通链接一样处理——两种输入形式的产出完全一致。JSON 可能直接发在对话框里,也可能已经贴在链接文档里。

若 JSON 在对话里:先把它追加进 对标采集内容链接.md(一行一条),之后全走脚本,不手工解析。

处理步骤:

  1. link_doc.py list 认出这条,再 link_doc.py show <笔记ID> 取字段——脚本会把 JSON 展开成结构化字段,原文不用进上下文:标题、类型、正文、博主昵称、发布时间、点赞/收藏/评论/分享量、图片链接、视频链接与时长。
  2. 建文件夹与后续步骤同「工作流 · 第二步」,两处差别:链接来自 show 的结果而不是链接文档;图片用 curl 按 图片 数组的顺序下载(命令见 references/commands.md),下到同一个临时目录后照样交给 --media-dir,由脚本改名、复制封面。下载失败的图片记录原链接,不跳过。
  3. JSON 不含评论内容,评论一节写「未采集(插件复制数据未含评论内容)」;有分享量就补一行「分享量」。
  4. 回写标记用 link_doc.py mark <笔记ID>——脚本会同时完成「行尾加标记」与「JSON 原文剪切归档」两件事。
  5. 归档 CSV 由编排器批量采完后统一跑,本技能不跑。

Common Mistakes

  • 把 user/profile 主页链接当笔记处理 → 主页不是单条内容,脚本会单独列出来,照原样汇报即可
  • 文章型笔记不 OCR → 小红书大量「文字长图」笔记,正文只是引流文案,内容全在图片里;图片 ≥3 张或封面含「全文N字」必须跑 scripts/ocr.py,且原文与结构化梳理两份都要出
  • 图片顺序错 → 先按 download 返回的原始顺序排,再核对图片内页码角标,有页码就必须按页码重排
  • 把原图直接交给模型读 → 图片会以 base64 文本进提示词,一张原图约十万 token,此后每轮请求都带着重发。要文字走 scripts/ocr.py;必须看版式就先跑 scripts/shrink.py 压小,一次最多读两张(2026-10-07 实测:7 张图把单轮输入从 6.9 万顶到 46.8 万,峰值 88 万)
  • 读图读到乱码还接着读 → 拿到的是编码数据而不是图里的字,说明这条链路坏了;立刻停手报告,不要一张接一张读下去(2026-10-03 实发:一张图把上下文从 58k 顶到 249k)
  • 一条一条串行发命令 → 一次回复里的多个工具调用只算 1 次请求,串行发就是一次一条。做法见「少花调用次数」
  • 转录视频前未确认音频时长 → 长视频(>20 分钟)先问用户要不要转
  • 转写错别字不修正,或把原文提炼成要点 → 必须按上下文语义保守修正误转词;结构化分段用小标题 + 原文,最大化还原,不提炼、不压缩、不概括
  • 从链接里截掉 ?xsec_token= 参数 → opencli ≥1.8 要求签名 URL,截了直接报 ARGUMENT 错
  • 批量采集无间隔 → 条与条之间必须 sleep 5,遇风控提到 10-15 秒,不要并发多条笔记
  • 手工编辑链接文档 → 一律走 link_doc.py mark,脚本只追加、只动自己那一行,改前留备份

不做什么

  • 不识别链接属于哪个平台——那是编排器的事
  • 不建目录——平台目录与环境由初始化技能建好(笔记自己的文件夹由建夹脚本建)
  • 不提规律、不沉淀卡片——规律走 pattern-extractor-buheliwa,知识卡片走 thought-card-buheliwa
  • 不跑归档 CSV——「已入库 ✓」标记由本技能写,归档由编排器批量采完后统一跑

Resources