СМЕТА v4.1 — Контент-завод для бухгалтерской компании

Заказчик: ООО «Смарт Сити»  |  Версия: 4.1 (финальная с contingency-буфером и уточнёнными часами)

Ставка: 2 500 руб/ч ASR субтитры: Вариант Б (AssemblyAI) Сайт: JSON + pre-generated HTML (SEO) Claude фоллбек: Anthropic API pay-per-use

Смета v4.1. Включает всё из v4 плюс: увеличенный резерв по сайту (+2 ч), SEO-проверка индексации (+2 ч), тонкая настройка субтитров под аватар (+3 ч), contingency-буфер 10% на каждый этап. Часы «реал» — потолок. Резервные позиции выставляются только если фактически потребовались. Contingency — явная защита от непредвиденного: если не потрачен, не выставляется.

ЭТАП 1 — Инфраструктура, Claude Code + фоллбеки

Задача Опт Реал Сумма, руб Комментарий / риск
— Базовая настройка VPS —
VPS Ubuntu 22.04: выбор провайдера, первичный конфиг (hostname, timezone, locale, apt upgrade) 0.512 500
Безопасность: непривилегированный пользователь, SSH только по ключу, отключение root-логина и password auth 0.512 500
Firewall + fail2ban: ufw (22, 80, 443), fail2ban для SSH, тест блокировки 0.512 500
Docker + Docker Compose: установка, daemon (log rotation, restart policy), автостарт 0.512 500
Caddy reverse proxy: Caddyfile для n8n, автоматический TLS Let's Encrypt, тест HTTPS 11.53 750 Если домен не настроен — +0.5 ч на DNS propagation.
n8n в Docker Compose: volume, .env, basic auth, тест запуска и доступа по домену 125 000 Частый источник проблем: конфликты портов, права на volume.
Бэкап volume n8n: cron-скрипт (ежедневно), архив → rclone/S3/Яндекс.Диск. Тест восстановления. 1.52.56 250 Тест восстановления обязателен — без него бэкап не считается работающим.
Структура папок: /prompts/, /scripts/, /logs/, /tmp/, /env/. .env.example в репо. 0.50.51 250
GitHub приватный репозиторий: первичный push (docker-compose, конфиги, .gitignore с .env) 0.50.51 250
Watchtower: автообновление Docker-образов n8n (minor/patch версии), уведомление в TG при обновлении 0.512 500 Major-версии n8n — только ручное обновление после проверки changelog.
— Claude Code на VPS: авторизация и стабильность (ГЛАВНЫЙ РИСК) —
Исследование способов авторизации Claude Code CLI под Max-подпиской на headless сервере (xvfb+chromium, token extraction, VNC) 2615 000 OAuth сессия слетает каждые 24–48 ч. Нужно выбрать наименее хрупкий способ. Исследование входит в смету.
Реализация выбранного способа авторизации (VNC+noVNC или token-экстракция) 2410 000
Python CLI-wrapper для Claude Code: retry (3 попытки), exponential backoff, circuit breaker (если 3 фейла подряд → переключение на API фоллбек), логирование каждого вызова 2410 000 Wrapper — это ~100 строк Python. Но отладка circuit breaker-логики занимает время.
Скрипт мониторинга сессии: cron каждые 30 мин проверяет claude --version, при ошибке → алерт в TG с кнопкой «Переавторизовать» + пошаговая инструкция 125 000
Тест стабильности Claude Code: 48 часов непрерывной работы без вмешательства, проверка что сессия не слетела 25 000 Чистое время ожидания + мониторинг. Без этого теста этап нельзя сдать.
Документация переавторизации: пошаговая инструкция для заказчика (текст + скриншоты). Заказчик должен уметь восстановить сессию самостоятельно. 125 000
— Claude API фоллбек —
Anthropic API ключ (Console): конфиг в .env, тест HTTP Request к /v1/messages через n8n 0.512 500
Логика автопереключения в n8n: Claude Code ошибка авторизации → автоматически тот же запрос через Anthropic API → уведомление заказчику «работаем на API фоллбеке» 1.537 500 Система продолжает публиковать даже при слёте сессии. Без этого — каждый слёт = пропущенная публикация.
— Мониторинг и логирование —
Структурированное логирование: все вызовы внешних API (Claude, Gemini, Imagen, TG) пишутся в /logs/YYYY-MM-DD.log в JSON-формате (timestamp, сервис, статус, latency, ошибка) 125 000 Без структурированных логов диагностика через месяц после сдачи невозможна.
Ежедневный health-check: cron в 8:50 MSK проверяет (Claude Code сессия, n8n ping, VPS диск >80%, последняя успешная публикация <25 ч назад) → TG-сообщение «OK» или «⚠ ВНИМАНИЕ: [что не так]» 1.52.56 250
UptimeRobot / Healthchecks.io: внешний мониторинг n8n endpoint, алерт если недоступен >5 мин 0.512 500 Бесплатный тариф UptimeRobot достаточен.
— Security audit —
Сканирование репозитория на секреты (git-secrets / truffleHog), проверка .gitignore, проверка что .env не попал в историю коммитов 0.512 500
Проверка прав файлов на VPS: /env/ (chmod 600), ключи SSH, docker socket 0.50.51 250
— Финализация этапа 1 —
Тест сдачи: claude -p «тест» через n8n SSH нода → ответ получен. Скриншот заказчику. 0.512 500
Документация этапа 1 (Markdown): развернуть с нуля, восстановить из бэкапа, переавторизовать Claude, типичные ошибки 237 500
Stage-окружение: отдельный Google Sheet «test» и тестовый TG-канал для прогона без публикации в прод 11.53 750 Используется во всех этапах для тестирования перед выводом в прод.
ИТОГО ЭТАП 1 ~25~40100 000 +7 500 vs v3 за: Python wrapper, мониторинг, security audit, stage-окружение, watchtower
Contingency 10% этапа 1 (непредвиденное: Claude Code хуже ожидаемого, нестандартный VPS-провайдер, итерации авторизации) 510 000 Выставляется по факту потраченного. Если этап прошёл чисто — не включается в счёт.
ИТОГО ЭТАП 1 с contingency ~25~45110 000

