Tooluck logoTooluck
SKILL.md

n8n-binary-and-data

Agent skill fromczlonkowski/n8n-skills

Handle files and binary data in n8n correctly. Use when working with files, images, PDFs, attachments, uploads or downloads, base64, vision/multimodal input, or when an AI agent needs a file as tool input or output — and whenever the user mentions $binary, binaryPropertyName, "read the PDF", "attach the file", "send the image", Merge losing binary, or a CDN for chat images. Covers the $binary vs $json split, reading/writing binary, keeping binary alive across transforms with Merge, the agent-tool binary boundary, and the CDN/URL requirement for chat surfaces.

How to install n8n-binary-and-data

install n8n-binary-and-data
# install the n8n-skills pack with the skills CLI
npx skills add czlonkowski/n8n-skills

# or add only this skill to Claude Code: copy the folder

skills/n8n-binary-and-data/

# into

~/.claude/skills/n8n-binary-and-data/ (all projects)

.claude/skills/n8n-binary-and-data/ (one project)

skills/n8n-binary-and-data/SKILL.md

MITFull file
1# n8n Binary and Data
2
3Every n8n item carries two independent slots: `$json` for structured data and `$binary` for file bytes. They travel side by side through the workflow. File contents — the actual PDF, image, or zip — live in `$binary`, never in `$json`. Get that split wrong and you read an empty field, lose a file mid-flow, or hand an AI agent a tool input it can't use.
4
5This skill covers where binary lives, how to read and write it, how to keep it from being silently stripped, the hard wall between binary and the AI-agent tool boundary, and why chat surfaces need a URL instead of raw bytes.
6
7---
8
9## The three rules that prevent 90% of binary bugs
10
111. **File contents are in `$binary`, not `$json`.** After an HTTP download, a "Read Files", or an email-attachment trigger, the bytes sit in `$binary.<key>`. `$json` holds metadata at most. Reading `$json.data` for file contents gives you nothing.
12
132. **Binary cannot cross the AI-agent tool boundary — in either direction.** Tool arguments and tool return values are JSON only. An uploaded image can't be passed into a tool as a file, and a tool can't return raw bytes. Pre-stage to storage and pass a key or URL through JSON instead. See `AGENT_TOOL_BINARY.md`.
14
153. **Chat surfaces render images by URL, not by `$binary`.** Slack, Discord, Teams, Telegram, embedded webhook chat — none of them read the binary slot. The image has to live somewhere a URL can fetch it. See `CDN_REQUIREMENT.md`.
16
17---
18
19## The two slots
20…

Excerpt shown under the repository's MIT license.

More skills in n8n-skills

Keep exploring

Similar skill repositories

Newsletter

Join the Community

Subscribe to our newsletter for the latest news and updates