Coze一键采集小红书内容到多维表格,Coze 与 n8n 避坑指南

作为纯技术小白,此前为了搭建小红书二创工作流,我先尝试了 n8n。当时连界面上的英文都要逐句用工具翻译,对着航海手册一点点摸索,中途多次因为术语理解偏差卡壳,靠着豆包的翻译和指导,花了整整 8 小时才勉强完成小红书内容采集的第一步。本以为后续流程能顺顺利利,结果在生财看到 “Coze 可一键提取小红书内容” 的分享后,才发现之前的努力有多耗时 ——Coze 只需要添加一个节点,就能实现 n8n 大半天的配置效果。

抱着尝试的心态跟着圈友的分享操作 Coze,前半程都很顺利,直到卡在文本处理节点。这一卡就是两天,期间先后咨询了豆包、GPT、DeepSeek 三个工具,反复检查节点参数都没找到问题,翻了文章评论才发现,原来不止我一个人在这里遇到障碍。好几次想放弃,但想着既然有成功案例,就一定有解决办法。后来抱着试错的心态,在大模型的用户提示栏里补充了一段 “提示词”—— 明确要求 “解析小红书链接中的标题、正文、图片信息,对标题和正文进行二创改写,若图片包含文字,需提取文字内容并补充至对应字段”,没想到之前卡壳的问题瞬间解决,文本处理节点顺利运行。
现在用 Coze 实现小红书内容采集到多维表格,流程已经非常顺畅:只需要在多维表格的第一列填入目标小红书链接,系统就会自动完成一系列操作 —— 获取原文的标题、正文和图片,生成对应的二创标题与二创正文,要是图片里有文字,还能自动识别并同步到表格中。比如采集 “非洲翠手镯” 相关内容时,表格会同步呈现 “非洲翠,这块小众宝藏” 的二创标题,以及 “别再追着翡翠问价” 的二创正文,图片链接也会自动填充到对应列,后续无论是筛选还是二次编辑都很方便。

如果有读者已经在使用 n8n,也可以参考我之前的搭建经验避坑。在 n8n 中搭建小红书采集工作流,核心是处理数据格式与节点联动。比如需要用 Code 节点清洗图片链接 —— 将网页中的 og:image 字段提取后,存入 json 的 “图片 URL” 字段,具体配置时要注意 JSON 语法的正确性,像 “标题 ":"{{json["标题"]}}","正文":"{{json ["正文"]}}"," 图片 URL":"{{$json ["图片 URL"]}}" 这样的格式,少一个引号或逗号都可能导致节点报错。
测试验证环节也不能忽视,第一步要运行 Code 节点,检查输出的 json. 图片 URL 是否与 og:image 对应;第二步再运行多维表格节点,确认 “图片 URL” 列是否正确写入数据。要是遇到 og:image 字段不存在的情况,建议在 Code 节点中添加判断逻辑,让系统自动填充 “未获取到图片 URL”,避免因字段为空导致整个工作流中断。另外,除了 JSON 格式错误,飞书节点报错还可能是因为字段映射不匹配(比如表格列名与节点输出字段名不一致)、账号权限不足(未授予工具操作多维表格的权限),或是 URL 解析失败(链接失效或存在访问限制),排查时可以从这几个方向入手。
无论是 Coze 还是 n8n,这套小红书内容采集到多维表格的方案,适用场景其实很广。比如做小红书二创的创作者,不用再手动复制粘贴原文内容,也不用单独花时间改写标题和正文,系统自动生成的二创内容能直接作为创作素材;运营人员整理竞品小红书内容时,多维表格的筛选、分组功能可以快速对不同主题的内容分类,比如将 “氨糖”“翡翠” 相关内容分开管理,后续分析竞品方向更高效;即便是个人用户做内容储备,自动识别图片文字的功能也能省去手动转录的麻烦,比如采集膝盖护理相关内容时,图片里的 “氨糖是什么?它有什么作用” 会自动同步到表格,不用再逐字敲打。