ЭТАП 2 — Поток А: Текстовый контент

Telegram + Яндекс.Дзен + Яндекс.Бизнес + Сайт (JSON+pre-gen HTML) + Imagen 3

Задача Опт Реал Сумма, руб Комментарий / риск
— Google Sheets: база контента —
Структура таблицы: все колонки (id, тема, статус, lock, дата_план, дата_факт, текст_тг/дзен/карты/сайт, url_картинки, url_тг/дзен/карты/сайт, флаг_видео, статус_видео, ошибка, лог) 11.53 750
Сервисный аккаунт Google: Cloud Console, JSON-ключ в .env, Google Sheets credential в n8n 11.53 750
Нода чтения строки «pending» + запись lock-статуса (защита от двойного запуска) 125 000 Без lock: при retry workflow публикует дубль.
— Генерация текстов: Claude Code / API фоллбек —
Schedule Trigger 09:00 MSK (UTC+3). Тест на переход летнего/зимнего времени. 0.512 500 n8n работает в UTC — ошибка с timezone = публикация в 6:00 или 12:00.
SSH Execute Command → Python wrapper → claude. Захват stdout, обработка stderr, парсинг ответа, таймаут 120 сек, retry 3 раза с backoff. 2410 000
Автопереключение на Anthropic API при ошибке Claude Code (circuit breaker из wrapper). Идентичный промпт, идентичный парсинг ответа. 125 000
Rate limiting для всех внешних API в workflow: задержки между запросами, обработка HTTP 429, exponential backoff 125 000 Gemini Flash, Imagen, ElevenLabs, HeyGen — у каждого свои лимиты.
— Техническая шлифовка промптов —
Получение промптов от заказчика, прогон через API в тестовом режиме, выявление мусора (вводные фразы, markdown, JSON-несовместимые символы) 2410 000 Промпт из чата ≠ промпт для API. Обязательный шаг.
Python-валидатор выхода: проверка длины (мин/макс символов для каждой площадки), отсутствия вводных фраз AI, корректности markdown для TG. Повторный запрос если валидация не прошла. 1.537 500 Без валидатора: иногда Gemini выдаёт «Вот ваш текст: ...» или обрезает на полуслове.
— Генерация адаптаций: Gemini Flash —
Google AI Studio API ключ, тест endpoint, конфиг в n8n 0.512 500
Промпт-шаблоны для трёх адаптаций (Дзен / Карты / Сайт): параметризованные, хранение в /prompts/ на VPS 125 000
Нода лонгрида Дзен (2500–4000 знаков): запрос, валидация длины, retry если короче 125 000
Нода описания Яндекс.Карт (до 500 знаков): генерация, обрезка при превышении 0.512 500
Нода SEO-текста для сайта: H2/H3, мета-описание (до 160 символов), title тега, slug (транслитерация темы) 125 000
— Картинки: Imagen 3 + фоллбек —
Проверка доступности Imagen 3 через Google AI Studio API с IP VPS (geo-блок вероятен) 0.525 000 Проверить до начала разработки этого блока. Российские IP часто блокируются.
Если Imagen 3 недоступен: тест и интеграция Recraft v3 API или Fal.ai FLUX. Сравнение качества, выбор, конфиг в n8n. 410 000 Резерв. Не тратится если Imagen работает.
Нода генерации картинки 16:9: промпт из темы, запрос, base64/URL, сохранение на VPS, проверка размера файла 1.52.56 250
— Публикация: Telegram —
Telegram Bot: BotFather, добавление в канал как admin, chat_id, тест sendMessage 0.50.51 250
Нода sendPhoto + caption. Логика: если len > 1024 → sendPhoto без подписи + sendMessage. Экранирование Markdown v2. 125 000 Markdown v2 в TG: символы .-()+ надо экранировать. Частый источник 400 Bad Request.
— Публикация: Яндекс.Дзен (RSS) —
RSS 2.0 генератор: n8n Webhook GET, последние N строк из Sheets, валидный XML (CDATA, enclosure, pubDate RFC-822, encoding UTF-8). Тест через W3C Feed Validator. 2410 000 Дзен не подхватит фид с невалидным XML или неправильным pubDate.
Подключение RSS в Дзен-канале, ожидание первого автозабора, проверка отображения 125 000 Фид принимается только с подтверждённого домена. Если n8n на отдельном домене — нужен CNAME или проксирование.
— Публикация: Яндекс.Бизнес / Карты —
Исследование API Яндекс.Бизнес для публикации постов в карточку: проверка актуальной документации, тест OAuth, тест POST поста 137 500 API для постов в карточку ограничен или недоступен публично. Высокая вероятность фоллбека.
Если API доступен: OAuth-регистрация, нода HTTP Request, обработка лимитов (1–2 поста/нед) 1.537 500
Фоллбек (обязательно в любом случае): TG-уведомление заказчику с готовым текстом + картинкой + кнопкой подтверждения ручной публикации. Фиксация в Sheets. 125 000
— Публикация: Сайт (JSON + pre-generated HTML для SEO) —
Аудит сайта: структура HTML, тип хостинга, права SFTP, наличие шаблона страницы. Обязателен ДО начала разработки этого блока. 125 000 Без аудита нельзя спроектировать решение.
posts.json: Python-скрипт обновления (append нового поста: slug, title, date, description, content_html, og_image). Единственный изменяемый файл сайта. 125 000
Pre-generated article HTML: Python/Jinja2 создаёт article-slug.html со статическим <head> (title, meta description, og:title, og:image, canonical URL) + content. Деплоится рядом с posts.json. 2410 000 Решает SEO-проблему клиентского рендера. Яндекс видит полноценную HTML-страницу без JS.
sitemap.xml: автогенерация/обновление при каждой новой публикации (добавление <url> новой статьи) 0.512 500 Нужен для корректной индексации в Яндексе.
JS-блок для страницы блога: fetch(posts.json) → рендер списка статей с датой, заголовком, описанием. Один раз правится вёрстка сайта. 1.52.56 250 JS нужен только для списка статей. Каждая статья — статичный HTML.
SFTP деплой: загрузка posts.json + новый article-slug.html + sitemap.xml. retry при ошибке соединения. Тест прав доступа. 1.537 500
Резерв: нестандартная структура сайта, конфликты путей, ограничения хостинга 37 500 Выставляется только если фактически потребовалось.
— Финализация потока А —
Логика частичного успеха: сбой одного канала НЕ останавливает workflow. Публикует в остальные каналы, фиксирует какой канал упал, уведомляет заказчика с деталями. 2410 000 Без этого: сбой Яндекс.Карт = пост не вышел нигде.
Обновление Sheets: статус «published», дата, URL всех каналов, тексты в колонках. Снятие lock. 11.53 750
Уведомление заказчику в TG: резюме (что вышло, ссылки, превью картинки, что не вышло и почему) 0.512 500
Error Trigger нода: перехват всех ошибок, определение шага сбоя, уведомление в TG с указанием шага и ошибки, статус «error» в Sheets 1.537 500
Очистка временных файлов (картинки, тексты) после публикации 0.50.51 250
Code review / рефакторинг workflow: проверка нод на дублирование, унификация error handling, проверка всех таймаутов 125 000 Новая позиция v4. Без рефакторинга workflow накапливает технический долг.
Тестирование в stage: 5 прогонов в тестовом Sheets + тестовом TG-канале. Фикс багов. 2410 000
Приёмочное тестирование в проде: 7 успешных публикаций подряд во все каналы. Тест частичного сбоя (отключить один канал намеренно). 3512 500
Документация этапа 2: схема потока, все ноды, переменные, типичные ошибки и решения 237 500
Тестирование SEO: проверка индексации новых страниц Яндекс.Вебмастер (добавление sitemap, тест fetch-as-bot), проверка OpenGraph в TG и VK превью, structured data если требуется 125 000 Новая позиция v4.1. Без этой проверки pre-gen HTML может не индексироваться из-за ошибок meta или canonical.
Экспорт workflow JSON в GitHub 0.50.51 250
ИТОГО ЭТАП 2 ~45~95237 500 +резерв сайта до 5 ч, SEO-тест +2 ч
Contingency 10% этапа 2 (нестандартная структура сайта, итерации промптов с заказчиком, Яндекс.Бизнес API-сюрпризы) 1025 000 Выставляется по факту потраченного.
ИТОГО ЭТАП 2 с contingency ~45~105262 500

