---
title: "Ollama и n8n: локальные AI-сводки | Nodbot"
source_url: "https://nodbot.ru/workflows/ollama-local-ai-summary/"
canonical_url: "https://nodbot.ru/workflows/ollama-local-ai-summary/"
language: "ru"
content_type: "WorkflowTemplate"
section: "workflows"
generated_at: "2026-05-30"
word_count_source: 1082
---

# Ollama и n8n: локальные AI-сводки без отправки данных в облако

## AI summary

Практический workflow для локальной AI-сводки: принять текст, очистить его, разбить на безопасные фрагменты, отправить в Ollama API, собрать итоговую summary и не выгружать внутренние данные во внешний AI-сервис.

## Best used for

Полноценный Problem/Solution-мануал для внедрения в n8n: импортировать workflow JSON, настроить API, выполнить production-тесты и передать решение команде.

## Table of contents

- Проблема: где ломается сценарий
- Архитектура workflow
- Контракт входных данных
- Code Node: нормализация и контроль
- Готовый workflow JSON
- Пошаговая настройка
- Тесты перед production
- Production-риски
- Полезные ссылки и смежные workflow
- Критерии готовности

## Key topics

- Ollama
- local AI
- n8n HTTP Request
- summary
- privacy
- chunking

## Source outline

Ollama и n8n: локальные AI-сводки без отправки данных в облако ¶ Обновлено: 2026-05-30 AI summary: Практический workflow для локальной AI-сводки: принять текст, очистить его, разбить на безопасные фрагменты, отправить в Ollama API, собрать итоговую summary и не выгружать внутренние данные во внешний AI-сервис. Шаблон для внедрения Скачать workflow JSON Скачать test payload Скопировать curl Импортируйте workflow, замените credentials и прогоните тестовый payload до включения production. Содержание Проблема: где ломается сценарий Архитектура workflow Контракт входных данных Code Node: нормализация и контроль Готовый workflow JSON Пошаговая настройка Тесты перед production Production-риски Полезные ссылки и смежные workflow Критерии готовности Проблема: команда хочет автоматизировать сводки писем, заявок или документов, но не может отправлять коммерческие данные в облачные LLM из-за NDA, персональных данных или внутренней политики безопасности. Решение: использовать n8n как orchestrator и Ollama как локальный AI-runtime: workflow чистит входной текст, режет его на chunks, вызывает локальный `/api/generate`, собирает краткую сводку и пишет audit без лишних персональных данных. Workflow оставляет чувствительный текст внутри вашей инфраструктуры и возвращает проверяемую summary. Проблема: почему внутренние тексты нельзя всегда отправлять в облачный AI ¶ Локальная AI-сводка нужна там, где исходный текст нельзя отдавать внешнему провайдеру: коммерческие предложения, обращения клиентов, внутренние отчёты, протоколы встреч или фрагменты базы знаний. Простая интеграция “HTTP Request → облачная модель” решает задачу быстро, но может нарушить правила хранения данных. Ollama позволяет запускать модели локально, а n8n удобно использовать для маршрутизации, подготовки текста, контроля ошибок и передачи результата в CRM, Telegram или Google Sheets. Такая связка не делает модель магической: нужно контролировать размер текста, таймауты, качество ответа и fallback на ручную обработку. Архитектура workflow Ollama → n8n для локальной суммаризации ¶ Нода Роль Что проверить Webhook input принимает текст, source_id и режим summary лимит размера, автор запроса, тип источника Normalize text удаляет HTML, повторяющиеся пробелы и мусор нет секретов в логах и stack trace Chunk text режет длинный текст на фрагменты размер chunk меньше контекстного окна модели Call Ollama API вызывает локальный `/api/generate` base URL, model, timeout, stream=false Merge summary собирает итоговую сводку нет выдуманных фактов, есть action items Respond / Save возвращает JSON или пишет результат сохраняется source_id и audit_key Для production лучше держать Ollama на отдельной машине или контейнере рядом с n8n, а не на случайном ноутбуке. Так проще контролировать GPU/CPU, доступ к порту `11434` и обновления модели. Контракт входных данных для локальной AI-сводки ¶ { "source_id": "ticket-9831", "source_type": "support_thread", "language": "ru", "summary_mode": "action_items", "text": "Клиент просит перенести интеграцию с Google Sheets на Битрикс24, сохранить UTM и убрать дубли по телефону. Нужен срок и оценка." } В payload не нужен полный контекст бизнеса. Передавайте только текст, который реально нужен для summary, и стабильный `source_id`, чтобы результат можно было связать с исходным объектом. Code Node: очистка текста, chunking и prompt для Ollama ¶ const src = $json.body ?? $json; const text = String(src.text ?? '').replace(/<[^>]*>/g, ' ').replace(/\s+/g, ' ').trim(); if (text.length < 80) throw new Error('Text is too short for useful summary'); if (text.length > 60000) throw new Error('Text is too long: split before workflow'); const maxChunk = 5500; const chunks = []; for (let i = 0; i < text.length; i += maxChunk) { chunks.push(text.slice(i, i + maxChunk)); } const prompt = `Сделай краткую деловую сводку на русском. Верни JSON: summary, facts, action_items, risks. Не добавляй факты, которых нет в тексте.\n\nТекст:\n${chunks[0]}`; return [{ json: { source_id: String(src.source_id ?? 'unknown'), source_type: String(src.source_type ?? 'text'), model: src.model ?? 'qwen2.5:7b-instruct', ollama_body: { model: src.model ?? 'qwen2.5:7b-instruct', prompt, stream: false, options: { temperature: 0.2 } }, chunk_count: chunks.length, audit_key: `ollama-summary:${src.source_id ?? Date.now()}` } }]; Почему stream=false удобнее для автоматизации Потоковая генерация хороша для интерфейса чата, но workflow проще тестировать и логировать, когда Ollama возвращает один JSON-ответ. Для длинных документов лучше отдельно делать chunking и merge, а не ждать бесконечный stream. Готовый workflow JSON: скачать и импортировать ¶ Скачать готовый workflow JSON Скачать тестовый payload { "name": "Nodbot - Ollama local AI summary", "nodes": [ { "name": "Webhook input", "type": "n8n-nodes-base.webhook", "purpose": "Принять текст для локальной сводки" }, { "name": "Normalize and chunk text", "type": "n8n-nodes-base.code", "purpose": "Очистить текст и подготовить prompt" }, { "name": "Call Ollama generate", "type": "n8n-nodes-base.httpRequest", "purpose": "Вызвать локальный Ollama API" }, { "name": "Validate summary", "type": "n8n-nodes-base.code", "purpose": "Проверить JSON и отсутствие пустого ответа" }, { "name": "Save audit log", "type": "n8n-nodes-base.postgres", "purpose": "Сохранить source_id, model и latency" }, { "name": "Respond to Webhook", "type": "n8n-nodes-base.respondToWebhook", "purpose": "Вернуть summary в вызывающую систему" } ], "connections": "Webhook input → Normalize and chunk text → Call Ollama generate → Validate summary → Save audit log → Respond to Webhook" } Пошаговая настройка Ollama, n8n и локальной модели ¶ Установите Ollama и скачайте модель, которую реально выдерживает ваш сервер. Закройте порт `11434` от внешнего интернета и разрешите доступ только n8n. Импортируйте workflow JSON и замените base URL Ollama, если он отличается от `http://localhost:11434`. Настройте prompt под ваш тип данных: заявки, письма, отчёты или протоколы. Добавьте audit log: source_id, model, chunk_count, latency и статус ответа. Тесты перед production и проверка качества summary ¶ curl -X POST "https://YOUR-N8N-DOMAIN/webhook/ollama-local-ai-summary" \ -H "Content-Type: application/json" \ --data @ollama-local-ai-summary-payload.json Отправьте короткий текст, длинный текст, HTML-письмо и текст с персональными данными. Проверьте, что модель не добавляет факты, которых нет во входном тексте. Остановите Ollama и убедитесь, что workflow возвращает контролируемую ошибку. Проверьте timeout: зависший локальный AI не должен блокировать очередь n8n. Сравните summary с ручной выжимкой на 10 реальных примерах. Production-риски локального AI и Ollama API ¶ Ollama доступен извне. Локальная приватность теряет смысл, если порт API открыт в интернет. Нет лимита длины. Длинный текст может упасть по timeout или съесть всю память. Модель выдумывает факты. Prompt должен требовать evidence и запрет на добавление отсутствующих данных. Нет fallback. При недоступности Ollama нужна ручная очередь или облачный резерв только для разрешённых данных. Execution logs хранят исходный текст. Настройте политику хранения данных в n8n. Полезные ссылки и смежные workflow ¶ См. также OpenRouter model fallback , GigaChat support draft и Docker Compose для n8n . Официальные документы: Ollama API и n8n HTTP Request . Итоговая карточка показывает модель, source_id, число chunks и статус проверки. Критерии готовности ¶ Ollama недоступен из интернета и вызывается только из n8n. Есть лимиты размера текста, timeout и понятная ошибка при недоступной модели. Prompt требует JSON, action items и запрет на выдуманные факты. Audit log хранит source_id/model/status, но не избыточные персональные данные. Результат проверен на реальных примерах и принят владельцем процесса. Нужны локальные AI-сводки без утечки данных? Nodbot настроит Ollama, n8n, Docker, лимиты, prompt-контракт, audit log и интеграцию результата с вашей CRM или базой знаний. Обсудить локальный AI workflow

