SuperAPI AI 工具集

n8n-binary-and-data

数据与分析

查看项目

更新于 10-15 20:30

技能介绍

用途:在 n8n 工作流中正确处理文件与二进制数据。每个 n8n item 有两个独立槽位:$json 存结构化数据,$binary 存文件字节,二者并行传递。文件内容(PDF、图片、zip)只存在于 $binary,$json 最多存元数据。

主要能力与规则:

  1. 文件内容在 $binary.<key>,不在 $json;读取 $json.data 拿不到文件。
  2. 二进制无法跨越 AI 智能体工具边界(双向都不行)。工具参数与返回值只能是 JSON,需先把文件暂存到存储,再通过 JSON 传 key 或 URL。
  3. 聊天界面(Slack、Discord、Teams、Telegram、webhook 聊天)按 URL 渲染图片,不读 $binary,图片必须放在可被 URL 获取的位置。

产生二进制:HTTP Request 需设 responseFormat: "file";Read/Write Files from Disk、存储下载(S3、Google Drive、Dropbox 等)、带附件的邮件触发器、AI 媒体节点(用 options.binaryPropertyOutput)都会填充 $binary。多数节点默认键为 data。

读写二进制:在 Code 节点用 this.helpers.getBinaryDataBuffer(0, 'data') 读取,不要手动 base64 解码;写入时自行构造槽位,包含 data(base64)、mimeType、fileName、fileExtension。Code 节点若只返回 [{ json: {...} }] 会静默丢弃文件,需重新附加 binary: $input.item.binary。

保留二进制:Edit Fields(Set)、Code、IF 等纯 JSON 节点可能丢弃 $binary。可用节点的透传选项(如 Edit Fields 的 includeOtherFields),或分叉后用 Merge 的 combineByPosition 模式按位置合并。

智能体工具边界:入站时把上传文件存到私有存储并传 key,在系统提示中注入 key;出站时工具子工作流上传文件并返回 { ok, key, url, mimeType }。passthroughBinaryImages: true 只影响 LLM 视觉输入,且仅限图片,不能让工具接收文件。

限制:$fromAI() 不能携带二进制;工具参数与返回值仅 JSON;n8n 无内置 CDN 或公共文件托管,需用户自备存储(S3、R2、GCS、Azure Blob、Backblaze B2、Supabase Storage、Dropbox、Google Drive、OneDrive、Box 等),敏感内容用带过期的签名 URL;getBinaryDataBuffer 仅在 Code 节点可用,Custom Code Tool 沙箱不可用。验证二进制是否保留需通过 n8n_executions 检查执行输出,validate_workflow 不会标记被丢弃的二进制槽。Data Tables 由 n8n_manage_datatable 负责,本技能不涉及。