ЭТАП 3 — Поток Б: AI-видео с аватаром

⚠ Рекомендуется оформить отдельным договором. Запускать только после стабильной работы этапов 1+2 не менее 2 недель.

Задача Опт Реал Сумма, руб Комментарий / риск
— ElevenLabs: генерация аудио —
Подключение ElevenLabs API, тест /v1/text-to-speech/{voice_id}, конфиг в .env 0.512 500
Нода HTTP Request: текст + voice_id, получение mp3, сохранение на VPS 11.53 750
Обработка лимита символов: разбивка на чанки при превышении лимита тарифа, конкатенация аудио-файлов через FFmpeg 125 000
ffprobe: получение длительности аудио (нужна для субтитров и определения типа публикации в TG) 0.512 500
Rate limiting + backoff для ElevenLabs API 0.512 500
— HeyGen: генерация видео (ЗОНА РИСКА: асинхронность и нестабильность) —
Изучение актуальной версии HeyGen API (v1 vs v2, changelog). Тест /v2/video/generate с test_mode=true (без расхода кредитов). 0.525 000 HeyGen меняет API без предупреждения. Не полагаться на примеры из интернета старше 3 месяцев.
Нода POST /video/generate: avatar_id, voice_id / audio_asset_id, test_mode, обработка response с video_id 125 000
Webhook от HeyGen (предпочтительно): регистрация callback URL в HeyGen, n8n Webhook нода принимает событие video.completed / video.failed. Устраняет необходимость поллинга. 1.537 500 Webhook надёжнее поллинга. Но требует публичного HTTPS endpoint для n8n — уже есть через Caddy.
Поллинг как фоллбек (если Webhook недоступен на тарифе): цикл Wait 30 сек → GET статус, максимум 30 итераций (15 мин таймаут) 1.537 500 Реализовать оба варианта, переключение через переменную в .env.
Скачивание MP4: wget по URL из ответа, проверка размера файла (не 0 байт), валидация через ffprobe (длительность > 0, кодек H264) 0.51.53 750
Обработка ошибок HeyGen: failed → 1 автоматический повтор через 5 мин → если снова failed → уведомление заказчику с кодом ошибки + сохранённый текст для ручной генерации → статус «video_failed_manual» в Sheets. Workflow продолжает работу. 12.56 250
— Субтитры: ASR через AssemblyAI (Вариант Б — рекомендуется) —
AssemblyAI API: конфиг ключа, загрузка аудио-файла на AssemblyAI (upload endpoint), запрос транскрипции с word-level timestamps 125 000 AssemblyAI: ~$0.0115/мин. При 30 видео по 1.5 мин = ~63 руб/мес. Дешевле любой альтернативы.
Получение результата транскрипции (polling или Webhook AssemblyAI), парсинг word-level timestamps в SRT-формат 125 000
Настройка стиля субтитров (шрифт, размер, позиция, цвет, фон) — согласовать с заказчиком до реализации 0.512 500
Наложение субтитров через FFmpeg subtitles filter 125 000
Вариант А (без ASR, только если заказчик письменно согласился): равномерное распределение слов по времени аудио, генерация SRT. Синхронизация ±3–5 сек. -5 ч-12 500 Экономия 12 500 руб. Но качество ниже. Требует письменного согласия заказчика.
— FFmpeg: финальный брендинг —
Заставка (5 сек): если предоставлен видео-файл → concat. Если только PNG логотип → FFmpeg loop 5 сек + fade in. 125 000 Уточнить у заказчика: видеофайл заставки или PNG логотип.
Нижняя плашка с контактами: overlay PNG плашки, позиция, прозрачность. PNG предоставляет заказчик. 11.53 750
Итоговый FFmpeg pipeline: заставка + основное видео (субтитры + плашка) за один проход. Preset для Telegram: H.264, AAC, ≤50 МБ, CRF компрессия при превышении размера. 1.537 500 Telegram лимит sendVideo: 50 МБ. Нужна авто-компрессия для длинных видео.
FFmpeg presets: набор готовых конфигов для разных длительностей (30 сек, 1 мин, 2 мин, 3 мин). Документирование параметров. 11.53 750 Новая позиция v4. Presets упрощают поддержку и дают предсказуемое качество.
— Telegram: публикация видео —
Определение типа публикации: длительность ≤60 сек И квадратное → sendVideoNote (кружок). Иначе → sendVideo. 0.512 500
FFmpeg crop до квадрата для кружка (HeyGen выдаёт 16:9 или 9:16): crop=min(w,h):min(w,h), масштаб 640x640. Тест что лицо аватара не обрезается. 125 000 Crop может обрезать лицо. Тестировать с реальным видео аватара заказчика.
Telegram нода sendVideo / sendVideoNote: загрузка файла, caption, обработка «file too large» 11.53 750
— Очередь задач для видео —
Lock-файл на VPS (/tmp/video.lock): создаётся до ElevenLabs, удаляется после публикации или при ошибке. Проверка перед стартом: если lock существует → откладывать задачу на 15 мин + уведомление в TG. 0.512 500 Не более 1 видео-процесса одновременно. VPS 4GB не выдержит FFmpeg+HeyGen download параллельно.
Опционально: Redis + BullMQ очередь (если нагрузка вырастет) +6 ч+15 000 Нужно если видео-публикации станут ежедневными. На старте lock-файл достаточен.
— Управление потоком Б —
Триггер по флагу в Sheets («сделать видео = TRUE»): Schedule + условие или Sheets Trigger нода 11.53 750
Обновление Sheets: статус «video_published», file_id TG, дата. Снятие флага «сделать видео». 0.512 500
Очистка VPS: удаление mp3, промежуточных mp4, SRT после публикации 0.512 500
Error handling потока Б: перехват каждого этапа (ElevenLabs / HeyGen / FFmpeg / TG), детальные алерты, статус + описание ошибки в Sheets. Workflow НЕ падает полностью при ошибке одного шага. 1.537 500
Code review / рефакторинг workflow Б: дублирование нод, таймауты, унификация с потоком А 125 000
— Тестирование и сдача —
Stage тестирование: 3 видео через тестовый аватар/голос (не тратить кредиты заказчика). Проверка всего pipeline. 237 500
Приёмочное тестирование: 5 видео разных длительностей (30 сек, 60 сек, 90 сек, 2 мин, 3 мин) с аватаром заказчика. Публикация в TG-канал. Проверка субтитров, плашки, заставки, кружка. 4615 000
Документация этапа 3: схема потока, FFmpeg команды с параметрами, процедура при сбое HeyGen, subтитры 22.56 250
Экспорт workflow JSON в GitHub 0.512 500
Тонкая настройка субтитров под конкретный голос/аватар заказчика: корректировка timing offset (голос ElevenLabs всегда немного опережает или отстаёт от видео HeyGen), подбор стиля отображения, тест на 5 реальных видео 137 500 Новая позиция v4.1. Субтитры, идеально работающие на тестовом аватаре, на реальном могут сдвигаться. Итерации неизбежны.
ИТОГО ЭТАП 3 (с ASR AssemblyAI) ~35~70175 000 включает тонкую настройку субтитров под аватар
Contingency 10% этапа 3 (нестабильность HeyGen, итерации FFmpeg под конкретный аватар, Telegram лимиты) 515 000 Выставляется по факту потраченного.
ИТОГО ЭТАП 3 с contingency ~35~75190 000

