AI PLAY玩法更新持续收录
← 回到更新流

2026-09-14 · 原文发布日

把LinkedIn帖子截图建成写作模式向量库

这个n8n流程监视Google Drive文件夹,新上传的LinkedIn帖子PDF或截图会先做文本提取(图片走Tesseract OCR再用Groq清洗),Gemini从中抽取钩子类型、结构、语气、CTA、反模式等结构化写作模式JSON,转成嵌入向量存入Pinecone,并用Supabase记录已处理文件防重复。适合搭建个人写作参考库供检索增强。

原文要点

原n8n模板流程:Google Drive触发器每分钟检查指定文件夹新文件;先查Supabase表按Drive文件ID判重;下载后按MIME分流,仅处理PDF与JPEG;PDF直接抽文本,图片经Tesseract OCR再由Groq清洗重建文本;Gemini抽取钩子类型、结构、语气、格式要点、CTA类型、反模式等结构化JSON;再用Gemini embeddings生成向量,带元数据写入Pinecone索引;最后把文件ID、文件名、时间戳写回Supabase防重复。模板免费,但各模型与服务可能另行计费。

这次做成什么

在n8n里搭一条'截图/PDF进、可检索写作模式向量出'的个人参考库管道。以下是本站按原说明独立设计的搭建步骤与练习材料,具体节点参数需在原模板页核对后再落地。

准备什么

  • 一个可用的n8n实例(云端或自托管),能添加Google Drive、Supabase、Groq、Gemini、Pinecone五组凭据
  • 一个Google Drive文件夹(如reference-content)和其中至少一份测试用PDF或JPEG截图
  • 已开通的Supabase项目、Groq API Key、Google Gemini Key(对话与嵌入)、Pinecone索引(维度需与Gemini嵌入一致)

具体怎么做

  1. 建Supabase防重复表

    在Supabase SQL编辑器里建表reference_ingestions,字段至少含file_id(文本,唯一索引)、file_name、ingested_at时间戳;n8n的查询节点先按Drive文件ID查这张表,命中即停止流程。

  2. 配置Drive触发器与MIME分支

    添加Google Drive Trigger节点,选要监视的文件夹,事件为文件创建;触发后用Drive下载节点取文件,再接Switch节点按MIME type分两路:application/pdf走文本提取,image/jpeg走OCR,其余类型直接丢弃。

  3. 配置OCR清洗与模式抽取

    图片路接Tesseract OCR节点,输出接Groq聊天节点,用清洗提示词把OCR碎文本重建成连贯帖子正文;两路汇合后接Gemini聊天节点,用模式抽取提示词要求只输出JSON,含hook_type、structure、tone、formatting_notes、cta_type、anti_patterns六个字段。

  4. 生成嵌入并写入Pinecone

    把抽取出的各字段拼成若干分块文档(如钩子一段、结构一段、反模式一段),接Gemini Embeddings节点生成向量,再用Pinecone节点upsert到目标索引,metadata带上file_id、file_name与字段名。

  5. 写回记录并做端到端测试

    最后用Supabase插入节点把file_id、file_name、当前时间写入reference_ingestions;往Drive文件夹丢一份测试截图,确认执行记录里五组节点全部成功,且重复触发同一文件时在判重节点提前结束。

可直接复制的材料

Supabase判重表建表SQL(本站示例)

本站独立编写的示例结构,字段名与索引请以原模板备注为准核对后再用。

create table if not exists reference_ingestions (
  id bigint generated always as identity primary key,
  file_id text not null,
  file_name text not null,
  ingested_at timestamptz not null default now()
);
create unique index if not exists idx_reference_ingestions_file_id
  on reference_ingestions (file_id);

Gemini写作模式抽取提示词(本站示例)

本站独立编写示例,{{post_text}}替换为上游文本字段;具体字段名请与原模板核对。

你是写作分析助手。下面是一条LinkedIn帖子的正文。请只输出一个JSON对象,不要输出任何其他文字,字段如下:
hook_type:开头钩子的类型(提问、反常识结论、数字承诺、故事开场、争议立场,五选一)
structure:正文结构(如:钩子-三个要点-总结)
tone:语气(如:自信、谦逊、犀利、亲切)
formatting_notes:排版特征(换行节奏、是否用列表、是否用表情符号)
cta_type:结尾行动号召类型(评论互动、关注、点击链接、无)
anti_patterns:这条帖子刻意避开的写法(如:不用术语、不堆形容词)
帖子正文:
{{post_text}}

Groq清洗OCR文本提示词(本站示例)

本站独立编写示例,{{ocr_text}}替换为OCR节点输出字段。

下面是对一张LinkedIn帖子截图做OCR得到的原始文本,存在断行错误、错别字和界面噪声(如点赞数、按钮文字)。请重建为连贯的帖子正文,只输出正文本身,不要解释,不要保留界面元素:
{{ocr_text}}

一条测试用合成帖子文本

本站虚构测试数据,用于走通全流程,可替换为任意练习文本。

{"file_name":"test-post-001.jpg","post_text":"我删掉了简历上的'精通Office'。\n\n上周面试了12个人,没有一个人能说出VLOOKUP以外的函数。\n\n真正加分的写法只有三种:\n1. 写你用它做出的结果\n2. 写量化的数字\n3. 写别人不会的进阶功能\n\n你的简历上有这句话吗?评论区聊聊。"}

输入与输出示例

本站虚构演示,未实际运行工作流,输出为说明预期的示意。

输入

向监视文件夹上传test-post-001.jpg,OCR后得到带噪声文本:'我删掉了简历上的精通Office 上周面试了12个人 没有一个人 能说出VLOOKUP以外 的函数 点赞 评论 转发 真正加分的写法只有三种 1写你用它做出的结果'

对应输出

Gemini抽取结果示意:{"hook_type":"反常识结论","structure":"钩子-面试观察-三个要点-提问收尾","tone":"犀利","formatting_notes":"短句频繁换行,使用数字列表","cta_type":"评论互动","anti_patterns":"不堆术语,不写空洞口号"};随后该行各字段分块生成向量写入Pinecone,Supabase插入一行file_id=test-post-001.jpg的记录。

做完检查这些

  • 重复上传同一文件时,流程在Supabase判重查询处停止,不再调用OCR与大模型
  • Pinecone索引中可检索到带有file_id与字段名metadata的向量记录
  • MIME为PNG或其他类型时流程不进入PDF/JPEG两条处理支路
  • Supabase表中新行包含正确的file_id、file_name与写入时间戳

容易卡住的地方

  • 原文说明工作流只路由PDF与JPEG两种MIME,PNG截图上传后不会被处理
  • Pinecone索引维度若与Gemini嵌入输出不一致,upsert会失败,需先确认两者匹配
  • OCR对低分辨率或深色背景截图识别率差,会连带影响后续模式抽取质量
  • 每分钟轮询触发意味着文件写入Drive到被处理之间可能有等待,作者称的每分钟触发是模板设定而非响应保证

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Ingest LinkedIn posts from Google Drive into Pinecone with Gemini and Supabase
原作者
Akshat
原始发布日期
2026-09-14T07:07:51.208Z
来源
https://n8n.io/workflows/19554