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

2026-09-29 · 原文发布日

n8n调研联系人富化:Airtable出题、Tavily搜索、OpenAI提取、Dropcontact补全

每天上午和下午各跑一次,读取Airtable「Research Requests」中状态为Pending的调研需求,用Tavily搜索并只保留高置信结果;没有可用结果就把状态改为低置信失败。有结果时交给OpenAI提取成结构化联系人JSON(姓名、机构、角色、兴趣),再提交Dropcontact异步富化,等回调取回补全后的资料,逐条写入或更新到「Contact List」表,最后把原需求标记为Completed。设计初衷是让不懂技术的同事只需在表里填一行需求描述,就能在联系人表里收到富化结果;Airtable也可换成其他数据库。

原文要点

n8n模板页(作者Luka Margiani,免费模板)描述了一条每天09:00和14:00各跑一次的工作流:从Airtable「Research Requests」表读取Status为Pending的记录,用Tavily搜索并只保留高置信结果;无可用结果就把状态改为Failed - Low Confidence;有结果则交OpenAI(示例模型gpt-5-mini)提取含姓名、机构、角色、兴趣的结构化联系人JSON,再提交Dropcontact异步富化,经wait/callback取回结果后逐条upsert进「Contact List」表,最后把原需求标记Completed。配置要求:Airtable个人访问令牌、OpenAI凭据、名为TAVILY_API_KEY的环境变量、Dropcontact凭据,且Dropcontact须能访问n8n实例的公开resume URL。Airtable可换成Excel或其他数据库,设计初衷是让非技术同事只填一行需求就能收到富化联系人。

这次做成什么

在自有n8n实例上按原模板描述搭建这条「调研需求→搜索→提取→富化→回写」流水线:若原模板页提供工作流可直接导入,本站另给出逐节点搭建说明、字段映射、凭据清单和一条合成测试数据,未核实的界面细节以原模板页为准。

准备什么

  • 一个可公网访问的n8n实例(Dropcontact回调需要公开resume URL,本机localhost不可用)
  • Airtable账号及个人访问令牌,建好Research Requests与Contact List两张表
  • OpenAI API凭据,并确认账号可用模板示例模型gpt-5-mini
  • Tavily API key与Dropcontact API key(均可能产生费用,以各服务商定价为准)

具体怎么做

  1. 建表与状态字段

    在Airtable建「Research Requests」表,至少含Prompt(单行文本)和Status(单选:Pending、Completed、Failed - Low Confidence)两字段;另建「Contact List」表,含Name、Organization、Role、Interests及富化回写字段(如Email、LinkedIn)。记下Base ID和两个Table ID备用。

  2. 配置四类凭据

    在n8n凭据页新建Airtable Personal Access Token凭据;新建OpenAI凭据并确认gpt-5-mini可用;按原模板要求把Tavily密钥设为环境变量TAVILY_API_KEY(写入n8n启动环境后重启生效);新建Dropcontact凭据。全部用测试密钥,勿用他人真实凭据。

  3. 搭建主链路

    依次放置:Schedule Trigger(cron每天09:00与14:00两档)→Airtable Search节点(筛选Status=Pending)→逐条循环→HTTP Request调Tavily搜索(请求体带query=当前Prompt)→Code/Filter节点按置信度筛掉低分结果→IF分支:结果为空走「失败分支」,非空走「成功分支」。

  4. 失败分支与成功分支

    失败分支:Airtable Update节点把该请求Status改为Failed - Low Confidence后结束。成功分支:OpenAI节点用材料中的提取提示词把Tavily结果转成联系人JSON数组→HTTP Request提交Dropcontact富化任务→Wait节点(resume选webhook回调,URL须为公网地址)→回调后HTTP Request取回富化结果。

  5. 回写与收尾

    对每条富化结果用Airtable Upsert节点写入Contact List(匹配键建议Name+Organization);全部写完后用Airtable Update把原请求Status改为Completed。先用材料中的合成测试数据手动执行一次,确认两条分支各跑通后再打开定时。

可直接复制的材料

Airtable表结构参考配置