ОБЩИЙ БЛОК — Передача знаний и финальное E2E тестирование

Задача Опт Реал Сумма, руб Комментарий
Финальное E2E тестирование: 10 полных циклов (текст + картинка + все каналы + видео) без вмешательства исполнителя. Фиксация всех инцидентов. 4615 000 Проводится после стабильной работы всех этапов. Минимум 2 недели реальной работы.
Передача знаний: 2 онлайн-созвона с заказчиком (1 ч каждый): обзор системы, типичные сбои, как читать логи, как переавторизовать Claude Code 237 500
Loom-гайды (видео-записи экрана): переавторизация Claude Code, ручная публикация в Яндекс.Карты (фоллбек), чтение логов при сбое. По 5–10 мин каждый. 1.537 500 Новая позиция v4. Текстовых инструкций часто недостаточно.
Финальный README проекта: оглавление всей документации, схема архитектуры (ASCII или Mermaid), контакты и порядок эскалации при сбое 125 000
GitHub Actions: CI для проверки JSON-схемы workflow при push (валидность n8n JSON, наличие .env.example, отсутствие секретов) 125 000 Новая позиция v4. Защита от случайного коммита секретов.
ИТОГО ОБЩИЙ БЛОК ~10~1640 000 Новый блок v4.

ИТОГО ПО ПРОЕКТУ (v4.1, финальная)

