作为纯技术小白,此前为了搭建小红书二创工作流,我先尝试了 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未获取到有效数据,无需保存")

更多推荐