本站独立设计的参考结构;原模板具体字段名以模板页为准,Upsert匹配键为本站建议。

{
  "base": "把your_base_id替换为实际Base ID",
  "tables": {
    "Research Requests": {
      "fields": {
        "Prompt": "单行文本,非技术同事填写的调研需求",
        "Status": "单选:Pending / Completed / Failed - Low Confidence"
      }
    },
    "Contact List": {
      "fields": {
        "Name": "单行文本",
        "Organization": "单行文本",
        "Role": "单行文本",
        "Interests": "多行文本",
        "Email": "邮箱,由Dropcontact富化回写",
        "LinkedIn": "URL,由Dropcontact富化回写"
      },
      "upsertMatchKey": ["Name", "Organization"]
    }
  }
}

OpenAI联系人提取提示词(本站独立编写)

本站独立编写;占位符按n8n表达式替换,实际字段名以你上游节点输出为准,模型名按原模板示例用gpt-5-mini并确认账号可用。

你是信息提取助手。下面是一个调研需求和若干搜索结果。请只从搜索结果中提取与需求直接相关的人物,输出严格的JSON数组,不要输出多余文字。每个人包含四个字段:name(姓名)、organization(所属机构)、role(职务或角色)、interests(与需求相关的兴趣或领域,一句话)。如果搜索结果中没有可靠人物,输出空数组[]。

调研需求:{{ $json.Prompt }}
搜索结果:{{ $json.tavilyResults }}

合成测试请求数据

本站虚构的测试记录,写入Research Requests表用于手动触发;不含真实个人信息。

{
  "Prompt": "找出研究城市垃圾分类智能回收设备的欧洲初创公司创始人",
  "Status": "Pending"
}

输入与输出示例

本站虚构演示,未实际运行工作流;人名机构均为虚构,输出字段与本站参考表结构对应。

输入

Research Requests表新增一行:Prompt=「找出研究城市垃圾分类智能回收设备的欧洲初创公司创始人」,Status=Pending。手动执行工作流一次。

对应输出

成功分支输出(示意):Contact List新增2条upsert记录——{Name:"Mara Lindqvist",Organization:"LoopBin AB",Role:"联合创始人",Interests:"智能回收箱传感分拣",Email回写非空}与{Name:"Jonas Weber",Organization:"SortCircle GmbH",Role:"CEO",Interests:"城市垃圾分类设备",Email回写非空};原请求Status更新为Completed。失败分支对照:把Prompt改为无意义字符串再跑一次,请求被标记为Failed - Low Confidence。

做完检查这些

  • Schedule Trigger显示09:00与14:00两档,手动执行时两个分支都能走通一次
  • Tavily无高置信结果时,请求Status被改为Failed - Low Confidence而非卡住或误标Completed
  • OpenAI节点输出是严格JSON数组,含name、organization、role、interests四字段,空结果时为[]
  • Wait节点的resume URL是公网可访问地址,Dropcontact回调能恢复执行(可用测试回调验证)
  • Contact List按Name+Organization去重,重复执行同一请求不会产生重复行

容易卡住的地方

  • 本指南包含按原模板文字描述的重建步骤,若原模板页提供工作流文件可直接导入,节点命名与参数以原模板页核对为准,不要假设两者完全一致
  • n8n实例必须公网可达,否则Dropcontact异步回调无法触发Wait恢复,整条流会挂在等待节点
  • TAVILY_API_KEY按原模板要求走环境变量而非节点凭据,改完需重启n8n才生效
  • Tavily、OpenAI、Dropcontact均可能按量计费,具体价格原模板未列出,以各服务商页面为准
  • 模板示例模型gpt-5-mini需确认自己OpenAI账号可用,不要假设默认可调
  • 作者称每天跑两次是模板设定,不是处理耗时的保证;富化耗时取决于Dropcontact回调

原文与作者资料 ↗

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

原文标题
Enrich GDPR research contacts in Airtable with Tavily, OpenAI, and Dropcontact
原作者
Luka Margiani
原始发布日期
2026-09-28T19:05:30.153Z
来源
https://n8n.io/workflows/20084