Этап / блок Реал без contingency, ч Contingency (10%), ч Реал с contingency, ч Сумма с contingency, руб Срок
Этап 1 — Инфраструктура + Claude Code 40545110 0001.5–2 нед
Этап 2 — Поток А (текстовый, 4 канала) 9510105262 5003.5–4.5 нед
Этап 3 — Поток Б (AI-видео, ASR) 70575190 0002–2.5 нед
Общий блок — E2E тест + передача знаний + CI 151540 000распределено
ВСЕГО (полный проект, ASR, contingency) 22020240602 5008–10 недель
Этапы 1+2 без видео (MVP) с contingency 13515150372 5005–7 недель
Опция: Redis + BullMQ очередь +5+15 000+0.5 нед
Экономия: Вариант А субтитров (без ASR, письменное согласие) -5-12 500

Важно про contingency: это не «всегда выставляемая» сумма. Это потолок по непредвиденному. По каждому этапу contingency выставляется только в размере фактически потраченных сверх основной сметы часов. Если этап прошёл чисто — contingency = 0 руб.

Ежемесячные операционные расходы заказчика (после запуска)

Оплачивается заказчиком напрямую провайдерам. В стоимость работ не входит.

Сервис Тариф Стоимость Примечание
VPS Ubuntu (2–4 vCPU / 4–8 GB RAM) Timeweb / Selectel 700–2 500 руб/мес 4 vCPU рекомендуется если FFmpeg будет запускаться ежедневно
Claude Max подписка $200/мес ~18 500 руб/мес Уже есть. При слёте сессии — фоллбек на API (~300–800 руб/мес доп.)
Anthropic API (фоллбек) Pay-per-use, Sonnet ~$3/1M токенов 300–800 руб/мес Только при срабатывании фоллбека. В идеальном мире — 0.
Google Gemini Flash (тексты) Pay-per-use 200–600 руб/мес ~120 запросов/мес
Google Imagen 3 / фоллбек (Recraft/Fal.ai) ~$0.04/картинка ~110–500 руб/мес Зависит от выбранного сервиса
ElevenLabs Creator $22/мес ~2 000 руб/мес 100k симв. При ежедневных видео может потребоваться Professional $99
HeyGen Creator $29/мес (5 кред.) ~2 700–8 000 руб/мес 1 кредит ≈ 1 мин видео. При ежедневных видео нужен Business $89/мес. Уточнить частоту до старта.
AssemblyAI (субтитры) $0.0115/мин аудио ~100–500 руб/мес При 30 видео по 1.5 мин = ~63 руб. Фактически бесплатно.
UptimeRobot (мониторинг) Бесплатный тариф 0 руб/мес
Домен для n8n (если нет) Reg.ru ~80–150 руб/мес
ИТОГО операционных расходов ~24 000–34 000 руб/мес Из них Claude Max (~18 500) уже есть. Без него: ~5 500–15 500/мес

