2026-10-07 · 原文发布日
早8点比对召回公告与 Shopify 商品
每天8点抓取 Shopify 全商品,并拉 CPSC 与 FDA 食品/药品/器械召回;先读 Recall log 跳过已处理,再用 UPC/条码、品牌供应商与关键词对目录预筛,只对 shortlisted 候选调用 OpenAI 判断是否真受影响,给出置信度、批次核查标记与建议动作。超过阈值发 Slack、写 Matches 表,可选把高置信在售 listing 设为 DRAFT,并每日汇总。
原文要点
该免费 n8n 模板每天早8点运行:拉取 Shopify 全量商品与 CPSC 召回 API、FDA 食品/药品/器械 enforcement API 的近期召回;先读 Google Sheets 的 Recall log 跳过已处理召回,再按 UPC/条码、品牌供应商名、共享关键词对目录打分预筛,只有存在候选的召回才调用 OpenAI,返回置信度、批次核查标记与建议动作;超过阈值发 Slack 并写入 Matches 表,可选把90%以上高置信的在售 listing 通过 Admin GraphQL API 设为 DRAFT(默认关闭),最后记录 Recall log 并发每日汇总。
这次做成什么
按本站设计的复刻方案在 n8n 搭出同构流程:定时触发→多源拉取→去重→规则预筛→AI 判定→分支输出,先用合成数据手动跑通一次,再接真实凭据激活。
准备什么
- 可访问外网 API 的 n8n 实例(自托管或云)
- Shopify 自定义应用 access token(read_products;启用自动下架才需 write_products)
- OpenAI API key、Slack 工作区、含 Recall log 与 Matches 两个 tab 的 Google Sheet
- CPSC 与 FDA 召回数据无需 API key
具体怎么做
建表与配置凭据
Google Sheet 建两个 tab:Recall log(A1 写表头 Recall ID)和 Matches。n8n 里依次添加 Shopify Access Token、OpenAI、Slack、Google Sheets 凭据,并把表格 URL 填入工作流的配置值。
定时与多源拉取
Schedule Trigger 设每天 08:00。HTTP Request 节点调 Shopify Admin API 拉全量商品;另三个 HTTP 节点分别拉 CPSC 召回 API 与 FDA 食品、药品、器械 enforcement API,用 Merge 汇总;用不到的 FDA 类目节点可停用。
去重与规则预筛
Google Sheets 节点读 Recall log,Code 节点过滤已处理 Recall ID,并把新召回归一化为统一字段(id、来源、标题、品牌、UPC、日期)。再按条码相等、vendor/brand 包含、标题关键词重合三项打分,低于 minCandidateScore 的丢弃。
AI 判定与分支输出
IF 节点判断候选列表非空才进 OpenAI 节点,用下方提示词要求返回 confidence、lotBatchCheck、recommendedAction。第二个 IF 按 minConfidence 分流:高于阈值发 Slack 并 append 到 Matches;autoDraftProducts 为 true 且 confidence≥0.9 时走 Shopify Admin GraphQL 把 active 商品置 DRAFT;最后把召回 ID 写入 Recall log 并发每日 Slack 汇总。
可直接复制的材料
工作流配置值示例
本站按模板描述整理的配置示意,字段名以原模板为准,激活前逐项替换。
{
"shopifyStore": "your-store-handle",
"slackChannel": "#recall-alerts",
"sheetUrl": "https://docs.google.com/spreadsheets/d/你的表格ID",
"lookbackDays": 7,
"minConfidence": 0.75,
"minCandidateScore": 2,
"autoDraftProducts": false
}OpenAI 判定提示词
本站独立编写,花括号处由工作流变量替换。
你是产品召回核查助手。下面给出一条召回信息与一个候选在售商品。只根据给出的信息判断该商品是否真受召回影响,不要猜测。输出严格 JSON:{"confidence": 0到1的小数, "lotBatchCheck": true或false, "recommendedAction": "一句话建议", "reason": "一句话依据"}。若召回限定特定批次或生产日期而商品信息不足以确认,lotBatchCheck 设为 true 并建议向供应商核查。召回信息:{recall}。商品信息:{product}。合成测试数据(召回+商品)
本站虚构合成数据,条码与品牌均为杜撰,用于隔离测试,不对应任何真实召回。
召回:{"recallId":"CPSC-2026-TEST-001","source":"CPSC","title":"星星牌儿童磁力积木片召回","brand":"星星牌","upc":"6901234567890","hazard":"磁片脱落存在吞咽风险","date":"2026-10-05"}
商品:{"id":880001,"title":"星星牌磁力积木片 64片装","vendor":"星星牌","barcode":"6901234567890","status":"active","tags":"玩具,磁力片"}输入与输出示例
本站虚构演示,未实际运行,置信度为示意值。
输入
用合成数据手动执行:召回 CPSC-2026-TEST-001 命中商品 880001(条码相等、vendor 相同、标题共现“磁力积木片”),预筛得分 3。对应输出
OpenAI 返回 {"confidence":0.93,"lotBatchCheck":true,"recommendedAction":"先下架并联系供应商确认批次","reason":"品牌与UPC一致,召回限定生产批次"}。因 0.93≥0.75,Slack 收到告警“星星牌磁力积木片疑似命中 CPSC 召回,建议先下架核查批次”,Matches 表新增一行状态 Open;因 autoDraftProducts 为 false,Shopify 商品保持 active,Recall log 追加 CPSC-2026-TEST-001。做完检查这些
- 手动执行一次后,Code 节点输出中已存在于 Recall log 的 Recall ID 被过滤
- 候选为空的召回在执行日志中没有触发任何 OpenAI 调用
- confidence 低于 minConfidence 的记录只进 Recall log,不发 Slack、不写 Matches
- autoDraftProducts 为 false 时 Shopify 侧没有任何写操作
容易卡住的地方
- 模板免费但需自行配置全部凭据;Shopify 的 write_products 权限只在确实要自动下架时授予
- 首次运行可调大 lookbackDays 扫描历史,但会明显拉长运行时间
- AI 只判断预筛给它的候选,预筛过严会漏掉真实命中,可按需调低 minCandidateScore
- GraphQL 下架只应作用于 active 且高置信的商品,务必先在测试店铺验证
- 本流程是预警辅助,召回处置的最终决定仍应由人做出
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Detect recalled Shopify products with CPSC, FDA, OpenAI, Slack, and Google Sheets
- 原作者
- Anna Cole
- 原始发布日期
- 2026-10-07T08:47:39.569Z
- 来源
- https://n8n.io/workflows/20611