Что соберем
Соберем практический workflow в n8n: входящий документ попадает в сценарий, Claude Fable 5 делает анализ, результат уходит на approval, после подтверждения создается задача ответственному. Такой процесс подходит для договоров, счетов, ТЗ, RFP, заявок, актов, регламентов и входящих PDF/DOCX.
Главная идея: Claude анализирует и готовит черновик решения, но не выполняет рискованные действия без подтверждения. Документ может влиять на деньги, сроки, договоренности и персональные данные, поэтому approval обязателен.
Схема workflow
Минимальная схема:
- Trigger: входящий файл или webhook.
- Download document: скачать файл.
- Extract text: получить текст из PDF, DOCX или Google Docs.
- Claude Fable 5: проанализировать документ.
- Parse JSON: проверить структурированный ответ.
- IF: определить, нужен ли approval.
- Approval: отправить результат человеку.
- Create task: создать задачу после подтверждения.
- Log: записать результат и ссылку на источник.
На старте лучше не делать автоматическую запись в CRM, бухгалтерию или документооборот. Сначала только анализ, черновик и задача.
Шаг 1. Подготовьте входные данные
Определите, откуда приходит документ.
Варианты:
- Google Drive: новый файл в папке.
- Email: письмо с вложением.
- Webhook: файл из формы или внешней системы.
- Telegram или Slack: пользователь отправляет файл боту.
- Notion или Confluence: новая страница или вложение.
Для каждого документа нужно сохранить:
- file_id;
- название;
- ссылка на файл;
- источник;
- кто отправил;
- дата получения;
- тип документа;
- статус обработки;
- владелец approval.
Проверка: если у документа нет источника и владельца, его нельзя безопасно проводить через автоматизацию.
Шаг 2. Создайте trigger в n8n
Для первого теста проще использовать Webhook node.
Node: Webhook
Method: POST
Path: /incoming-document
Response mode: Respond immediately
Отправляйте в webhook JSON:
{
"file_url": "https://example.com/document.pdf",
"file_name": "contract_supplier_2026.pdf",
"source": "email",
"sender": "manager@example.com",
"approval_owner": "legal@example.com",
"document_type": "contract"
}
Позже webhook можно заменить на Google Drive Trigger, Email Trigger или Slack Trigger.
Шаг 3. Скачайте документ
Добавьте HTTP Request node или Google Drive node.
Для HTTP Request:
Method: GET
URL: {{$json.file_url}}
Response format: File
Binary property: document
Проверка: в n8n у следующего узла должен появиться binary-файл. Если документ пришел ссылкой с закрытым доступом, сначала настройте права.
Шаг 4. Извлеките текст
Claude лучше давать чистый текст, а не сырой PDF. Способ зависит от файла:
- Google Docs: получить текст через Google Docs API.
- DOCX: конвертировать в текст.
- PDF с текстом: извлечь text layer.
- Скан: сначала OCR.
- Таблица: сохранить строки и заголовки.
В простом MVP можно сделать отдельный узел Extract text или внешний сервис. Важно сохранить номера страниц или разделов, если они есть.
Проверка: откройте извлеченный текст и убедитесь, что там не мусор из верстки. Для договоров, RFP и счетов особенно важны суммы, даты, реквизиты и нумерация пунктов.
Шаг 5. Вызовите Claude Fable 5
Добавьте HTTP Request node к API провайдера Claude или используйте доступный Anthropic/LLM node, если он есть в вашей сборке n8n.
Смысл запроса:
Ты анализируешь входящий документ.
Правила:
- используй только текст документа;
- не придумывай данные;
- если данных не хватает, пиши null или "не найдено";
- рискованные действия помечай approval_required = true;
- персональные данные не повторяй без необходимости;
- верни только JSON по схеме.
Передайте в prompt:
- метаданные файла;
- извлеченный текст;
- тип документа;
- правила анализа;
- JSON-схему ответа.
Шаг 6. Задайте JSON-схему результата
Для n8n лучше, чтобы Claude возвращал строгий JSON.
{
"document_type": "contract | invoice | rfp | spec | policy | unknown",
"summary": "короткая выжимка",
"key_facts": [
{
"fact": "важный факт",
"source": "страница или пункт",
"confidence": "high | medium | low"
}
],
"risks": [
{
"risk": "описание риска",
"severity": "high | medium | low",
"source": "страница или пункт",
"owner": "legal | finance | product | sales | ops",
"question": "что уточнить"
}
],
"approval_required": true,
"approval_reason": "почему нужно подтверждение",
"recommended_task": {
"title": "название задачи",
"description": "что сделать",
"assignee": "email или роль",
"priority": "high | medium | low",
"due_date": null
}
}
Проверка: если JSON не парсится, не продолжайте workflow. Добавьте error branch и отправляйте результат на ручную проверку.
Шаг 7. Разберите JSON в n8n
После Claude добавьте Code node или Set node.
Задача:
- распарсить JSON;
- проверить обязательные поля;
- проверить `approval_required`;
- вынести `summary`, `risks`, `recommended_task`;
- сохранить исходный ответ Claude в лог.
Простая логика:
Если approval_required = true -> отправить на approval.
Если JSON сломан -> отправить на ручную проверку.
Если severity = high -> approval обязателен.
Если document_type = unknown -> approval обязателен.
Лучше перестраховаться: спорный документ должен уходить человеку.
Шаг 8. Настройте approval
Approval можно сделать через Slack, Telegram, email или задачу в Notion.
Сообщение человеку:
Новый документ требует проверки.
Файл: {{$json.file_name}}
Тип: {{$json.document_type}}
Выжимка: {{$json.summary}}
Риски:
{{$json.risks}}
Рекомендуемая задача:
{{$json.recommended_task.title}}
Подтвердить: approve
Отклонить: reject
Нужна ручная проверка: review
Проверка: approval-сообщение должно содержать ссылку на исходный документ. Нельзя подтверждать анализ без доступа к источнику.
Шаг 9. Создайте задачу после approval
После подтверждения добавьте узел создания задачи.
Варианты:
- Notion database item.
- Jira issue.
- Linear issue.
- Trello card.
- Google Sheet row.
- Slack message в канал.
Минимальные поля задачи:
- title;
- description;
- assignee;
- priority;
- source document;
- risks;
- due date;
- approval owner;
- status.
Важно: если человек нажал reject или review, задача должна создаваться не как “выполнить”, а как “проверить вручную”.
Шаг 10. Ведите лог обработки
Добавьте Google Sheets или database node для audit log.
Логируйте:
- document_id;
- source;
- file_url;
- document_type;
- summary;
- approval_required;
- approval_status;
- task_id;
- created_at;
- error;
- model;
- prompt_version.
Лог нужен, чтобы потом понять, почему задача появилась, кто ее подтвердил и какой документ был источником.
Шаг 11. Обработайте ошибки
Добавьте error branches:
- файл не скачался;
- текст не извлекся;
- Claude вернул не JSON;
- confidence низкий;
- нет approval owner;
- документ содержит чувствительные данные;
- задача не создалась.
Для каждой ошибки отправляйте уведомление ответственному человеку. Не скрывайте сбои в workflow.
Шаблон prompt для Claude
Ты анализируешь входящий документ для workflow n8n.
Цель: сделать краткий анализ, найти риски, определить нужен ли approval и предложить задачу.
Метаданные:
file_name: {{file_name}}
source: {{source}}
sender: {{sender}}
document_type_hint: {{document_type}}
Правила:
- используй только текст документа;
- не придумывай факты;
- если данных нет, пиши null или "не найдено";
- суммы, даты, реквизиты, сроки и договоренности проверяй особенно внимательно;
- high-risk документы требуют approval;
- если документ связан с договором, деньгами, персональными данными, RFP или юридическими условиями, approval_required = true;
- верни только JSON.
Текст документа:
{{document_text}}
JSON-схема:
[вставьте схему]
Что считать готовым результатом
Workflow работает, если:
- документ попадает в n8n;
- текст извлекается без мусора;
- Claude возвращает валидный JSON;
- риски и ключевые факты имеют источник;
- approval приходит ответственному;
- после approve создается задача;
- после reject задача не создается как рабочая;
- все шаги пишутся в лог.
FAQ
Можно ли сразу создавать задачи без approval?
Для низкорисковых документов можно, но в первом запуске лучше всегда делать approval. Документы часто содержат деньги, сроки, договоренности и персональные данные.
Что делать, если Claude возвращает невалидный JSON?
Не продолжать workflow. Отправьте результат на ручную проверку и добавьте более строгую JSON-схему или повторный запрос на исправление формата.
Можно ли анализировать сканы?
Да, но сначала нужен OCR. Для сканов обязательно проверяйте confidence и спорные места, особенно суммы, даты, реквизиты и подписи.
Где хранить prompt version?
В audit log. Если поведение workflow изменится, вы сможете понять, какой prompt использовался для конкретного документа.
Когда подключать CRM или бухгалтерию?
Только после тестов и approval. Сначала создавайте задачи и уведомления. Запись в CRM, 1С или бухгалтерские системы лучше добавлять позже и с жесткими правилами.