「小红书追求策略顾问」—— 当用户想追一个人时,给出目标对象的小红书主页链接, 通过 Claude in Chrome 深度浏览并分析其公开内容,生成一份包含社会画像分析和 个性化追求策略路线图的交互式 HTML 报告。 当用户提到「分析这个人的小红书」「我想追这个人」「帮我看看这个博主」 「分析一下TA的账号」「给我出个追求方案」「想认识这个人怎么搭话」 「小红书用户分析」「怎么接近这个人」「社交策略」时,使用此 Skill。 也适用于纯画像分析场景(不带追求目的),此时跳过策略部分只输出画像报告。 需要 Claude in Chrome 浏览器工具。
这个 Skill 有三个能力层次:
整个流程:深度数据采集 → 多维画像分析 → 理想型推断 → 追求策略生成 → 可视化报告输出
第一步永远是提醒用户:「为了获得最好的分析效果,请确保你当前的浏览器已经登录了小红书。」
数据采集是整个分析的基础。采集分为三大部分:笔记列表扫描、笔记抽样深读、收藏夹全量扫描。
导航到目标用户主页,等待 3 秒加载完成后截图。采集:
├── 昵称、小红书号
├── 个人签名 / 简介(非常重要——往往是自我定位的浓缩)
├── IP 属地
├── 星座/年龄等标签(如有展示)
├── 粉丝数 / 关注数 / 获赞与收藏数
├── 头像风格描述
└── 主页背景图(如有)
确认笔记总量: 用 read_page 或 JavaScript 提取「笔记」tab 旁的数字。记录 TOTAL_NOTES。
目标:扫描所有笔记标题和基础信息。 这是后续分析的索引。
小红书主页使用虚拟滚动(virtual scrolling)——DOM 中只保留当前可见的笔记元素,滚出视窗的会被移除。所以不能滚完再提取,必须边滚边收集。
自动滚动收集器模式(推荐):
注入以下 JavaScript 到页面,它会在滚动过程中持续收集数据并自动去重:
// 初始化收集器(Map 自动去重)
window._noteCollector = { notes: new Map(), scanCount: 0 };
function collectNotes() {
const sections = document.querySelectorAll('section.note-item, section[class*="note"]');
sections.forEach(s => {
const titleEl = s.querySelector('.title span, a .title span');
const authorEl = s.querySelector('.author-wrapper .name, .footer .name');
const likeEl = s.querySelector('.like-wrapper .count, .engagement .count');
if (titleEl) {
const title = titleEl.textContent.trim();
const likes = likeEl ? likeEl.textContent.trim() : '0';
// 用标题前30字符作为去重 key
const key = title.substring(0, 30);
if (!window._noteCollector.notes.has(key)) {
window._noteCollector.notes.set(key, { title, likes });
}
}
});
window._noteCollector.scanCount = window._noteCollector.notes.size;
}
// 自动滚动 + 收集
async function autoScrollCollect() {
window._scrollDone = false;
let prevCount = 0;
let sameStreak = 0;
for (let i = 0; i < 500; i++) {
collectNotes();
window.scrollBy(0, 500);
await new Promise(r => setTimeout(r, 400));
const current = window._noteCollector.notes.size;
if (current === prevCount) {
sameStreak++;
if (sameStreak > 20) break; // 连续20次无新内容 = 到底了
} else {
sameStreak = 0;
}
prevCount = current;
}
window._scrollDone = true;
}
autoScrollCollect();
注入后等待 30-60 秒(取决于笔记总量),然后检查 window._scrollDone 和 window._noteCollector.scanCount。
Chrome 浏览器扩展断连处理: 等待期间 Claude in Chrome 扩展可能断开连接。如果 tabs_context_mcp 报错或无法访问 tab,重新调用 tabs_context_mcp 获取新的 tab 连接,然后用 JavaScript 检查后台脚本是否已完成(检查 window._scrollDone)。
数据提取: 收集完成后,分批提取(每批100条避免 JSON 截断):
const arr = Array.from(window._noteCollector.notes.values());
JSON.stringify(arr.slice(0, 100)); // 第1批
// JSON.stringify(arr.slice(100, 200)); // 第2批,以此类推
到底确认: 如果连续 20 次滚动后笔记数不再增加,判定为已到底。记录实际扫到的总数和覆盖率。
笔记深读的目的不是逐条阅读所有内容(那在大量笔记时不现实),而是精选有代表性的笔记获取深度信息。配合已有的全量标题列表,少量精读足以支撑高质量分析。
选择策略——精准抽样:
对每条深读笔记,采集:
├── 完整正文(用 get_page_text)
├── 所有 #标签
├── 发布日期/时间
├── 点赞、收藏、评论数
├── 图片内容描述(截图观察)
├── 评论区分析(前 20 条评论 + 博主回复)
└── 读完后用浏览器返回主页
收藏内容是整个分析中含金量最高的数据。 一个人发布的内容是「前台表演」(front-stage performance),而收藏的内容是 TA 的「内隐偏好」(implicit preferences)——TA 真正在意的、想反复看的、不方便发但很向往的东西。
对理想型推断和追求策略来说,收藏夹数据的价值甚至超过笔记本身。
操作流程:
// 重置收集器(避免残留笔记 tab 的旧数据)
window._favCollector = { notes: new Map(), scanCount: 0 };
function collectFavs() {
const sections = document.querySelectorAll('section');
sections.forEach(s => {
const titleEl = s.querySelector('.title span');
const authorEl = s.querySelector('.author-wrapper .name, .footer .name');
const likeEl = s.querySelector('.like-wrapper .count');
if (titleEl && authorEl) {
const title = titleEl.textContent.trim();
const author = authorEl.textContent.trim();
const likes = likeEl ? likeEl.textContent.trim() : '0';
const key = title.substring(0, 30) + '|' + author;
if (!window._favCollector.notes.has(key)) {
window._favCollector.notes.set(key, { t: title, a: author, l: likes });
}
}
});
window._favCollector.scanCount = window._favCollector.notes.size;
}
async function autoScrollFavs() {
window._favScrollDone = false;
// 先滚到顶部确保从头开始
window.scrollTo(0, 0);
await new Promise(r => setTimeout(r, 1000));
let prevCount = 0;
let sameStreak = 0;
for (let i = 0; i < 500; i++) {
collectFavs();
window.scrollBy(0, 500);
await new Promise(r => setTimeout(r, 350));
const current = window._favCollector.notes.size;
if (current === prevCount) {
sameStreak++;
if (sameStreak > 25) break;
} else {
sameStreak = 0;
}
prevCount = current;
}
window._favScrollDone = true;
}
autoScrollFavs();
// 关键词分类模板(根据实际内容调整类别和关键词)
const categories = {
'美妆/护肤': ['化妆', '护肤', '防晒', '面膜', '口红', '粉底'],
'穿搭/时尚': ['穿搭', 'ootd', '搭配', '时尚', '衣服'],
'美食/探店': ['美食', '餐厅', '探店', '甜品', '咖啡'],
'旅行': ['旅行', '旅游', '攻略', '打卡', '酒店'],
'健身/运动': ['健身', '运动', '瑜伽', '跑步', '减脂'],
'情感/恋爱': ['恋爱', '脱单', '约会', '暧昧', '表白', '男朋友', '女朋友'],
'职场/学习': ['工作', '面试', '考研', '留学', '雅思', '实习'],
'艺术/设计': ['画', '插画', '设计', '摄影', '艺术', 'art'],
'家居/生活': ['家居', '租房', '装修', '收纳', '好物'],
// 根据目标用户内容动态添加更多类别...
};
function categorize(items) {
const result = {};
Object.keys(categories).forEach(cat => result[cat] = []);
result['其他'] = [];
items.forEach(item => {
let matched = false;
for (const [cat, keywords] of Object.entries(categories)) {
if (keywords.some(kw => item.t.toLowerCase().includes(kw.toLowerCase()))) {
result[cat].push(item.t);
matched = true;
break;
}
}
if (!matched) result['其他'].push(item.t);
});
return Object.fromEntries(
Object.entries(result)
.filter(([k, v]) => v.length > 0)
.sort((a, b) => b[1].length - a[1].length)
);
}
const items = Array.from(window._favCollector.notes.values());
JSON.stringify(categorize(items));
关键词列表应根据目标用户的实际内容动态调整——先看一遍收藏标题的原始数据,识别出高频主题后再设计分类关键词。
├── 主题分布统计(各类别数量和占比)
├── 发布内容 vs 收藏内容的差异
│ (差异越大 → TA 的前台/后台差距越大)
├── 收藏中的情感类内容(恋爱技巧?情侣日常?)
├── 反复收藏的来源(同一博主被收藏多次 = 高度认同)
├── 隐藏兴趣(没发过但大量收藏的主题 = 秘密兴趣 = 破冰利器)
└── 消费/审美偏好线索
如果收藏是私密的,在报告中标注「收藏夹不可见」并跳过。
快速扫描 TA 关注了哪些类型的账号,分类统计。
采集完成后,输出采集报告:
📊 数据采集报告:
├── 笔记总数:X 条
├── 列表扫描:已扫描 A 条(覆盖率 XX%)
├── 精读深度:已精读 B 条
├── 收藏分析:已扫描 C / D 条(覆盖率 XX%)| 类别分布已统计
├── 关注列表:可见/不可见
└── 评论区互动:已分析 E 条笔记的评论区
详细的分析方法和信号体系,参见 references/analysis-framework.md。
维度一:基础人口学 —— 年龄段、性别、地区、城市线级、职业、教育水平 维度二:消费与生活方式 —— 消费能力、品牌偏好、兴趣标签、生活方式分类 维度三:心理与人格 —— Big Five、情感基调、价值观、沟通风格 维度四:社会关系与影响力 —— 用户类型、影响力、社群归属 维度五:时间行为模式 —— 发布规律、主题演变、活跃周期
维度六:社交互动偏好 —— TA 回复什么类型的评论、用什么口吻、偏好什么互动方式 维度七:情感状态推断 —— 是否有伴侣迹象(置信度极低,必须声明) 维度八:「吸引力密码」 —— TA 最引以为豪的身份、在意的品质、社交需求类型
这是基于心理学理论框架的综合推断——TA 会被什么样的人吸引?
理论基础(在报告中引用,增强可信度):
推断方法:结合「发布内容」(前台形象)+ 「收藏行为」(内隐偏好)+ 心理学理论,从 6 个维度推断理想型:
├── 审美共鸣力:TA 的审美体系是什么?什么视觉风格能引起共鸣?
├── 文化视野:TA 重视什么文化/知识领域?什么背景的人能产生话题?
├── 自我扩展力:TA 向往但尚未拥有什么?谁能带来新体验?
├── 安全型依恋:TA 需要什么样的情感稳定感?
├── 成长型人格:TA 欣赏什么样的自我提升姿态?
└── 情感联结力:TA 的情感表达习惯是什么?什么沟通方式最舒服?
每个维度都要有证据链:「从哪条笔记/收藏推断出来的 → 理论依据 → 结论 → 置信度」。
报告中必须声明:「此推断基于公开社交媒体内容的间接分析,结合心理学研究结论,但不等同于专业心理评估或现实中的择偶偏好。仅供参考。」
基于画像分析和理想型推断,生成个性化的追求策略。策略分阶段、有具体行动步骤、有示例话术、并对不同回应有应对方案。
策略总纲:
├── 核心策略原则(一句话概括)
├── 理想人设构建(Do's & Don'ts)
│
├── Phase 1:刷存在感(1-2周)
│ ├── 具体行动:在哪些笔记下评论、评论什么
│ ├── 示例话术:3-5 条量身定制的评论文案
│ └── 分支应对:积极/中性/无回应
│
├── Phase 2:建立连接(2-4周)
│ ├── 具体行动:如何开启私聊
│ ├── 示例话术:首条私信 2-3 个版本
│ └── 分支应对:详细回复/简短/已读不回
│
├── Phase 3:深入了解(3-6周)
│ ├── 转微信时机和话术
│ ├── 聊天节奏指南
│ └── 分支应对
│
├── Phase 4:线下见面(4-8周)
│ ├── 3 个量身定制的约会场景
│ └── 分支应对
│
└── Phase 5:关系升温(6-12周)
├── 增加专属感的行动
├── 表白时机判断
└── 分支应对
输出一份单文件交互式 HTML 报告,全部中文。
| Tab | 内容 |
|---|---|
| 📊 总览 | 一句话画像 + 关键标签 + 基础数据 + 五维雷达图 |
| 🔍 深度画像 | 八个维度的详细分析(每个带置信度和证据) |
| 💜 理想型画像 | 心理学理论框架 + 收藏行为分析图表 + 6维推断 + 匹配度自测 |
| 📋 笔记一览 | 所有已扫描笔记列表(可搜索/筛选) |
| 🎯 追求策略 | 核心原则 + Do's & Don'ts + 五阶段路线图 |
| 💬 话术锦囊 | 评论话术 + 私信话术 + 场景话术 |
| ℹ️ 方法论 | 数据采集报告 + 分析方法说明 + 局限性声明 |
这个 Tab 需要包含:
{昵称}_画像分析_{日期}.html(纯画像)或 {昵称}_画像与追求策略_{日期}.html(含策略)登录弹窗处理:小红书经常弹登录框。用 find 查找关闭按钮,或按 Escape。如果被重定向到登录页,用 navigate 的 back 返回。
滚动节奏:使用自动滚动脚本时,每步 500px + 350-400ms 间隔是安全的。手动滚动时每次 3-5 tick,间隔 2 秒。
虚拟滚动的关键影响:小红书使用虚拟滚动,DOM 只保留可见元素。所以不能「先滚完再提取」——必须用 Map 在滚动过程中持续收集并去重。这就是为什么上面推荐注入自动滚动收集器脚本。
Chrome 扩展断连:等待自动滚动脚本执行时(30-60秒),Claude in Chrome 扩展可能因超时断开连接。处理方式:
tabs_context_mcp 获取连接window._scrollDone)数据提取防截断:大量数据(>100条)通过 JavaScript 返回时可能被截断。分批提取:arr.slice(0, 100)、arr.slice(100, 200)……
收藏 tab 切换注意:从「笔记」tab 切到「收藏」tab 后,之前的 DOM 元素可能仍残留在页面中。收藏收集器必须使用全新的 Map(不要复用笔记收集器),并在开始前 scrollTo(0, 0) 回到顶部。