小红书收藏太多怎么办?AI一键帮我搬好分类好

最近因为原来绑定的小红书手机号不用了,我打算把旧账号里的收藏夹笔记批量导出来,却一直找不到一个好用顺手的工具。说起来,你是不是也有过类似的烦恼?收藏夹越攒越多,每次想找灵感笔记时都要翻半天,结果还是找不到。
收藏就像“黑洞”,只进不出,时间一长就成了堆满杂物的信息垃圾场……
我也被这个问题困扰了很久,直到我用AI,终于解决了它!于是我做了一个小红书收藏夹一键导出的小工具,能够自动的将你收藏夹里面的所有笔记数据导出,支持笔记标题、作者、点赞数、笔记链接、图片链接等等信息,效果长这样:
一键导出小红书收藏夹效果视频
收藏多≠有用,问题到底出在哪?
小红书的收藏功能确实很好用,点个收藏、建个文件夹,一秒钟完成。但:
文件夹数量多了,层级混乱;
内容种类杂,生活灵感、工作灵感、艺术创作、装修建议等等杂七杂八的全混在一起;
搜索功能不够强大,找一篇旧收藏要点半天。
久而久之,你会发现:“我只是习惯性收藏,但从来没回头看过它们。”
那我怎么去消费这些收藏夹的数据呢?
我做的第一件事情:把小红书收藏夹的内容导出,用AI做了“搬家+整理”处理。
要实现以上多维表格中的信息,简单来说包括几个以下步骤。
抓取收藏数据
通过第三方插件将收藏的链接、标题、封面、简介提取出来,我这里是使用了AI编程的方法给我实现了一个JavaScript脚本,直接复制直接安装在油猴脚本里面即可。当然,我也非常愿意跟你一起免费分享这个自己创作的好用工具,如果你也有需要获取同款工具可以直接在微信公众号后台回复“收藏夹”获取完整源码去使用。
在此之前需要你去Chrome应用商店里面下载一个“篡改猴”,下载地址:
https://chromewebstore.google.com/detail/%E7%AF%A1%E6%94%B9%E7%8C%B4/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=zh-CN&utm_source=ext_sidebar

篡改猴Chrome下载地址页Chrome浏览器安装后之后,然后把这个小红书收藏夹导出的脚本文件添加到篡改后里面即可。
在篡改猴中添加新脚本
添加上我们提供的新脚本
然后进入你的小红书网页版的收藏夹界面,点击“自动滚动”即可,可以动态的看到当前获取到的笔记数量,最后一键导出即可,是不是非常方便?

可以看见收藏夹插件显示出来
导入知识库
最后把整理好的内容导入到飞书文档中,选择“多维表格”结构的知识库中,真正变成“用得上的灵感库”。

上传数据到多维表格
内容分类/标签补全
让AI自动识别内容主题、提取关键词等,方便后期检索。
我在多维表格里面去新增一列“字段捷径”,然后使用“自定义AI内容”进行填充,我主要写的提示词是让AI识别标题生成关键词即可,这里面还有非常多可以玩的空间,我们在接下来的飞书多维表格+字段捷径等案例里面会给大家细细道来,是一个非常棒非常方便的工具。

字段捷径添加AI自动填充
AI的整理效果有多好?
举个例子,我以前的小红书收藏夹里有1000+篇笔记,现在用AI处理后变成这样:

自动生成了AI分类类别
每一类都清清楚楚,甚至连标题、摘要、关键词、原链接都有留存,检索和筛选也特别方便。同时这个数据如果作为知识库数据能够被大模型学习引用到,你在搜索相关问题、生成相关内容的时候就能够更加垂直精准了!当然这里面还有非常大的用途,我们在后续的小红书各种实践案例集合里面都会慢慢用到,比如读取文章链接后解析正文内容、仿写、拆解等等,我们后面再逐步分享。
别让灵感沉没,把它们变成你的资产
收藏本身没错,关键是要让这些内容可用、可查、可激发灵感。
AI带来的不是炫技,而是真正能解决“信息焦虑”的好工具。
所以,别再让你的收藏夹变成“遗忘角落”,试着动手用AI来一次“搬家整理”吧,也许你会重新发现很多当时收藏时的闪光点。
题图来自 Unsplash,基于CC0协议
本文由人人都是产品经理作者@银海,原创投稿或授权 发布于人人都是产品经理,未经许可,禁止转载。

起点课堂会员权益