## Test payload

```json
{
  "source_id": "ticket-9831",
  "source_type": "support_thread",
  "language": "ru",
  "summary_mode": "action_items",
  "text": "Клиент просит перенести интеграцию с Google Sheets на Битрикс24, сохранить UTM и убрать дубли по телефону. Нужен срок и оценка."
}
```

## Key implementation snippet

```javascript
const src = $json.body ?? $json;
const text = String(src.text ?? '').replace(/<[^>]*>/g, ' ').replace(/\s+/g, ' ').trim();
if (text.length < 80) throw new Error('Text is too short for useful summary');
if (text.length > 60000) throw new Error('Text is too long: split before workflow');

const maxChunk = 5500;
const chunks = [];
for (let i = 0; i < text.length; i += maxChunk) {
  chunks.push(text.slice(i, i + maxChunk));
}

const prompt = `Сделай краткую деловую сводку на русском. Верни JSON: summary, facts, action_items, risks. Не добавляй факты, которых нет в тексте.\n\nТекст:\n${chunks[0]}`;

return [{
  json: {
    source_id: String(src.source_id ?? 'unknown'),
    source_type: String(src.source_type ?? 'text'),
    model: src.model ?? 'qwen2.5:7b-instruct',
    ollama_body: { model: src.model ?? 'qwen2.5:7b-instruct', prompt, stream: false, options: { temperature: 0.2 } },
    chunk_count: chunks.length,
    audit_key: `ollama-summary:${src.source_id ?? Date.now()}`
  }
}];
```

