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

2026-10-07 · 原文发布日

把商店、博客和云盘文件同步进 Pinecone 知识库

把 WooCommerce 商品/评价、WordPress 页面文章与 Google Drive 文件汇入同一 Pinecone 知识库:手动、每日定时、Drive 新文件或商品 webhook 触发后先校验配置,再抽取内容并按变更清理旧向量,分块生成 OpenAI embedding 写入 Pinecone,同步状态记入 n8n Data Table,异常格式可发 Gmail。付费模板。

原文要点

原工作流把 WooCommerce 商品与评价、WordPress 页面文章、Google Drive 文件夹汇入同一 Pinecone 索引。触发方式有手动、每日两个定时(博客凌晨4点、商品5点)、Drive 新文件和 WooCommerce webhook。运行先校验配置再分道处理:按 pinecone_sync_state 数据表挑出新增或变更项、清理已删除内容的旧向量,文本分块后用 OpenAI embedding(默认 text-embedding-3-small、1536 维)写入 Pinecone,并回写同步时间;webhook 会校验 HMAC 签名。模板需付费购买。

这次做成什么

在本站隔离环境里搭一条同构的同步练习流:手动触发一批合成商品和文档,校验配置→比对状态表→删除旧向量→分块生成向量→写入索引→更新状态表,跑通后能照搬到四种触发器。

准备什么

  • n8n 云端或自托管实例,并已购买原模板或准备按本站方案自建
  • Pinecone 账号及一个 1536 维索引,拿到 index 名称、host、namespace
  • OpenAI API Key,可使用 text-embedding-3-small
  • 测试用 WooCommerce 店铺、WordPress 站点、Google Drive OAuth2 凭据,全部用隔离测试账号
  • Gmail 凭据(仅用于不支持格式的通知,可选)

具体怎么做

  1. 建状态表与配置节点

    在 n8n Data Tables 新建表 pinecone_sync_state,列固定为 itemId(文本)、indexedAt(日期时间)、dateModified(日期时间)。再建一个 Settings 节点,填入 WooCommerce 站点 URL 与币种、Pinecone index 名称/host/namespace、embedding 模型与 1536 维度、分块大小上限、每轮处理条数上限、Drive 文件夹 ID、管理员邮箱和 webhook 密钥。模板需付费,未购买时按本站方案自建这些字段,具体节点名以原模板为准。

  2. 加校验与分道

    第一个 Function/Code 节点读取 Settings,逐项检查 store URL、index、维度、分块参数及当前触发器必需的值(Drive 触发要文件夹 ID,webhook 要密钥)。任一缺失就把执行路由到 Error 分支并发 Gmail 通知;齐全则按触发来源路由到商品批量、商品 webhook、博客、Drive 四条道之一。

  3. 商品批量道:取数与比对

    WooCommerce 节点拉全部已发布商品,与 pinecone_sync_state 按 itemId 比对:dateModified 晚于 indexedAt 或表里没有的才进入处理;店里已无但在表里的 itemId 说明已删除,先调用 Pinecone 按 fileId 删除其全部向量,再删状态行。每个入选商品再拉变体和最新评价拼进正文。

  4. 博客与 Drive 道

    博客道用 WordPress REST API 分页盘点已发布页面和文章,变更项再拉全文,消失的条目删向量。Drive 道列目标文件夹,跳过临时文件和未变更文件,按类型抽文本(Docs/Sheets 直接导出,PDF 失败走 OCR,图片走 OpenAI Vision,DOCX/PPTX/TXT 解析),文件夹里消失的文件同样删向量。字段映射:文档 ID→fileId,标题→metadata.title,来源类型→metadata.source。

  5. 分块、向量与回写

    每条内容格式化成干净正文加 metadata,先删除 Pinecone 中同 fileId 的旧向量,再按 Settings 的分块上限切分,调 OpenAI embeddings 生成 1536 维向量,批量 upsert 到指定 namespace,最后把该 itemId 的 dateModified 和当前时间 upsert 进 pinecone_sync_state。手动触发跑一轮合成数据验证全链路。

可直接复制的材料

pinecone_sync_state 表结构配置

本站独立编写的建表与配置清单;列名来自原文,键名是本示例约定,需与你在 Settings 节点的实际命名对齐。

