$npx -y skills add chubbyguan/chubbyskills --skill xiaohongshu-ingest小红书笔记采集 → 统一 frontmatter Markdown → 爆款拆解 + 衍生选题。 支持笔记链接和 xhslink 短链;爆款拆解按「人群×场景×痛点×情绪×钩子」生成可复用选题。
| 1 | # 小红书采集 + 爆款拆解 Skill |
| 2 | |
| 3 | 把小红书笔记抓成结构化 Markdown 入库,再用 DeepSeek 拆解爆款逻辑、衍生可直接写的选题。 |
| 4 | **自动区分图文与视频笔记**:图文 → 下载图片本地嵌入;视频 → 像抖音那样转成文字稿。 |
| 5 | 补齐了仓库在「中文内容采集」上最大的平台缺口,也是「采集 → 选题」创作工作流的起点。 |
| 6 | |
| 7 | ## 环境要求 |
| 8 | |
| 9 | ```bash |
| 10 | # 图文采集零依赖(仅 Python 标准库) |
| 11 | |
| 12 | # 视频笔记转录需要(与抖音/B站转录同一套依赖): |
| 13 | pip install funasr modelscope torch torchaudio |
| 14 | # macOS: brew install ffmpeg | Ubuntu: sudo apt install ffmpeg |
| 15 | |
| 16 | # 强烈建议:配置 cookie 以规避风控(从浏览器登录后复制) |
| 17 | export XHS_COOKIE="你的小红书 cookie 字符串" |
| 18 | |
| 19 | # 爆款拆解需要 DeepSeek API Key |
| 20 | export DEEPSEEK_API_KEY="your-api-key" |
| 21 | ``` |
| 22 | |
| 23 | ## 使用方法 |
| 24 | |
| 25 | ```bash |
| 26 | # 1) 采集笔记 → 统一 frontmatter Markdown |
| 27 | python scripts/fetch_note.py "https://www.xiaohongshu.com/explore/xxxx" -o ./out |
| 28 | python scripts/fetch_note.py "http://xhslink.com/xxxx" -o ./out |
| 29 | python scripts/fetch_note.py "链接" -o ./out --no-images # 图文:只留图片链接不下载 |
| 30 | python scripts/fetch_note.py "链接" -o ./out --no-video # 视频:不转录,只留视频链接 |
| 31 | python scripts/fetch_note.py "链接" -o ./out --fallback-text 手动正文.txt |
| 32 | |
| 33 | # 2) 爆款拆解 → 拆解报告 + 5 条衍生选题 |
| 34 | python scripts/analyze_hook.py ./out/某笔记.md -o ./out |
| 35 | ``` |
| 36 | |
| 37 | ## 产出 |
| 38 | |
| 39 | - `fetch_note.py`:标题、正文、标签、作者、互动数据(赞/藏/评)→ 统一 frontmatter Markdown(`platform: xiaohongshu`,含 `note_type: image|video`)。**按笔记类型分流**: |
| 40 | - **图文笔记**:图片下载到本地 `<标题>.assets/` 并以 `![]()` 嵌入(正文常在图里,本地化后 Obsidian 直接可见)。`--no-images` 只留链接,单张失败自动回退为链接 |
| 41 | - **视频笔记**:提取视频直链 → ffmpeg 抽音频 → SenseVoice 转录为文字稿写入 `## 视频文字稿`。`--no-video` 只留视频链接;缺 funasr/ffmpeg 时自动降级为存链接 |
| 42 | - `analyze_hook.py`:目标人群 / 场景 / 痛点 / 情绪价值 / 标题钩子 / 正文结构 / 可复用模板 / 5 条衍生选题(带 `- [ ]` 勾选,可直接进选题库) |
| 43 | |
| 44 | ## ⚠️ 关于反爬(务必先读) |
| 45 | |
| 46 | 小红书风控严格,**未登录的纯脚本访问经常被拦**。本 skill 的策略: |
| 47 | |
| 48 | 1. 优先解析页面内嵌的 `__INITIAL_STATE__` 结构化数据 |
| 49 | 2. 失败则回退到 `og:` 元标签 |
| 50 | 3. 仍失败时给出明确提示——此时可**手动复制笔记正文**存成 `.txt`,用 `--fallback-text` 继续生成统一 Markdown,或直接走 `analyze_hook.py` 拆解(拆解环节不依赖抓取) |
| 51 | |
| 52 | 提供 `XHS_COOKIE` 能显著提高采集成功率。页面结构若调整,需更新 `fetch_note.py` 里的选择器。 |
| 53 | |
| 54 | ## 合规声明 |
| 55 | |
| 56 | 仅供**个人学习与研究**使用。请遵守小红书用户协议与 robots 规则,控制请求频率,不要用于批量抓取、商用爬取或侵犯他人权益的场景。 |
| 57 | |
| 58 | ## 衔接工作流 |
| 59 | |
| 60 | - 采集产物 → `knowledge-base-management` 入库(统一 frontmatter,按 `platform` 聚合) |
| 61 | - 衍生选题 → 创作者选题流(采集 → 拆解 → 选题库 → 初稿) |
| 62 | - 多篇拆解 → 沉淀「爆款选题库」,对接 `industry-intelligence-radar` 的趋势信号 |
| 63 | |
| 64 | ## 参考 |
| 65 | |
| 66 | - 小红书爆款方法论:人群 × 场景 × 痛点 + 情绪价值 |
| 67 | - [DeepSeek](https://platform.deepseek.com/) — 拆解用 LLM |