Заказчик: ООО «Смарт Сити» | Версия: 4.1 (финальная с contingency-буфером и уточнёнными часами)
Смета v4.1. Включает всё из v4 плюс: увеличенный резерв по сайту (+2 ч), SEO-проверка индексации (+2 ч),
тонкая настройка субтитров под аватар (+3 ч), contingency-буфер 10% на каждый этап.
Часы «реал» — потолок. Резервные позиции выставляются только если фактически потребовались.
Contingency — явная защита от непредвиденного: если не потрачен, не выставляется.
| Задача |
Опт |
Реал |
Сумма, руб |
Комментарий / риск |
| — Базовая настройка VPS — |
| VPS Ubuntu 22.04: выбор провайдера, первичный конфиг (hostname, timezone, locale, apt upgrade) |
0.5 | 1 | 2 500 | |
| Безопасность: непривилегированный пользователь, SSH только по ключу, отключение root-логина и password auth |
0.5 | 1 | 2 500 | |
| Firewall + fail2ban: ufw (22, 80, 443), fail2ban для SSH, тест блокировки |
0.5 | 1 | 2 500 | |
| Docker + Docker Compose: установка, daemon (log rotation, restart policy), автостарт |
0.5 | 1 | 2 500 | |
| Caddy reverse proxy: Caddyfile для n8n, автоматический TLS Let's Encrypt, тест HTTPS |
1 | 1.5 | 3 750 |
Если домен не настроен — +0.5 ч на DNS propagation. |
| n8n в Docker Compose: volume, .env, basic auth, тест запуска и доступа по домену |
1 | 2 | 5 000 |
Частый источник проблем: конфликты портов, права на volume. |
| Бэкап volume n8n: cron-скрипт (ежедневно), архив → rclone/S3/Яндекс.Диск. Тест восстановления. |
1.5 | 2.5 | 6 250 |
Тест восстановления обязателен — без него бэкап не считается работающим. |
| Структура папок: /prompts/, /scripts/, /logs/, /tmp/, /env/. .env.example в репо. |
0.5 | 0.5 | 1 250 | |
| GitHub приватный репозиторий: первичный push (docker-compose, конфиги, .gitignore с .env) |
0.5 | 0.5 | 1 250 | |
| Watchtower: автообновление Docker-образов n8n (minor/patch версии), уведомление в TG при обновлении |
0.5 | 1 | 2 500 |
Major-версии n8n — только ручное обновление после проверки changelog. |
| — Claude Code на VPS: авторизация и стабильность (ГЛАВНЫЙ РИСК) — |
| Исследование способов авторизации Claude Code CLI под Max-подпиской на headless сервере (xvfb+chromium, token extraction, VNC) |
2 | 6 | 15 000 |
OAuth сессия слетает каждые 24–48 ч. Нужно выбрать наименее хрупкий способ. Исследование входит в смету. |
| Реализация выбранного способа авторизации (VNC+noVNC или token-экстракция) |
2 | 4 | 10 000 | |
| Python CLI-wrapper для Claude Code: retry (3 попытки), exponential backoff, circuit breaker (если 3 фейла подряд → переключение на API фоллбек), логирование каждого вызова |
2 | 4 | 10 000 |
Wrapper — это ~100 строк Python. Но отладка circuit breaker-логики занимает время. |
| Скрипт мониторинга сессии: cron каждые 30 мин проверяет claude --version, при ошибке → алерт в TG с кнопкой «Переавторизовать» + пошаговая инструкция |
1 | 2 | 5 000 | |
| Тест стабильности Claude Code: 48 часов непрерывной работы без вмешательства, проверка что сессия не слетела |
— | 2 | 5 000 |
Чистое время ожидания + мониторинг. Без этого теста этап нельзя сдать. |
| Документация переавторизации: пошаговая инструкция для заказчика (текст + скриншоты). Заказчик должен уметь восстановить сессию самостоятельно. |
1 | 2 | 5 000 | |
| — Claude API фоллбек — |
| Anthropic API ключ (Console): конфиг в .env, тест HTTP Request к /v1/messages через n8n |
0.5 | 1 | 2 500 | |
| Логика автопереключения в n8n: Claude Code ошибка авторизации → автоматически тот же запрос через Anthropic API → уведомление заказчику «работаем на API фоллбеке» |
1.5 | 3 | 7 500 |
Система продолжает публиковать даже при слёте сессии. Без этого — каждый слёт = пропущенная публикация. |
| — Мониторинг и логирование — |
| Структурированное логирование: все вызовы внешних API (Claude, Gemini, Imagen, TG) пишутся в /logs/YYYY-MM-DD.log в JSON-формате (timestamp, сервис, статус, latency, ошибка) |
1 | 2 | 5 000 |
Без структурированных логов диагностика через месяц после сдачи невозможна. |
| Ежедневный health-check: cron в 8:50 MSK проверяет (Claude Code сессия, n8n ping, VPS диск >80%, последняя успешная публикация <25 ч назад) → TG-сообщение «OK» или «⚠ ВНИМАНИЕ: [что не так]» |
1.5 | 2.5 | 6 250 | |
| UptimeRobot / Healthchecks.io: внешний мониторинг n8n endpoint, алерт если недоступен >5 мин |
0.5 | 1 | 2 500 |
Бесплатный тариф UptimeRobot достаточен. |
| — Security audit — |
| Сканирование репозитория на секреты (git-secrets / truffleHog), проверка .gitignore, проверка что .env не попал в историю коммитов |
0.5 | 1 | 2 500 | |
| Проверка прав файлов на VPS: /env/ (chmod 600), ключи SSH, docker socket |
0.5 | 0.5 | 1 250 | |
| — Финализация этапа 1 — |
| Тест сдачи: claude -p «тест» через n8n SSH нода → ответ получен. Скриншот заказчику. |
0.5 | 1 | 2 500 | |
| Документация этапа 1 (Markdown): развернуть с нуля, восстановить из бэкапа, переавторизовать Claude, типичные ошибки |
2 | 3 | 7 500 | |
| Stage-окружение: отдельный Google Sheet «test» и тестовый TG-канал для прогона без публикации в прод |
1 | 1.5 | 3 750 |
Используется во всех этапах для тестирования перед выводом в прод. |
| ИТОГО ЭТАП 1 |
~25 | ~40 | 100 000 |
+7 500 vs v3 за: Python wrapper, мониторинг, security audit, stage-окружение, watchtower |
| Contingency 10% этапа 1 (непредвиденное: Claude Code хуже ожидаемого, нестандартный VPS-провайдер, итерации авторизации) |
— | 5 | 10 000 |
Выставляется по факту потраченного. Если этап прошёл чисто — не включается в счёт. |
| ИТОГО ЭТАП 1 с contingency |
~25 | ~45 | 110 000 |
|
| Задача |
Опт |
Реал |
Сумма, руб |
Комментарий / риск |
| — Google Sheets: база контента — |
| Структура таблицы: все колонки (id, тема, статус, lock, дата_план, дата_факт, текст_тг/дзен/карты/сайт, url_картинки, url_тг/дзен/карты/сайт, флаг_видео, статус_видео, ошибка, лог) |
1 | 1.5 | 3 750 | |
| Сервисный аккаунт Google: Cloud Console, JSON-ключ в .env, Google Sheets credential в n8n |
1 | 1.5 | 3 750 | |
| Нода чтения строки «pending» + запись lock-статуса (защита от двойного запуска) |
1 | 2 | 5 000 |
Без lock: при retry workflow публикует дубль. |
| — Генерация текстов: Claude Code / API фоллбек — |
| Schedule Trigger 09:00 MSK (UTC+3). Тест на переход летнего/зимнего времени. |
0.5 | 1 | 2 500 |
n8n работает в UTC — ошибка с timezone = публикация в 6:00 или 12:00. |
| SSH Execute Command → Python wrapper → claude. Захват stdout, обработка stderr, парсинг ответа, таймаут 120 сек, retry 3 раза с backoff. |
2 | 4 | 10 000 | |
| Автопереключение на Anthropic API при ошибке Claude Code (circuit breaker из wrapper). Идентичный промпт, идентичный парсинг ответа. |
1 | 2 | 5 000 | |
| Rate limiting для всех внешних API в workflow: задержки между запросами, обработка HTTP 429, exponential backoff |
1 | 2 | 5 000 |
Gemini Flash, Imagen, ElevenLabs, HeyGen — у каждого свои лимиты. |
| — Техническая шлифовка промптов — |
| Получение промптов от заказчика, прогон через API в тестовом режиме, выявление мусора (вводные фразы, markdown, JSON-несовместимые символы) |
2 | 4 | 10 000 |
Промпт из чата ≠ промпт для API. Обязательный шаг. |
| Python-валидатор выхода: проверка длины (мин/макс символов для каждой площадки), отсутствия вводных фраз AI, корректности markdown для TG. Повторный запрос если валидация не прошла. |
1.5 | 3 | 7 500 |
Без валидатора: иногда Gemini выдаёт «Вот ваш текст: ...» или обрезает на полуслове. |
| — Генерация адаптаций: Gemini Flash — |
| Google AI Studio API ключ, тест endpoint, конфиг в n8n |
0.5 | 1 | 2 500 | |
| Промпт-шаблоны для трёх адаптаций (Дзен / Карты / Сайт): параметризованные, хранение в /prompts/ на VPS |
1 | 2 | 5 000 | |
| Нода лонгрида Дзен (2500–4000 знаков): запрос, валидация длины, retry если короче |
1 | 2 | 5 000 | |
| Нода описания Яндекс.Карт (до 500 знаков): генерация, обрезка при превышении |
0.5 | 1 | 2 500 | |
| Нода SEO-текста для сайта: H2/H3, мета-описание (до 160 символов), title тега, slug (транслитерация темы) |
1 | 2 | 5 000 | |
| — Картинки: Imagen 3 + фоллбек — |
| Проверка доступности Imagen 3 через Google AI Studio API с IP VPS (geo-блок вероятен) |
0.5 | 2 | 5 000 |
Проверить до начала разработки этого блока. Российские IP часто блокируются. |
| Если Imagen 3 недоступен: тест и интеграция Recraft v3 API или Fal.ai FLUX. Сравнение качества, выбор, конфиг в n8n. |
— | 4 | 10 000 |
Резерв. Не тратится если Imagen работает. |
| Нода генерации картинки 16:9: промпт из темы, запрос, base64/URL, сохранение на VPS, проверка размера файла |
1.5 | 2.5 | 6 250 | |
| — Публикация: Telegram — |
| Telegram Bot: BotFather, добавление в канал как admin, chat_id, тест sendMessage |
0.5 | 0.5 | 1 250 | |
| Нода sendPhoto + caption. Логика: если len > 1024 → sendPhoto без подписи + sendMessage. Экранирование Markdown v2. |
1 | 2 | 5 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. |
2 | 4 | 10 000 |
Дзен не подхватит фид с невалидным XML или неправильным pubDate. |
| Подключение RSS в Дзен-канале, ожидание первого автозабора, проверка отображения |
1 | 2 | 5 000 |
Фид принимается только с подтверждённого домена. Если n8n на отдельном домене — нужен CNAME или проксирование. |
| — Публикация: Яндекс.Бизнес / Карты — |
| Исследование API Яндекс.Бизнес для публикации постов в карточку: проверка актуальной документации, тест OAuth, тест POST поста |
1 | 3 | 7 500 |
API для постов в карточку ограничен или недоступен публично. Высокая вероятность фоллбека. |
| Если API доступен: OAuth-регистрация, нода HTTP Request, обработка лимитов (1–2 поста/нед) |
1.5 | 3 | 7 500 | |
| Фоллбек (обязательно в любом случае): TG-уведомление заказчику с готовым текстом + картинкой + кнопкой подтверждения ручной публикации. Фиксация в Sheets. |
1 | 2 | 5 000 | |
| — Публикация: Сайт (JSON + pre-generated HTML для SEO) — |
| Аудит сайта: структура HTML, тип хостинга, права SFTP, наличие шаблона страницы. Обязателен ДО начала разработки этого блока. |
1 | 2 | 5 000 |
Без аудита нельзя спроектировать решение. |
| posts.json: Python-скрипт обновления (append нового поста: slug, title, date, description, content_html, og_image). Единственный изменяемый файл сайта. |
1 | 2 | 5 000 | |
| Pre-generated article HTML: Python/Jinja2 создаёт article-slug.html со статическим <head> (title, meta description, og:title, og:image, canonical URL) + content. Деплоится рядом с posts.json. |
2 | 4 | 10 000 |
Решает SEO-проблему клиентского рендера. Яндекс видит полноценную HTML-страницу без JS. |
| sitemap.xml: автогенерация/обновление при каждой новой публикации (добавление <url> новой статьи) |
0.5 | 1 | 2 500 |
Нужен для корректной индексации в Яндексе. |
| JS-блок для страницы блога: fetch(posts.json) → рендер списка статей с датой, заголовком, описанием. Один раз правится вёрстка сайта. |
1.5 | 2.5 | 6 250 |
JS нужен только для списка статей. Каждая статья — статичный HTML. |
| SFTP деплой: загрузка posts.json + новый article-slug.html + sitemap.xml. retry при ошибке соединения. Тест прав доступа. |
1.5 | 3 | 7 500 | |
| Резерв: нестандартная структура сайта, конфликты путей, ограничения хостинга |
— | 3 | 7 500 |
Выставляется только если фактически потребовалось. |
| — Финализация потока А — |
| Логика частичного успеха: сбой одного канала НЕ останавливает workflow. Публикует в остальные каналы, фиксирует какой канал упал, уведомляет заказчика с деталями. |
2 | 4 | 10 000 |
Без этого: сбой Яндекс.Карт = пост не вышел нигде. |
| Обновление Sheets: статус «published», дата, URL всех каналов, тексты в колонках. Снятие lock. |
1 | 1.5 | 3 750 | |
| Уведомление заказчику в TG: резюме (что вышло, ссылки, превью картинки, что не вышло и почему) |
0.5 | 1 | 2 500 | |
| Error Trigger нода: перехват всех ошибок, определение шага сбоя, уведомление в TG с указанием шага и ошибки, статус «error» в Sheets |
1.5 | 3 | 7 500 | |
| Очистка временных файлов (картинки, тексты) после публикации |
0.5 | 0.5 | 1 250 | |
| Code review / рефакторинг workflow: проверка нод на дублирование, унификация error handling, проверка всех таймаутов |
1 | 2 | 5 000 |
Новая позиция v4. Без рефакторинга workflow накапливает технический долг. |
| Тестирование в stage: 5 прогонов в тестовом Sheets + тестовом TG-канале. Фикс багов. |
2 | 4 | 10 000 | |
| Приёмочное тестирование в проде: 7 успешных публикаций подряд во все каналы. Тест частичного сбоя (отключить один канал намеренно). |
3 | 5 | 12 500 | |
| Документация этапа 2: схема потока, все ноды, переменные, типичные ошибки и решения |
2 | 3 | 7 500 | |
| Тестирование SEO: проверка индексации новых страниц Яндекс.Вебмастер (добавление sitemap, тест fetch-as-bot), проверка OpenGraph в TG и VK превью, structured data если требуется |
1 | 2 | 5 000 |
Новая позиция v4.1. Без этой проверки pre-gen HTML может не индексироваться из-за ошибок meta или canonical. |
| Экспорт workflow JSON в GitHub |
0.5 | 0.5 | 1 250 | |
| ИТОГО ЭТАП 2 |
~45 | ~95 | 237 500 |
+резерв сайта до 5 ч, SEO-тест +2 ч |
| Contingency 10% этапа 2 (нестандартная структура сайта, итерации промптов с заказчиком, Яндекс.Бизнес API-сюрпризы) |
— | 10 | 25 000 |
Выставляется по факту потраченного. |
| ИТОГО ЭТАП 2 с contingency |
~45 | ~105 | 262 500 |
|
⚠ Рекомендуется оформить отдельным договором. Запускать только после стабильной работы этапов 1+2 не менее 2 недель.
| Задача |
Опт |
Реал |
Сумма, руб |
Комментарий / риск |
| — ElevenLabs: генерация аудио — |
| Подключение ElevenLabs API, тест /v1/text-to-speech/{voice_id}, конфиг в .env |
0.5 | 1 | 2 500 | |
| Нода HTTP Request: текст + voice_id, получение mp3, сохранение на VPS |
1 | 1.5 | 3 750 | |
| Обработка лимита символов: разбивка на чанки при превышении лимита тарифа, конкатенация аудио-файлов через FFmpeg |
1 | 2 | 5 000 | |
| ffprobe: получение длительности аудио (нужна для субтитров и определения типа публикации в TG) |
0.5 | 1 | 2 500 | |
| Rate limiting + backoff для ElevenLabs API |
0.5 | 1 | 2 500 | |
| — HeyGen: генерация видео (ЗОНА РИСКА: асинхронность и нестабильность) — |
| Изучение актуальной версии HeyGen API (v1 vs v2, changelog). Тест /v2/video/generate с test_mode=true (без расхода кредитов). |
0.5 | 2 | 5 000 |
HeyGen меняет API без предупреждения. Не полагаться на примеры из интернета старше 3 месяцев. |
| Нода POST /video/generate: avatar_id, voice_id / audio_asset_id, test_mode, обработка response с video_id |
1 | 2 | 5 000 | |
| Webhook от HeyGen (предпочтительно): регистрация callback URL в HeyGen, n8n Webhook нода принимает событие video.completed / video.failed. Устраняет необходимость поллинга. |
1.5 | 3 | 7 500 |
Webhook надёжнее поллинга. Но требует публичного HTTPS endpoint для n8n — уже есть через Caddy. |
| Поллинг как фоллбек (если Webhook недоступен на тарифе): цикл Wait 30 сек → GET статус, максимум 30 итераций (15 мин таймаут) |
1.5 | 3 | 7 500 |
Реализовать оба варианта, переключение через переменную в .env. |
| Скачивание MP4: wget по URL из ответа, проверка размера файла (не 0 байт), валидация через ffprobe (длительность > 0, кодек H264) |
0.5 | 1.5 | 3 750 | |
| Обработка ошибок HeyGen: failed → 1 автоматический повтор через 5 мин → если снова failed → уведомление заказчику с кодом ошибки + сохранённый текст для ручной генерации → статус «video_failed_manual» в Sheets. Workflow продолжает работу. |
1 | 2.5 | 6 250 | |
| — Субтитры: ASR через AssemblyAI (Вариант Б — рекомендуется) — |
| AssemblyAI API: конфиг ключа, загрузка аудио-файла на AssemblyAI (upload endpoint), запрос транскрипции с word-level timestamps |
1 | 2 | 5 000 |
AssemblyAI: ~$0.0115/мин. При 30 видео по 1.5 мин = ~63 руб/мес. Дешевле любой альтернативы. |
| Получение результата транскрипции (polling или Webhook AssemblyAI), парсинг word-level timestamps в SRT-формат |
1 | 2 | 5 000 | |
| Настройка стиля субтитров (шрифт, размер, позиция, цвет, фон) — согласовать с заказчиком до реализации |
0.5 | 1 | 2 500 | |
| Наложение субтитров через FFmpeg subtitles filter |
1 | 2 | 5 000 | |
| Вариант А (без ASR, только если заказчик письменно согласился): равномерное распределение слов по времени аудио, генерация SRT. Синхронизация ±3–5 сек. |
-5 ч | -12 500 |
Экономия 12 500 руб. Но качество ниже. Требует письменного согласия заказчика. |
| — FFmpeg: финальный брендинг — |
| Заставка (5 сек): если предоставлен видео-файл → concat. Если только PNG логотип → FFmpeg loop 5 сек + fade in. |
1 | 2 | 5 000 |
Уточнить у заказчика: видеофайл заставки или PNG логотип. |
| Нижняя плашка с контактами: overlay PNG плашки, позиция, прозрачность. PNG предоставляет заказчик. |
1 | 1.5 | 3 750 | |
| Итоговый FFmpeg pipeline: заставка + основное видео (субтитры + плашка) за один проход. Preset для Telegram: H.264, AAC, ≤50 МБ, CRF компрессия при превышении размера. |
1.5 | 3 | 7 500 |
Telegram лимит sendVideo: 50 МБ. Нужна авто-компрессия для длинных видео. |
| FFmpeg presets: набор готовых конфигов для разных длительностей (30 сек, 1 мин, 2 мин, 3 мин). Документирование параметров. |
1 | 1.5 | 3 750 |
Новая позиция v4. Presets упрощают поддержку и дают предсказуемое качество. |
| — Telegram: публикация видео — |
| Определение типа публикации: длительность ≤60 сек И квадратное → sendVideoNote (кружок). Иначе → sendVideo. |
0.5 | 1 | 2 500 | |
| FFmpeg crop до квадрата для кружка (HeyGen выдаёт 16:9 или 9:16): crop=min(w,h):min(w,h), масштаб 640x640. Тест что лицо аватара не обрезается. |
1 | 2 | 5 000 |
Crop может обрезать лицо. Тестировать с реальным видео аватара заказчика. |
| Telegram нода sendVideo / sendVideoNote: загрузка файла, caption, обработка «file too large» |
1 | 1.5 | 3 750 | |
| — Очередь задач для видео — |
| Lock-файл на VPS (/tmp/video.lock): создаётся до ElevenLabs, удаляется после публикации или при ошибке. Проверка перед стартом: если lock существует → откладывать задачу на 15 мин + уведомление в TG. |
0.5 | 1 | 2 500 |
Не более 1 видео-процесса одновременно. VPS 4GB не выдержит FFmpeg+HeyGen download параллельно. |
| Опционально: Redis + BullMQ очередь (если нагрузка вырастет) |
+6 ч | +15 000 |
Нужно если видео-публикации станут ежедневными. На старте lock-файл достаточен. |
| — Управление потоком Б — |
| Триггер по флагу в Sheets («сделать видео = TRUE»): Schedule + условие или Sheets Trigger нода |
1 | 1.5 | 3 750 | |
| Обновление Sheets: статус «video_published», file_id TG, дата. Снятие флага «сделать видео». |
0.5 | 1 | 2 500 | |
| Очистка VPS: удаление mp3, промежуточных mp4, SRT после публикации |
0.5 | 1 | 2 500 | |
| Error handling потока Б: перехват каждого этапа (ElevenLabs / HeyGen / FFmpeg / TG), детальные алерты, статус + описание ошибки в Sheets. Workflow НЕ падает полностью при ошибке одного шага. |
1.5 | 3 | 7 500 | |
| Code review / рефакторинг workflow Б: дублирование нод, таймауты, унификация с потоком А |
1 | 2 | 5 000 | |
| — Тестирование и сдача — |
| Stage тестирование: 3 видео через тестовый аватар/голос (не тратить кредиты заказчика). Проверка всего pipeline. |
2 | 3 | 7 500 | |
| Приёмочное тестирование: 5 видео разных длительностей (30 сек, 60 сек, 90 сек, 2 мин, 3 мин) с аватаром заказчика. Публикация в TG-канал. Проверка субтитров, плашки, заставки, кружка. |
4 | 6 | 15 000 | |
| Документация этапа 3: схема потока, FFmpeg команды с параметрами, процедура при сбое HeyGen, subтитры |
2 | 2.5 | 6 250 | |
| Экспорт workflow JSON в GitHub |
0.5 | 1 | 2 500 | |
| Тонкая настройка субтитров под конкретный голос/аватар заказчика: корректировка timing offset (голос ElevenLabs всегда немного опережает или отстаёт от видео HeyGen), подбор стиля отображения, тест на 5 реальных видео |
1 | 3 | 7 500 |
Новая позиция v4.1. Субтитры, идеально работающие на тестовом аватаре, на реальном могут сдвигаться. Итерации неизбежны. |
| ИТОГО ЭТАП 3 (с ASR AssemblyAI) |
~35 | ~70 | 175 000 |
включает тонкую настройку субтитров под аватар |
| Contingency 10% этапа 3 (нестабильность HeyGen, итерации FFmpeg под конкретный аватар, Telegram лимиты) |
— | 5 | 15 000 |
Выставляется по факту потраченного. |
| ИТОГО ЭТАП 3 с contingency |
~35 | ~75 | 190 000 |
|
Оплачивается заказчиком напрямую провайдерам. В стоимость работ не входит.
| Тема |
Что фиксировать |
Последствие если не зафиксировать |
| 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-формат (убрать вводные фразы, добавить технические ограничения). Смысл промптов — только заказчик. |
Система публикует посты с «Конечно! Вот ваш текст:» в начале. |
Смета v4.1 (финальная). Ставка: 2 500 руб/ч. 240 часов с contingency / 602 500 руб. за полный проект с ASR.
MVP (этапы 1+2 без видео): ~372 500 руб / ~150 ч / 5–7 недель.
Contingency по каждому этапу — потолок, выставляется только по факту. Резервные позиции (Imagen фоллбек, Redis, резерв сайта) — аналогично.