{"id":50120038,"url":"https://github.com/algorithm-ssau/2026-6302-2-ai-video-agent","last_synced_at":"2026-05-23T18:05:27.659Z","repository":{"id":342251699,"uuid":"1167496580","full_name":"algorithm-ssau/2026-6302-2-ai-video-agent","owner":"algorithm-ssau","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-07T11:07:18.000Z","size":17050,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-07T11:28:52.850Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/algorithm-ssau.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-26T11:03:29.000Z","updated_at":"2026-05-07T09:18:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/algorithm-ssau/2026-6302-2-ai-video-agent","commit_stats":null,"previous_names":["algorithm-ssau/2026-6302-2-ai-video-agent"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/algorithm-ssau/2026-6302-2-ai-video-agent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algorithm-ssau%2F2026-6302-2-ai-video-agent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algorithm-ssau%2F2026-6302-2-ai-video-agent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algorithm-ssau%2F2026-6302-2-ai-video-agent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algorithm-ssau%2F2026-6302-2-ai-video-agent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/algorithm-ssau","download_url":"https://codeload.github.com/algorithm-ssau/2026-6302-2-ai-video-agent/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algorithm-ssau%2F2026-6302-2-ai-video-agent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33406505,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-23T18:04:54.942Z","updated_at":"2026-05-23T18:05:27.625Z","avatar_url":"https://github.com/algorithm-ssau.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 2026-6302-2-ai-video-agent\nAI-агент для генерации коротких видео и публикации в VK сообщества (VK Video/VK Clips)\n\n## Что делает продукт\n- Создает видео по сценариям: текст, озвучка, изображения, субтитры, рендер.\n- Хранит результаты в Supabase и показывает статус генерации.\n- Публикует в VK сообщества вручную или по расписанию.\n- Поддерживает несколько VK сообществ на одного пользователя.\n\n## Скриншоты\n\n![Dashboard](public/screenshots/dashboard.png)\n_Скриншот 1 — Dashboard: статусы генерации, список серий и быстрые действия._\n\n![Create](public/screenshots/create.png)\n_Скриншот 2 — Create: настройка серии, сценария, расписания и параметров генерации._\n\n![Settings](public/screenshots/settings.png)\n_Скриншот 3 — Settings: подключение VK сообществ и управление токенами._\n\n![Videos](public/screenshots/video.jpg)\n_Скриншот 4 — Videos: библиотека рендеров, предпросмотр и ручная публикация._\n\n\n\n## Как это работает (коротко)\n1. Пользователь настраивает серию и сохраняет.\n2. Запускается пайплайн генерации (Inngest): сценарий → озвучка → субтитры → изображения → рендер MP4.\n3. Результат сохраняется в Supabase (`videos`, `video_agent_series`).\n4. Публикация:\n   - вручную кнопкой `Опубликовать` в `Dashboard -\u003e Videos`,\n   - или автоматически по `publish_time` (cron Inngest).\n\n## Архитектура\n```mermaid\nflowchart LR\n  UI[Next.js UI] --\u003e API[Next.js API Routes]\n  API --\u003e SB[(Supabase DB/Storage)]\n  API --\u003e INN[Inngest Functions]\n  INN --\u003e AI[LLM/TTS/ASR/Image]\n  INN --\u003e REM[Remotion Render]\n  INN --\u003e VK[VK API]\n```\n\n**Ключевые компоненты**\n- Frontend: Next.js (App Router) + React + TypeScript.\n- Backend: API Routes + Inngest фоновые задачи.\n- Хранилище: Supabase (БД + Storage).\n- Рендер: Remotion (MP4).\n- Интеграция VK: `video.save` → upload → `wall.post`.\n\n## Стек\n- Next.js (App Router), React, TypeScript\n- Supabase (DB + Storage)\n- Inngest (фоновые пайплайны и cron)\n- Remotion (рендер MP4)\n- Clerk (auth)\n- VK API\n\n## Структура проекта (ключевые файлы)\n- `app/api/videos/[id]/publish/route.ts` — ручная публикация в VK сообщества.\n- `lib/inngest.ts` — генерация видео + автопубликация по расписанию.\n- `lib/social/vk.ts` — VK API интеграция: `video.save`, upload, `wall.post`.\n- `app/dashboard/settings/page.tsx` — управление VK сообществами и токенами.\n- `app/dashboard/videos/videos-client.tsx` — UI для ручной публикации.\n- `app/api/social/connections/*` — CRUD настроек VK сообществ.\n- `supabase/migrations/*` — схемы БД и миграции.\n\n## Быстрый старт\n### Вариант 1: Docker Compose (рекомендуется)\n1. Скопируйте переменные окружения:\n```bash\ncp .env.example .env.local\n```\n2. Заполните `.env.local` (Clerk, Supabase, VK, AI ключи).\n3. Поднимите стек:\n```bash\ndocker compose up --build\n```\n4. Откройте:\n- App: `http://localhost:3000`\n- Inngest UI: `http://localhost:8288`\n\nЕсли есть `ECONNREFUSED`/`Failed to register` для Inngest:\n- проверьте, что сервис `inngest` запущен;\n- перезапустите `docker compose down` и затем `docker compose up --build`;\n- убедитесь, что заданы `INNGEST_DEV` и `INNGEST_BASE_URL=http://inngest:8288`.\n\n### Вариант 2: Локально без Docker\n```bash\nnpm install\nnpm run dev\nnpx inngest-cli@latest dev\n```\n\n## Настройка публикации в VK сообщества\nВ `Settings` добавьте сообщество через `Add community` и заполните:\n- `Community ID` — ID сообщества (число, без `club`/`public`).\n- `Community name` — опционально.\n- `Community token (for wall access)` — токен сообщества.\n- `User access token (required for video upload)` — пользовательский токен администратора сообщества.\n\n**Почему нужны два токена:**\n- `User access token` используется для `video.save` и загрузки видео.\n- `Community token` используется для публикации поста от имени сообщества (`wall.post`, `from_group=1`).\n\n## Публикация по расписанию\n1. У серии должен быть установлен `publish_time`.\n2. Видео должно иметь статус `rendered` и `video_url`.\n3. Cron Inngest проверяет серии и публикует в VK, затем выставляет `published_at`.\n\n## Участники и вклад\nВклад распределен примерно равномерно, при этом чуть больший вклад:\n- **Роман Хафизов** — основная логика пайплайнов генерации, интеграция VK, суппорт прод-потока.\n- **Илья Халитов** — архитектура, интеграции и UI, оркестрация процессов.\n- **Рафаэль Бурганов** — фронтенд и UX, экран настроек и управление сообществами.\n- **Станислав Мрясов** — инфраструктура, миграции, тестирование и стабилизация.\n- **Кирилл Кудряшов** — UI, сборка и качество пользовательского потока.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falgorithm-ssau%2F2026-6302-2-ai-video-agent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falgorithm-ssau%2F2026-6302-2-ai-video-agent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falgorithm-ssau%2F2026-6302-2-ai-video-agent/lists"}