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

2026-09-02 · 原文发布日

LinkedIn招聘信号挖掘与外联草稿

n8n免费模板:每两小时经Unipile按轮换关键词搜LinkedIn近一天的帖子,与Google Sheets线索库去重并过正则初筛,幸存帖子交Gemini提取招聘细节和ICP匹配分,达标的按轮询分配给招聘顾问并起草四条LinkedIn私信序列,写入表格、Gmail发通知,每天另出一份漏斗和SLA摘要推到Teams。

原文要点

这是n8n.io免费模板。流程:每2小时(印度时间08:00-20:00、周一至周六)经Unipile API用轮换关键词搜LinkedIn近一天帖子→读Google Sheets线索库按帖子和近期作者去重→正则初筛→Google Gemini提取招聘细节并打ICP匹配分→仅保留hiring=true且分数≥40的→轮询分配给招聘顾问→Gemini起草四条LinkedIn私信序列→写表并经Gmail发HTML通知。每日08:00(周一至周六)汇总昨日信号、各顾问触达量对比目标、漏斗状态和SLA标记,经Teams incoming webhook推送摘要。

这次做成什么

在n8n自建一条等价管线:定时抓取LinkedIn招聘信号帖、去重初筛、AI提取与打分、达标线索轮询分配并生成四步外联私信草稿、落表通知,再加每日漏斗摘要推送。全部用本站合成数据练习,Unipile具体接口参数以原模板和你的Unipile文档核对。

准备什么

  • 可登录的n8n实例,能用Schedule Trigger与HTTP Request节点
  • Unipile账号及API key,并知道自己的Unipile DSN和已连接的LinkedIn账号ID
  • Google Gemini API key(两次HTTP调用,可能产生费用)
  • Google Sheets OAuth2与Gmail OAuth2凭据
  • 一个Leads表格(列见步骤2)和Microsoft Teams频道的incoming webhook地址

具体怎么做

  1. 建双定时器与关键词轮换搜索

    新建工作流,加两个Schedule Trigger:发现线索用“每2小时、08:00-20:00、周一至周六”(把时区改成你自己的,不必照搬印度时间),日报用“每日08:00、周一至周六”。发现分支接HTTP Request节点调Unipile搜索接口,凭据用Unipile API key,参数包含DSN、LinkedIn账号ID和关键词;关键词放在一个Code节点里做轮换(如本次招聘的3-5个岗位词数组,按执行次序取模轮换),时间范围限定近一天。注意:原文未给出Unipile的具体API路径与参数名,这些需对照原模板和Unipile官方文档填写,本指南不伪造。返回结果在Code节点里归一化成每帖一条:post_url、author、author_url、text、posted_at。没有Unipile账号时,可先用下方合成JSON接在Code节点后模拟继续搭建。

  2. 建线索表并去重、正则初筛

    Google Sheets建Leads表,列:Lead ID, Signal Date, Post URL, Author, Author URL, Post Text, Hiring, Score, Recruiter, Touch1 Date, Touch2 Date, Touch3 Date, Touch4 Date, Reply Date, Status, Msg1, Msg2, Msg3, Msg4。n8n里读全表后与本次帖子比对:Post URL已存在或同一Author近7天已出现过则丢弃。幸存帖子过正则初筛,用下方正则材料,命中任一模式即保留进入AI步骤,其余丢弃,控制Gemini调用量。

  3. Gemini提取招聘信息并打分

    HTTP Request节点调Gemini,请求体中的提示词用下方“招聘信号提取提示词”全文,把帖子正文嵌入。要求模型只输出JSON:hiring布尔值、role、seniority、location、hiring_signals数组、icp_score(0-100)。接Code节点JSON.parse并做容错(去代码围栏、缺字段补默认),随后Filter节点只放行hiring=true且icp_score≥40的帖子,阈值写死在节点里便于日后调整。

  4. 轮询分配顾问并起草四步私信

    在配置Code节点里维护顾问数组(姓名、邮箱、每人每日触达目标数,如3人各8次)。分配逻辑:读取表中今日各顾问已有线索数,把新线索分给当前数量最少者,平手按数组顺序,实现轮询且天然均衡。然后第二次调Gemini,用“外联私信起草提示词”,输入帖子正文、岗位信息和顾问署名,输出四条递进私信(首触、3天后跟进、7天后价值补充、14天后收口),每条不超过LinkedIn私信常见长度。解析为Msg1-Msg4四个字段。

  5. 落表、邮件通知、每日摘要

    Google Sheets Append一行:Lead ID用L-{{$now.toUnixInteger()}}类表达式生成,Signal Date填posted_at日期,Status填new,其余按列名映射。Gmail节点向被分配顾问邮箱发HTML通知,含帖子链接、分数、岗位摘要和四条草稿。日报分支:Schedule Trigger→读全表→Code节点统计昨日新增信号数、各顾问昨日触达数对比其日目标、按Status分组的漏斗计数、以及超过设定天数未触达或目标未达的SLA标记→HTTP Request POST到Teams incoming webhook,正文为自适应卡片或简单markdown文本均可。上线前记得删除或绕过原文提到的“Limit (Testing Only)”限流节点。

可直接复制的材料

正则初筛表达式(Code节点用)

本站编写的示例门槛,按目标语言与岗位自行增删模式;命中pass_gate=true才进入Gemini,控制API费用。

