2026-09-02 · 原文发布日
每天自动汇总药物研发情报并打分提醒
面向医药研发情报的 n8n 免费模板:每天定时抓取 PubMed、bioRxiv/medRxiv、专利接口和 ClinicalTrials.gov 的新条目,去重后用 Claude 提取靶点、分子、作用机制和研发阶段等结构化字段,按关注靶点和首创信号打分,嵌入存入 Pinecone、记录进 Airtable,高分发现即时推送 Slack 并发运行摘要。
原文要点
该免费模板每天 6 点(或手动)运行:先载入关键词、关注靶点清单、阈值与目的地配置;从 PubMed(NCBI E-utilities)、bioRxiv/medRxiv、所配置的专利接口与 ClinicalTrials.gov 抓取新条目;统一为单一文档格式,并用 workflow static data 与历史记录去重;逐条送 Anthropic Claude 提取靶点、分子、作用机制、研发阶段、竞争机构与摘要;按靶点命中与首创信号打相关性分;用 Voyage AI 生成嵌入并带元数据 upsert 进 Pinecone;结构化记录 upsert 进 Airtable(列出 URL、DocID、RelevanceScore 等字段);高分条目即时推 Slack,运行结束发含累计索引数的摘要。
这次做成什么
照此思路在自有 n8n 搭一条“每日药研情报管线”练习版:定时触发→四源抓取→去重→Claude 结构化抽取→打分→Pinecone/Airtable/Slack 输出。配置、提示词与测试数据为本站独立设计,原模板各 HTTP 源的精确参数未逐条核对,需以原模板为准。
准备什么
- n8n 实例及 Anthropic、Voyage AI、Pinecone、Airtable、Slack 五套 API 凭据
- PubMed、bioRxiv、所选专利接口、ClinicalTrials.gov 的访问配置(部分需要各自 header 或 key)
- 已按字段清单建好的 Airtable 表,及维度与 Voyage 嵌入一致的 Pinecone 索引
- 一份测试用药研文档条目(可用本站合成数据)
具体怎么做
定时与配置
用 Schedule Trigger 设为每天 06:00,保留手动执行用于调试;接 Set 节点写入 searchKeywords、watchTargets(如 ["KRAS","GLP-1"])、noveltyThreshold(如 70)、slackChannel、airtableBase、airtableTable、pineconeIndexUrl、namespace。
四源抓取与归一
并行放四个 HTTP Request 节点分别请求 PubMed E-utilities、bioRxiv、专利接口、ClinicalTrials.gov,各自用对应凭据;汇流后用 Code 节点把不同响应统一成 {docId,title,abstract,url,sourceType,publishedDate}。
去重
用 Code 节点读取 workflow static data 里的 seenDocIds,过滤掉已见 docId,仅保留新文档,运行成功后把新 id 写回 static data,避免次日重复处理。
Claude 抽取与打分
循环每条新文档,HTTP 请求 Anthropic 消息接口,提示词用下方材料;解析返回 JSON 后,按规则打分:标题或摘要命中 watchTargets 加 40 分,IsFirstInClass 为 true 加 30 分,临床阶段在 II 期及以后加 20 分,基准 10 分,得到 RelevanceScore。
入库与提醒
用 Voyage 凭据对 summary 生成嵌入,upsert 到 Pinecone(metadata 带 docId、title、score);Airtable 节点按下方字段映射 upsert;IF 判断 RelevanceScore≥noveltyThreshold,为真发 Slack 即时提醒;末尾汇总本条运行处理数与累计索引数发 Slack 摘要。
可直接复制的材料
运行配置 JSON 示例
本站设计示例;base id、索引地址、频道名均需替换为你自己的,勿放真实密钥。
{
"searchKeywords": ["KRAS inhibitor", "GLP-1 receptor agonist"],
"watchTargets": ["KRAS", "GLP1R"],
"noveltyThreshold": 70,
"slackChannel": "#rd-intel",
"airtableBase": "appExampleBase01",
"airtableTable": "DrugIntel",
"pineconeIndexUrl": "https://example-index.svc.pinecone.io",
"pineconeNamespace": "daily-rd"
}Claude 结构化抽取提示词
本站独立编写示例,字段名与 Airtable 列对应,可按需调整。
你是药物研发情报分析员。根据下面的文献/专利/临床条目文本,只输出 JSON 对象,不要解释。字段:Title(原文标题)、Summary(80 字内中文摘要)、Molecules(分子或药物名数组)、DrugTargets(靶点数组)、MechanismOfAction(作用机制,未知填 null)、DevelopmentStage(Discovery/Preclinical/Phase I/Phase II/Phase III/Approved/Unknown 之一)、CompetingOrganizations(机构数组)、IsFirstInClass(布尔,仅当文本明确支持首创判断时为 true,否则 false)。文本:
{{$json.title}}
{{$json.abstract}}Airtable 字段映射
与来源列出的写入列一致,建表时列名需完全匹配。
URL←url;DocID←docId;Title←Title;Summary←Summary;Molecules←Molecules 拼接;DrugTargets←DrugTargets 拼接;SourceType←sourceType;PublishedDate←publishedDate;IsFirstInClass←布尔;RelevanceScore←打分结果;DevelopmentStage←阶段;MechanismOfAction←机制;CompetingOrganizations←机构拼接输入与输出示例
本站虚构演示,未真实调用任何外部 API。
输入
合成测试条目:docId=pmid-demo-9001,sourceType=PubMed,标题“Novel covalent KRAS G12C inhibitor XP-105 shows preclinical efficacy”,摘要描述一款新共价 KRAS G12C 抑制剂临床前数据,由 DemoBio 公司发布。watchTargets 含 KRAS。对应输出
Claude 抽取:DrugTargets=["KRAS"], Molecules=["XP-105"], DevelopmentStage="Preclinical", IsFirstInClass=false, CompetingOrganizations=["DemoBio"]。打分:靶点命中+40,首创+0,阶段+0,基准 10 → RelevanceScore=50,低于阈值 70,不写 Slack 即时提醒,仅 upsert 进 Airtable 与 Pinecone,并计入运行摘要。做完检查这些
- 同一天重复手动运行第二次时,去重节点输出 0 条新文档
- Claude 返回字段名与 Airtable 十三列一一对应,upsert 无未映射列报错
- RelevanceScore 大于等于阈值的条目触发 Slack 即时消息,低于阈值只进 Airtable
- 运行结束的 Slack 摘要包含本次处理条数与累计索引文档数
容易卡住的地方
- 四个外部源接口格式差异大,归一化映射写错会让后续抽取全部拿到空文本
- static data 在手动测试频繁重跑时会累积脏 id,调试期应先清空
- Pinecone 索引维度与所选 Voyage 模型不一致会 upsert 失败
- Anthropic、Voyage、Pinecone 等均按各自用量另行计费,免费仅指模板本身
- 文本不足以判断首创时提示词要求 false,避免虚报高优先级提醒
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Extract drug discovery intelligence with Claude, Voyage AI, Pinecone, Airtable and Slack
- 原作者
- Oneclick AI Squad
- 原始发布日期
- 2026-09-02T04:22:28.173Z
- 来源
- https://n8n.io/workflows/19039