安装之后不会弹出自动滚动,是什么样的原因?
重启一下浏览器试试,不是关闭标签页,是浏览器退出再打开同样页面
按照老师教的流程,终于成功导出了收藏夹清单,方便了好多!!!要是点赞列表也能导出就好了
让ai改了一版我自己跑是能成功的,试下呢?
// ==UserScript==
// @name 小红书点赞导出工具
// @namespace http://tampermonkey.net/
// @version 0.2
// @description 自动导出小红书点赞内容为Excel格式
// @match https://www.xiaohongshu.com/user/profile/*
// @icon https://www.xiaohongshu.com/favicon.ico
// @grant GM_xmlhttpRequest
// @grant GM_addStyle
// @require https://unpkg.com/xlsx/dist/xlsx.full.min.js
// @author @AI产品银海 / modified by Wenke
// ==/UserScript==
(function() {
‘use strict’;
// 存储点赞数据
let collectedNotes = [];
// 检测系统主题
function isDarkMode() {
return window.matchMedia && window.matchMedia(‘(prefers-color-scheme: dark)’).matches;
}
// 监听系统主题变化
function initThemeListener(container) {
window.matchMedia(‘(prefers-color-scheme: dark)’).addEventListener(‘change’, e => {
updateTheme(container, e.matches);
});
}
// 更新主题样式
function updateTheme(container, isDark) {
if (isDark) {
container.style.background = ‘rgba(0, 0, 0, 0.7)’;
container.style.border = ‘1px solid rgba(255, 255, 255, 0.1)’;
} else {
container.style.background = ‘rgba(255, 255, 255, 0.15)’;
container.style.border = ‘1px solid rgba(255, 255, 255, 0.18)’;
}
}
// 添加按钮和计数器的样式
GM_addStyle(`
.xhs-tool-container.dragging {
opacity: 0.9;
cursor: grabbing !important;
}
.xhs-tool-container {
position: fixed;
top: 20px;
right: 20px;
display: flex;
flex-direction: column;
gap: 12px;
z-index: 9999;
background: ${isDarkMode() ? ‘rgba(0, 0, 0, 0.7)’ : ‘rgba(255, 255, 255, 0.15)’};
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
padding: 15px;
border-radius: 16px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
border: 1px solid rgba(255, 255, 255, 0.18);
cursor: grab;
transition: all 0s ease;
}
.xhs-tool-container.snapping {
transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.xhs-tool-container:hover {
background: rgba(255, 255, 255, 0.25);
}
.xhs-button {
padding: 12px 24px;
background: linear-gradient(135deg, #ff2442 0%, #ff4d64 100%);
color: white;
border: none;
border-radius: 12px;
cursor: pointer;
font-size: 14px;
font-weight: 500;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(255, 36, 66, 0.2);
}
.xhs-button:hover {
background: linear-gradient(135deg, #ff2442 0%, #ff3850 100%);
transform: translateY(-1px);
box-shadow: 0 6px 20px rgba(255, 36, 66, 0.3);
}
.xhs-button:active {
transform: translateY(1px);
box-shadow: 0 2px 10px rgba(255, 36, 66, 0.2);
}
.note-counter {
background: rgba(0, 0, 0, 0.6);
color: white;
padding: 12px 24px;
min-width: 180px;
white-space: nowrap;
border-radius: 12px;
text-align: center;
font-size: 14px;
font-weight: 500;
backdrop-filter: blur(5px);
-webkit-backdrop-filter: blur(5px);
border: 1px solid rgba(255, 255, 255, 0.1);
letter-spacing: 0.5px;
}
.powered-by {
font-size: 12px;
color: rgba(255, 255, 255, 0.7);
text-align: center;
margin-top: 5px;
}
.powered-by a {
color: rgba(255, 255, 255, 0.9);
text-decoration: none;
font-weight: 500;
}
.powered-by a:hover {
text-decoration: underline;
}
`);
// 创建UI元素
function createUI() {
const container = document.createElement(‘div’);
container.className = ‘xhs-tool-container’;
// 创建计数器
const counter = document.createElement(‘div’);
counter.className = ‘note-counter’;
counter.textContent = ‘已获取点赞笔记:0’;
counter.id = ‘note-counter’;
// 创建导出按钮
const exportButton = document.createElement(‘button’);
exportButton.className = ‘xhs-button’;
exportButton.textContent = ‘导出点赞’;
exportButton.addEventListener(‘click’, exportToExcel);
// 创建自动滚动按钮
const scrollButton = document.createElement(‘button’);
scrollButton.className = ‘xhs-button’;
scrollButton.textContent = ‘自动滚动获取’;
scrollButton.id = ‘xhs-scroll-button’;
scrollButton.addEventListener(‘click’, toggleAutoScroll);
// 创建”Powered by”元素
const poweredBy = document.createElement(‘div’);
poweredBy.className = ‘powered-by’;
poweredBy.innerHTML = ‘Powered by @AI产品银海‘;
container.appendChild(counter);
container.appendChild(exportButton);
container.appendChild(scrollButton);
container.appendChild(poweredBy);
document.body.appendChild(container);
}
// 自动滚动相关变量和函数
let isAutoScrolling = false;
let scrollInterval;
function toggleAutoScroll() {
const scrollButton = document.getElementById(‘xhs-scroll-button’);
if (isAutoScrolling) {
stopAutoScroll();
scrollButton.textContent = ‘自动滚动获取’;
scrollButton.style.background = ‘linear-gradient(135deg, #ff2442 0%, #ff4d64 100%)’;
} else {
startAutoScroll();
scrollButton.textContent = ‘停止滚动’;
scrollButton.style.background = ‘linear-gradient(135deg, #666 0%, #888 100%)’;
}
isAutoScrolling = !isAutoScrolling;
}
function startAutoScroll() {
scrollInterval = setInterval(() => {
window.scrollTo(0, document.documentElement.scrollHeight);
}, 1000);
}
function stopAutoScroll() {
if (scrollInterval) {
clearInterval(scrollInterval);
}
}
// 拦截 XHR 请求
function interceptXHR() {
const originalOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url) {
if (typeof url === ‘string’ && url.includes(‘api/sns/web/v1/note/like/page’)) {
this.addEventListener(‘load’, function() {
try {
const response = JSON.parse(this.responseText);
if (response.success && response.data && response.data.notes) {
processNotes(response.data.notes);
}
} catch (error) {
console.error(‘解析XHR响应数据失败:’, error);
}
});
}
return originalOpen.apply(this, arguments);
};
}
// 拦截 Fetch 请求
function interceptFetch() {
const originalFetch = window.fetch;
window.fetch = async function(url, options) {
const response = await originalFetch.apply(this, arguments);
try {
const requestUrl = typeof url === ‘string’ ? url : url.url;
if (requestUrl && requestUrl.includes(‘api/sns/web/v1/note/like/page’)) {
response.clone().json().then(data => {
if (data.success && data.data && data.data.notes) {
processNotes(data.data.notes);
}
}).catch(error => {
console.error(‘解析Fetch响应数据失败:’, error);
});
}
} catch (error) {
console.error(‘Fetch拦截处理失败:’, error);
}
return response;
};
}
// 处理笔记数据
function processNotes(notes) {
const counter = document.getElementById(‘note-counter’);
notes.forEach(note => {
const processedNote = {
note_id: note.note_id || ‘Unknown’,
xsec_token: note.xsec_token || ‘Unknown’,
display_title: note.display_title || ‘Unknown’,
user_id: note.user?.user_id || ‘Unknown’,
nickname: note.user?.nickname || ‘Unknown’,
avatar: note.user?.avatar || ‘Unknown’,
liked_count: note.interact_info?.liked_count || ‘Unknown’,
cover_url_pre: note.cover?.url_pre || ‘Unknown’,
cover_url_default: note.cover?.url_default || ‘Unknown’,
request_url: `https://www.xiaohongshu.com/explore/${note.note_id}?xsec_token=${note.xsec_token}&xsec_source=pc_user_like`
};
// 避免重复添加
if (!collectedNotes.some(n => n.note_id === processedNote.note_id)) {
collectedNotes.push(processedNote);
}
});
// 更新计数器
if (counter) {
counter.textContent = `已获取点赞笔记:${collectedNotes.length}`;
}
}
// 导出为Excel
function exportToExcel() {
if (collectedNotes.length === 0) {
alert(‘暂未获取到点赞数据。请先进入小红书个人主页的“赞过/点赞”页面,并滚动加载内容。’);
return;
}
const worksheet = XLSX.utils.json_to_sheet(collectedNotes);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, ‘点赞’);
// 设置列宽
const columnWidths = [
{wch: 30}, // note_id
{wch: 50}, // xsec_token
{wch: 40}, // display_title
{wch: 30}, // user_id
{wch: 15}, // nickname
{wch: 50}, // avatar
{wch: 10}, // liked_count
{wch: 50}, // cover_url_pre
{wch: 50}, // cover_url_default
{wch: 100} // request_url
];
worksheet[‘!cols’] = columnWidths;
// 导出文件
const dateText = new Date().toLocaleDateString().replace(/\//g, ‘-‘);
const fileName = `小红书点赞_${dateText}.xlsx`;
XLSX.writeFile(workbook, fileName);
}
// 拖动相关功能
function initDraggable(container) {
let isDragging = false;
let currentX;
let currentY;
let initialX;
let initialY;
let xOffset = 0;
let yOffset = 0;
// 从localStorage获取上次位置
const savedPosition = localStorage.getItem(‘xhs-tool-position’);
if (savedPosition) {
try {
const { x, y } = JSON.parse(savedPosition);
container.style.right = ‘auto’;
container.style.left = x + ‘px’;
container.style.top = y + ‘px’;
xOffset = x;
yOffset = y;
} catch (error) {
console.error(‘恢复位置失败:’, error);
}
}
function dragStart(e) {
if (e.target.tagName === ‘BUTTON’) return;
const rect = container.getBoundingClientRect();
xOffset = rect.left;
yOffset = rect.top;
initialX = e.clientX – xOffset;
initialY = e.clientY – yOffset;
if (e.target === container || e.target.className === ‘note-counter’) {
isDragging = true;
container.classList.add(‘dragging’);
}
}
function dragEnd() {
if (!isDragging) return;
initialX = currentX;
initialY = currentY;
isDragging = false;
container.classList.remove(‘dragging’);
// 添加吸附动画类
container.classList.add(‘snapping’);
// 磁吸效果
const rect = container.getBoundingClientRect();
const viewportWidth = window.innerWidth;
const viewportHeight = window.innerHeight;
const threshold = 100;
const safeDistance = 20;
let targetX = currentX;
let targetY = currentY;
// 只允许左右两边吸附
if (rect.left viewportWidth – threshold) {
targetX = viewportWidth – rect.width – safeDistance;
} else if (rect.left < viewportWidth / 2) {
targetX = safeDistance;
} else {
targetX = viewportWidth – rect.width – safeDistance;
}
// 垂直方向保持原位置,只做边界检查
if (currentY viewportHeight – rect.height – safeDistance) {
targetY = viewportHeight – rect.height – safeDistance;
}
currentX = targetX;
currentY = targetY;
setTimeout(() => {
container.classList.remove(‘snapping’);
}, 300);
localStorage.setItem(‘xhs-tool-position’, JSON.stringify({
x: currentX,
y: currentY
}));
setTranslate(currentX, currentY, container);
}
function drag(e) {
if (!isDragging) return;
e.preventDefault();
currentX = e.clientX – initialX;
currentY = e.clientY – initialY;
const rect = container.getBoundingClientRect();
const viewportWidth = window.innerWidth;
const viewportHeight = window.innerHeight;
const safeDistance = 20;
if (currentX < safeDistance) currentX = safeDistance;
if (currentY viewportWidth – rect.width – safeDistance) {
currentX = viewportWidth – rect.width – safeDistance;
}
if (currentY > viewportHeight – rect.height – safeDistance) {
currentY = viewportHeight – rect.height – safeDistance;
}
xOffset = currentX;
yOffset = currentY;
container.classList.remove(‘snapping’);
setTranslate(currentX, currentY, container);
}
function setTranslate(xPos, yPos, el) {
el.style.left = `${xPos}px`;
el.style.top = `${yPos}px`;
el.style.right = ‘auto’;
}
container.addEventListener(‘mousedown’, dragStart);
document.addEventListener(‘mousemove’, drag);
document.addEventListener(‘mouseup’, dragEnd);
}
// 初始化
function init() {
createUI();
interceptXHR();
interceptFetch();
const container = document.querySelector(‘.xhs-tool-container’);
if (container) {
initDraggable(container);
updateTheme(container, isDarkMode());
initThemeListener(container);
}
}
// 等待页面加载完成后初始化
if (document.readyState === ‘loading’) {
document.addEventListener(‘DOMContentLoaded’, init);
} else {
init();
}
})();
老师我安装好打开之后,不会弹出自动滚动,还什么原因呀
我也是
重启一下浏览器试试,不是关闭标签页,是浏览器退出再打开同样页面
脚本怎么不放出来呢?
作者放夸克网盘了。链接:https://pan.quark.cn/s/72c83db58a8c