const patterns = [
  /hiring|we'?re hiring|join (our|my) team|open (role|position)|headcount/i,
  /招聘|急招|诚聘|内推|扩招|团队招人|岗位开放/,
  /looking for (a|an) .{0,40}(engineer|designer|manager|developer)/i
];
const text = $json.post_text || "";
return { json: { ...$json, pass_gate: patterns.some(p => p.test(text)) } };

招聘信号提取提示词(Gemini用)

本站独立编写;分数是模型估计,阈值≥40可按你的线索量上下调整。

你是B2B招聘线索分析助手。下面是一条LinkedIn帖子正文。判断发布者所在团队是否正在招聘,并提取信息。
只输出一个JSON对象,不要任何其他文字或代码围栏,格式:
{"hiring":true或false,"role":"岗位名,未知填unknown","seniority":"junior/mid/senior/unknown","location":"地点或remote或unknown","hiring_signals":["从原文摘出的招聘证据短语,最多3条"],"icp_score":0到100的整数,"score_reason":"一句不超过50字的打分理由"}
icp_score衡量该帖子作为招聘外联线索的价值:明确在招且岗位具体、能定位到团队、时效新则高分;只是转发招聘信息或吐槽行业则低分。
帖子正文:{{帖子文本}}

外联私信起草提示词(Gemini用)

本站独立编写;草稿发出前应由顾问本人过目再发,私信频率需遵守LinkedIn规则。

你是招聘外联文案助手。根据以下LinkedIn帖子正文和提取到的岗位信息,为招聘顾问{{顾问姓名}}起草一组四条LinkedIn私信序列:
第1条(首次触达):提及对方帖子中的具体细节,确认招聘需求,不超过80字;
第2条(3天后未回复跟进):简短补充一个我方候选人资源亮点,不超过70字;
第3条(7天后):提供一个有价值的内容(如近期同类岗位薪酬区间观察),不超过90字;
第4条(14天后收口):礼貌收尾并留长期联系方式,不超过60字。
语气专业、不群发感、不夸大承诺,不出现任何虚构公司事实。
只输出JSON:{"msg1":"...","msg2":"...","msg3":"...","msg4":"..."}
帖子正文:{{帖子文本}}
岗位信息:{{Gemini第一步输出的JSON}}

合成帖子测试数据(无Unipile时模拟用)

本站虚构合成数据;demo003用于验证“同一作者近7天已出现则跳过”的去重逻辑。

[
  {"post_url":"https://www.linkedin.com/feed/update/demo001","author":"李娜","author_url":"https://www.linkedin.com/in/demo-lina","post_text":"我们团队正在招聘2名高级后端工程师(Go方向),base上海可remote,欢迎私信或内推。","posted_at":"2026-09-02T10:30:00+08:00"},
  {"post_url":"https://www.linkedin.com/feed/update/demo002","author":"王强","author_url":"https://www.linkedin.com/in/demo-wq","post_text":"分享一下我最近读的三本架构书,收获很大。","posted_at":"2026-09-02T09:10:00+08:00"},
  {"post_url":"https://www.linkedin.com/feed/update/demo003","author":"李娜","author_url":"https://www.linkedin.com/in/demo-lina","post_text":"团队扩招中,产品经理岗位也开放了,急招。","posted_at":"2026-09-02T15:00:00+08:00"}
]

输入与输出示例

本站虚构演示,Gemini输出与打分为示意,未实际调用任何API。

输入

以上面三条合成帖子作为一次搜索返回:demo001李娜招后端、demo002王强读书分享、demo003李娜再发产品经理招聘。

对应输出

demo002未命中正则(无招聘词)被丢弃;demo001命中并送Gemini,返回{"hiring":true,"role":"高级后端工程师","seniority":"senior","location":"上海/remote","hiring_signals":["正在招聘2名高级后端工程师","欢迎私信或内推"],"icp_score":82},通过≥40门槛,轮询分给顾问A,生成msg1“看到您帖子提到团队在招2名Go方向高级工程师,想确认下目前进展到哪一步了?”等四条草稿,写入Leads表Status=new并邮件通知顾问A;demo003因作者李娜近7天已有记录被去重跳过。次日08:00摘要推送:昨日新增信号1条、顾问A触达1/8未达标列入SLA标记。

做完检查这些

  • demo003与demo001同作者,执行后只有一行新线索写入Leads表,去重逻辑生效
  • 读书分享帖被正则初筛拦截,本次执行只产生一次Gemini提取调用
  • 达标行的Msg1至Msg4四列均非空,且Recruiter列是配置数组中当日线索最少的那位顾问
  • 手动触发日报触发器后,Teams频道收到含昨日信号数、各顾问触达对比目标和状态漏斗的摘要消息

容易卡住的地方

  • Unipile的API路径、DSN与账号ID原文未给出具体值,必须对照原模板和Unipile文档配置,本指南不提供臆造路径
  • 原模板含“Limit (Testing Only)”限流节点,不删除就上线会静默丢线索
  • 原文调度用印度时区(IST),照搬cron会在错误的当地时间运行,需改时区
  • LinkedIn搜索与外联受平台条款和频率限制,自动私信有账号风险,草稿建议人工确认后再发
  • Gemini返回非纯JSON时解析会失败,务必保留清洗与默认值兜底
  • 每日触达目标与SLA天数是本站设定参考值,需按团队实际在配置节点调整

原文与作者资料 ↗

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

原文标题
Qualify LinkedIn hiring signals and draft outreach with Gemini and Google Sheets
原作者
Rahul Joshi
原始发布日期
2026-09-02T15:27:13.815Z
来源
https://n8n.io/workflows/19081