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嵌入一致)
具体怎么做
建Supabase防重复表
在Supabase SQL编辑器里建表reference_ingestions,字段至少含file_id(文本,唯一索引)、file_name、ingested_at时间戳;n8n的查询节点先按Drive文件ID查这张表,命中即停止流程。
配置Drive触发器与MIME分支
添加Google Drive Trigger节点,选要监视的文件夹,事件为文件创建;触发后用Drive下载节点取文件,再接Switch节点按MIME type分两路:application/pdf走文本提取,image/jpeg走OCR,其余类型直接丢弃。
配置OCR清洗与模式抽取
图片路接Tesseract OCR节点,输出接Groq聊天节点,用清洗提示词把OCR碎文本重建成连贯帖子正文;两路汇合后接Gemini聊天节点,用模式抽取提示词要求只输出JSON,含hook_type、structure、tone、formatting_notes、cta_type、anti_patterns六个字段。
生成嵌入并写入Pinecone
把抽取出的各字段拼成若干分块文档(如钩子一段、结构一段、反模式一段),接Gemini Embeddings节点生成向量,再用Pinecone节点upsert到目标索引,metadata带上file_id、file_name与字段名。
写回记录并做端到端测试
最后用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