PDF исчез между родительским и дочерним workflow n8n

Родительский workflow принимает PDF через Webhook и вызывает дочерний workflow для извлечения текста. Дочерний Extract From File получает имя файла в JSON, но не видит сам PDF. Кажется, будто Execute Sub-workflow «не передаёт бинарные данные». В действительности файл мог исчезнуть раньше, когда промежуточный узел создал новый item только с json и не сохранил binary.

Смотрите item прямо перед вызовом

У n8n item есть отдельно JSON-данные и бинарное поле. Имя invoice.pdf в json.fileName не означает, что существует binary.data. Откройте execution view на Webhook, после каждого преобразования и на входе Execute Sub-workflow. У нужного item проверьте вкладку binary и точное имя свойства. Если binary исчезло ещё до вызова дочернего workflow, исправляйте последний узел, после которого оно было видно, а не настройки дочернего Extract.

В Edit Fields (Set) есть опция Include Binary Data; включите её, если этот узел должен пропускать файл дальше. У Split Out есть отдельная Include Binary. Если Code node создаёт новый item, верните и json, и binary из входного item. Не копируйте только метаданные вроде mimeType и fileName в JSON: они не заменяют бинарное содержимое или управляемую n8n ссылку на него.

Сверьте контракт дочернего workflow

Дочерний workflow должен знать, какое свойство читать: если PDF пришёл как binary.attachment, а Extract From File настроен на data, он смотрит не туда. Выберите единое имя, например data, и зафиксируйте его при передаче. Перед Extract добавьте диагностическую проверку наличия binary.data; при отсутствии остановите ветку с понятной ошибкой и исходным ID документа. Тогда тихое пустое извлечение превратится в локализуемый сбой.

Тест состоит из одного небольшого PDF с известной строкой «Счёт 42». Сначала запустите child напрямую с бинарным fixture. Затем прогоните тот же файл через parent и сравните наличие binary.data на входе child. Наконец вставьте каждый промежуточный узел по одному: станет видно, какой из них теряет поле. Если binary есть на обеих границах, но данные не читаются после обновления n8n, проверьте версию и режим хранения бинарных данных; это уже отдельная проблема хранения, а не картирования item.

В платном курсе Продвинутый n8n: production-автоматизации и AI-агенты вы разделяете сложные автоматизации на sub-workflows и отрабатываете item linking на реальных входных данных. PDF-fixture позволяет проверить контракт между parent и child до подключения AI-обработки текста. Откройте программу курса, чтобы довести такую схему до управляемой интеграции.

Продолжить на практике