{
  "tableName": "pinecone_sync_state",
  "columns": [
    {"name": "itemId", "type": "string", "comment": "商品ID/文章ID/Drive文件ID,与 Pinecone metadata.fileId 一致"},
    {"name": "indexedAt", "type": "datetime", "comment": "最近一次成功写入向量的时间"},
    {"name": "dateModified", "type": "datetime", "comment": "来源系统记录的最后修改时间"}
  ],
  "settingsNodeRequiredKeys": ["wooBaseUrl", "currency", "pineconeIndex", "pineconeHost", "pineconeNamespace", "embeddingModel", "embeddingDimensions", "chunkMaxChars", "perRunCap", "driveFolderId", "adminEmail", "wooWebhookSecret"]
}

校验节点的检查提示词(供 Code 节点内注释或 AI 辅助生成用)

本站编写的校验提示词,可放入 Code 节点旁的 AI 辅助或改写成纯 JS 判断,非原模板内容。

你是 n8n 配置校验器。输入是 Settings 节点的 JSON 和触发器类型 triggerType(manual/drive/webhook/schedule)。规则:1) wooBaseUrl、pineconeIndex、pineconeHost、pineconeNamespace、embeddingModel、embeddingDimensions、chunkMaxChars、perRunCap 必须有非空值;2) embeddingDimensions 必须等于 Pinecone 索引创建时的维度,默认 1536;3) triggerType 为 drive 时 driveFolderId 必填,为 webhook 时 wooWebhookSecret 必填;4) chunkMaxChars 建议在 500-2000 之间。输出 JSON:{"ok": true/false, "missing": [字段名], "route": "商品批量|商品webhook|博客|Drive|error"}。只输出 JSON。

合成商品测试数据

本站虚构的测试 CSV;woo-1003 状态为 draft,用于验证下架商品向量被删除。

itemId,title,description,dateModified,status
woo-1001,极简帆布托特包,"14安帆布,内袋拉链,承重8kg",2026-10-05T09:00:00Z,publish
woo-1002,冷萃咖啡玻璃瓶,"500ml 高硼硅,附不锈钢滤网",2026-10-06T14:30:00Z,publish
woo-1003,旧款手机壳,"已下架商品,用于测试删除向量",2026-09-01T08:00:00Z,draft

输入与输出示例

本站虚构演示,未实际运行,非原作者结果。

输入

触发方式选手动,pinecone_sync_state 中已有 woo-1001(indexedAt=2026-10-06T00:00:00Z, dateModified=2026-10-05T09:00:00Z)和 woo-1003 的记录,商店里 woo-1003 已改 draft,woo-1002 是新商品。

对应输出

校验通过→路由商品批量。比对结果:woo-1001 未变更跳过;woo-1003 已下架,删除 Pinecone 中 fileId=woo-1003 的全部向量并删状态行;woo-1002 新增,正文分 2 块生成 1536 维向量写入 namespace,状态表新增一行 {itemId: woo-1002, dateModified: 2026-10-06T14:30:00Z, indexedAt: 2026-10-07T05:00:11Z}。

做完检查这些

  • pinecone_sync_state 建好后能看到 itemId、indexedAt、dateModified 三列且类型正确
  • 缺少任一必填配置时执行走 error 分支并发出 Gmail 通知,不会写向量
  • woo-1003 这类下架项的向量被删除且状态行同步删除
  • woo-1002 这类新商品写入后,用 Pinecone 控制台按 fileId 过滤能查到对应分块
  • 第二轮手动运行时未变更项被跳过,没有重复写入

容易卡住的地方

  • 索引维度必须与 embeddingDimensions 一致,默认 1536,建错维度只能重建索引
  • Drive 触发器监听的文件夹 ID 要与 Settings 里的一致,否则两条逻辑各看各的
  • WooCommerce webhook 需指向生产 webhook 地址(以 /webhook/woo-product-events 结尾)且校验 HMAC,测试地址收不到签名事件
  • 原模板为付费模板,本站步骤是自建方案,节点命名与默认值以购买后的原模板为准
  • OpenAI embedding 与 Pinecone 存储均按用量计费,先用合成小数据跑通

原文与作者资料 ↗

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

原文标题
Sync WooCommerce products, blog, and Google Drive files to Pinecone with OpenAI
原作者
Stanislaw Chalupczak
原始发布日期
2026-10-07T06:46:19.628Z
来源
https://n8n.io/workflows/20604