## Importable workflow structure

```json
{
  "name": "Nodbot - Ollama local AI summary",
  "nodes": [
    {
      "name": "Webhook input",
      "type": "n8n-nodes-base.webhook",
      "purpose": "Принять текст для локальной сводки"
    },
    {
      "name": "Normalize and chunk text",
      "type": "n8n-nodes-base.code",
      "purpose": "Очистить текст и подготовить prompt"
    },
    {
      "name": "Call Ollama generate",
      "type": "n8n-nodes-base.httpRequest",
      "purpose": "Вызвать локальный Ollama API"
    },
    {
      "name": "Validate summary",
      "type": "n8n-nodes-base.code",
      "purpose": "Проверить JSON и отсутствие пустого ответа"
    },
    {
      "name": "Save audit log",
      "type": "n8n-nodes-base.postgres",
      "purpose": "Сохранить source_id, model и latency"
    },
    {
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "purpose": "Вернуть summary в вызывающую систему"
    }
  ],
  "connections": "Webhook input → Normalize and chunk text → Call Ollama generate → Validate summary → Save audit log → Respond to Webhook"
}
```

## Retrieval hints

- Использовать HTML как canonical source.
- Markdown удобен для LLM-ответов, извлечения workflow-контракта, кода и чеклистов.
- Для ссылок пользователю отдавать canonical URL.