文中涉及的 Coze 节点配置细节、n8n Code 节点 JSON 示例以及多维表格字段设置模板,我都整理成了完整教程包放在网盘,私信我即可免费获取,帮助大家少走我之前踩过的坑。
import requests
from bs4 import BeautifulSoup
import pytesseract
from PIL import Image
import io
import pandas as pd
from datetime import datetime
# 配置Tesseract路径(Windows需指定,Mac/Linux通常无需配置)
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def get_xiaohongshu_content(link):
"""
获取小红书链接对应的页面内容(标题、正文、图片链接)
:param link: 小红书目标链接
:return: 包含原始标题、正文、图片链接列表的字典
"""
# 设置请求头,模拟浏览器访问(避免被反爬拦截)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Referer': 'https://www.xiaohongshu.com/'
}
try:
# 发送请求获取页面内容
response = requests.get(link, headers=headers, timeout=10)
response.raise_for_status() # 若状态码非200,抛出异常
soup = BeautifulSoup(response.text, 'html.parser')
# 提取原始标题(需根据小红书页面结构调整选择器,此处为示例)
original_title = soup.find('h1', class_='title') # 实际class需以实时页面为准
original_title = original_title.get_text(strip=True) if original_title else '未获取到标题'
# 提取原始正文(同理,选择器需根据实际页面调整)
original_content = soup.find('div', class_='content') # 实际class需以实时页面为准
original_content = original_content.get_text(strip=True) if original_content else '未获取到正文'
# 提取图片链接(小红书图片通常在img标签中,src属性或data-src属性)
img_links = []
img_tags = soup.find_all('img', class_='note-image') # 实际class需以实时页面为准
for img in img_tags:
img_link = img.get('src') or img.get('data-src')
if img_link and 'http' in img_link:
img_links.append(img_link)
return {
'original_title': original_title,
'original_content': original_content,
'img_links': img_links,
'source_link': link
}
except Exception as e:
return f"链接解析失败:{str(e)}"
def create_content_rewrite(original_text, content_type):
"""
生成简单的二创内容(标题/正文),模拟文中“二创改写”逻辑
:param original_text: 原始文本(标题/正文)
:param content_type: 内容类型('title'表示标题,'content'表示正文)
:return: 二创后的文本
"""
if content_type == 'title':
# 标题二创模板(可根据需求扩展)
rewrite_templates = [
f"小众宝藏!{original_text}",
f"别再错过!{original_text}",
f"原来{original_text}这么实用"
]
return rewrite_templates[0] # 此处取第一个模板,实际可随机选择
elif content_type == 'content':
# 正文二创模板(简化处理,实际可结合大模型优化)
if len(original_text) > 50:
return f"深入解析:{original_text[:50]}... 更多细节值得关注"
else:
return f"实用分享:{original_text},亲测有效"
def extract_text_from_image(img_link):
"""
从图片链接中提取文字(OCR),模拟文中“图片文字提取”功能
:param img_link: 图片在线链接
:return: 提取到的文字
"""
try:
# 下载图片
img_response = requests.get(img_link, timeout=10)
img_response.raise_for_status()
img = Image.open(io.BytesIO(img_response.content))
# 用Tesseract提取文字(需提前安装Tesseract引擎)
extracted_text = pytesseract.image_to_string(img, lang='chi_sim') # 中文识别
return extracted_text.strip() if extracted_text.strip() else '图片中未识别到文字'
except Exception as e:
return f"图片文字提取失败:{str(e)}"
def save_to_mock_table(data_list, save_path='xiaohongshu_data.csv'):
"""
模拟“多维表格”存储,用CSV文件保存数据(可替换为Excel或数据库)
:param data_list: 待存储的数据集(列表形式,每个元素为一条解析后的数据)
:param save_path: 保存路径
"""
# 转换为DataFrame(模拟多维表格结构)
df = pd.DataFrame(data_list)
# 添加数据采集时间列
df['collect_time'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
# 保存为CSV(支持Excel格式:df.to_excel('xxx.xlsx', index=False))
df.to_csv(save_path, index=False, encoding='utf-8-sig')
print(f"数据已保存至:{save_path}")
print("表格预览:")
print(df[['collect_time', 'original_title', 'rewrite_title', 'img_count']].head())
# 主函数:串联整个流程
if __name__ == "__main__":
# 1. 待解析的小红书链接列表(示例,实际可从文件或输入获取)
target_links = [
"https://www.xiaohongshu.com/note/1234567890", # 示例链接1(需替换为真实有效链接)
"https://www.xiaohongshu.com/note/0987654321" # 示例链接2(需替换为真实有效链接)
]
# 2. 存储所有解析后的数据
result_data = []
# 3. 循环解析每个链接
for link in target_links:
print(f"\n正在解析链接:{link}")
# 3.1 获取原始内容
raw_data = get_xiaohongshu_content(link)
if isinstance(raw_data, str): # 若解析失败(返回错误信息)
print(raw_data)
continue
# 3.2 生成二创内容
rewrite_title = create_content_rewrite(raw_data['original_title'], 'title')
rewrite_content = create_content_rewrite(raw_data['original_content'], 'content')
# 3.3 提取图片文字(遍历所有图片链接)
img_texts = []
for img_link in raw_data['img_links']:
img_text = extract_text_from_image(img_link)
img_texts.append(img_text)
# 3.4 整理单条数据(模拟多维表格的字段结构)
single_data = {
'source_link': raw_data['source_link'],
'original_title': raw_data['original_title'],
'rewrite_title': rewrite_title,
'original_content': raw_data['original_content'],
'rewrite_content': rewrite_content,
'img_links': '|'.join(raw_data['img_links']), # 图片链接用“|”分隔
'img_texts': '|'.join(img_texts), # 图片文字用“|”分隔
'img_count': len(raw_data['img_links']) # 图片数量
}
result_data.append(single_data)
print(f"链接解析完成:{raw_data['original_title']}")
# 4. 保存数据到模拟表格
if result_data:
save_to_mock_table(result_data)
else:
print("\n未获取到有效数据,无需保存")
更多推荐


所有评论(0)