Ключевые соглашения (фиксировать письменно до старта каждого этапа)

Тема Что фиксировать Последствие если не зафиксировать
Claude Code авторизация Сессия будет слетать. При слёте — ручное переподключение по инструкции (10–15 мин). До слёта — фоллбек на API работает автоматически. Это ограничение платформы Anthropic, не баг системы. «Система сломана» = претензия к исполнителю после сдачи.
Субтитры (выбор варианта) До оплаты этапа 3: письменный выбор Вариант А (±5 сек, дешевле на 12 500 руб) или Вариант Б (ASR, точная синхронизация). Претензии по синхронизации при выборе А — не принимаются. «Субтитры не синхронны» = требование переделки после оплаты.
Яндекс.Бизнес API Если API не поддерживает публикацию — реализуется уведомление для ручной публикации. Не баг, ограничение Яндекса. «Автопубликация в Карты не работает» = претензия к исполнителю.
Imagen 3 geo-блок Если недоступен из РФ — согласованная альтернатива (Recraft/Fal.ai). Качество может отличаться. Заказчик не принимает альтернативу.
Аудит сайта До начала блока «сайт»: заказчик предоставляет SFTP доступ. Без аудита — работы не начинаются. Несовместимость структуры сайта выясняется в середине этапа 2.
HeyGen кредиты при тестировании Тестирование требует минимум 20 кредитов (5 видео + итерации). Расход при тестировании — за счёт заказчика. Исполнитель не может тестировать без кредитов.
Изменения API внешних сервисов Изменения API HeyGen, Anthropic, Яндекс и т.д. после сдачи = платные доработки по договору поддержки. Не входит в гарантийный период. «API Яндекса изменился, почините бесплатно».
Промпты — технический формат Исполнитель адаптирует промпты заказчика под API-формат (убрать вводные фразы, добавить технические ограничения). Смысл промптов — только заказчик. Система публикует посты с «Конечно! Вот ваш текст:» в начале.

Эволюция сметы по версиям

Версия Часы (реал) Сумма, руб Ключевые добавления
v1 75 ч187 500 Базовая оценка, оптимистичная
v2 161 ч405 000 Реальные часы: Claude Code авторизация, geo-блок, аудит сайта, ASR субтитры, error trigger
v3 192 ч482 500 Фоллбек Claude API, JSON-архитектура сайта, очередь, шлифовка промптов, частичный успех, мониторинг
v4 209 ч522 500 Python wrapper + circuit breaker, pre-gen HTML + sitemap, HeyGen Webhook, FFmpeg presets, rate limiting, code review, Loom-гайды, GitHub Actions CI, E2E тест
v4.1 (финальная, с contingency) 240 ч602 500 +SEO-тест индексации, +тонкая настройка субтитров, +резерв сайта 5 ч, +contingency 10% по каждому этапу

Пост-сопровождение

Услуга Стоимость Что включает / что НЕ включает
Гарантийный период Бесплатно, 30 дней Исправление багов в реализованной функциональности. НЕ включает: изменения API внешних сервисов, слёт Claude Code сессии (ограничение платформы), новый функционал.
Договор поддержки 15 000–25 000 руб/мес Мониторинг workflow, правки при изменениях API внешних сервисов, консультации до 6 ч/мес, помощь при переавторизации Claude Code, обновления n8n (major версии).

Смета v4.1 (финальная). Ставка: 2 500 руб/ч. 240 часов с contingency / 602 500 руб. за полный проект с ASR. MVP (этапы 1+2 без видео): ~372 500 руб / ~150 ч / 5–7 недель. Contingency по каждому этапу — потолок, выставляется только по факту. Резервные позиции (Imagen фоллбек, Redis, резерв сайта) — аналогично.