Сейчас весь сайт — это один большой файл на 7500 строк. Когда ты обновляешь страницу в браузере (нажимаешь F5 или Cmd+R), сайт всегда возвращает тебя на «Пайплайны → Обзоры ЖК», даже если ты был в «Обзорах локации». Здесь показано что у нас сейчас и как предлагаю разделить сайт на отдельные страницы — каждый раздел на своём адресе.
ai-video-production.ru/architecture — это страница «Архитектура». Сейчас у нас фактически одна большая страница, на которой переключаются вкладки внутри./youtube/reviews-zhk. Когда ты копируешь и отправляешь его — другой человек по этому адресу попадает в тот же раздел.location-research-faktura — это агент, который ищет исторические факты о районе. Каждый агент работает 1-5 минут.POST /api/jobs = «запусти мне новую задачу». Тебе как пользователю их видеть не надо — это для меня инструмент чтобы знать что куда подключать./var/tg-output/...) с готовыми файлами: сценарий, картинки, JSON с данными.Один файл frontend/index.html (7500+ строк) с боковым меню и платформенными табами. URL никогда не меняется — всё на /. При обновлении страницы открывается дефолтный таб (YouTube Shorts → Shorts).
/), поэтому браузер не знает на какой именно вкладке ты был. При обновлении он показывает дефолтную./, по нему Рома попадёт на главную, а не на твой обзор.Каждый раздел — отдельный HTML-файл, отдельный URL. Sidebar остаётся общий (shared component, копируется в каждый файл или генерируется на бэкенде). Refresh всегда возвращает на ту же страницу. Кнопки «назад/вперёд» в браузере работают. Можно открыть несколько разделов в разных вкладках.
?slug=fizik-vodaya чтобы открыть конкретный обзор.?slug=metro-rybackoe открывает конкретный обзор.?video_id=xxx открывает деталь конкретного видео.@nikita_krasnov_anbot): диалоги, квалификация, передача в amoCRM.Подтверждено решение: боковое меню + шапка — один файл-партиал. То есть лежит в одном месте, при загрузке любой страницы он туда «вставляется». Меняем меню один раз — обновляется везде. Никакого копи-паста.
| Что общее | Где лежит на сервере | Простое объяснение |
|---|---|---|
| Боковое меню + шапка | frontend/_partials/sidebar.html | Один файл, подгружается на каждую страницу. Меняешь иконку или пункт меню — обновляется везде. |
| Проверка авторизации | frontend/_partials/auth.js | На входе любой страницы проверяет: залогинен ли ты через Telegram. Если нет — кидает на /login. |
| Общие стили (цвета, шрифты) | frontend/_partials/base.css | Файл с цветами темы, размерами, отступами. Подключается тегом <link> в каждую страницу. |
| Просмотрщик файлов | frontend/modal-viewer.js | Уже существует. Это окошко, в котором ты сейчас открываешь сценарии, фактуру, цены — общее на весь сайт. |
Хорошая новость — почти ничего. Сервер уже умеет принимать запросы по конкретным адресам. Меняем только то, как сервер раздаёт страницы браузеру.
| Что | Сейчас | Будет |
|---|---|---|
| Раздача страниц (nginx) | любой адрес отдаёт index.html | каждый адрес → свой файл (/youtube/reviews-zhk → yt-reviews-zhk.html) |
| API сервера | работает | НЕ трогаем — все запросы агентам остаются те же |
| База задач (SQLite) | общая | НЕ трогаем |
| Восстановление прогресса после закрытия вкладки | сейчас прогресс хранится только в памяти браузера, при закрытии теряется | id задачи зашивается в адрес (?job=abc123). Открываешь вкладку — она сразу подцепляет твою задачу с сервера и продолжает показывать прогресс. |
/ (главную) на новый Дашборд с лидами и аналитикой. Старый index.html удаляется.Внутри одной страницы блоки остаются вместе. Например, страница «Обзоры локации» содержит все этапы (гео → фактура → метро → цены → инфраструктура → отзывы) и историю — это всё один процесс, не разбиваем. Просто живёт на своём URL.
Здесь для каждой страницы расписано что внутри неё происходит на сервере — какие агенты работают, куда сохраняется результат. Это нужно понимать общее устройство — если что-то ломается, понятнее где искать. Чисто для справки. По «Этап» — это шаги внутри одной страницы, не отдельные страницы.
Полный конвейер обзора жилого комплекса: от ресёрча до публикации на канал. Все 4 этапа живут на одной странице и идут друг за другом.
| Этап на странице | Что делает | Программа-исполнитель | Куда сохраняет |
|---|---|---|---|
| 1. Ресёрч ЖК | Собирает данные о ЖК из Trendagent и PNPRO: цены, планировки, инфраструктура, отделка, динамика цен, ипотека. | reviews/researcher | tg-output/reviews/research/ |
| 2. Сценарий обзора | Пишет сценарий на 10-12 минут по структуре «хук → цены → плюсы → минусы → район → застройщик → вывод → CTA». | reviews_scriptwriter.py | tg-output/reviews/scripts/ |
| 3. Постпродакшн | Берёт твоё записанное видео с Я.Диска, делает транскрипт через AssemblyAI, генерирует описание YouTube, тайм-коды, теги. | postprod.py | база данных postprod_artifacts |
| 4. Публикация | Загружает финальное видео на YouTube канал «Никита Краснов» (или новый), ставит обложку, описание, теги, расписание. | publish.py + YouTube API | YouTube |
Multi-agent ресёрч: запускается один раз, параллельно работают 6 программ. На страничке потом видны все собранные данные + кнопка перейти к написанию сценария.
| Этап / агент | Что делает | Куда сохраняет |
|---|---|---|
| Гео location-research-geo | Определяет границы локации на карте, координаты центра, радиус, к какому району относится. Делает картинку зоны. Если включён интерактивный режим — даёт тебе править зону вручную. | geo.json + zone.png |
| Фактура location-research-faktura | Собирает 3-5 исторических хайлайтов про район: этимология, личности, что было раньше. Скачивает архивные фото и старые карты. | faktura.json + _visuals/ |
| Метро location-research-metro | Профиль ближайшей станции метро: год открытия, глубина, пассажиропоток. Или 3 ближайшие, если своей станции нет. | metro.json |
| Цены location-research-prices | Собирает реальные объявления Avito в круге локации: студии / 1к / 2к / 3к — диапазон цен, медиана, цена за метр + 9 примеров с фото. | prices.json + 9 примеров |
| Инфраструктура infrastructure_search.py | Считает через Яндекс.Карты: сколько в зоне магазинов, аптек, школ, детсадов, поликлиник, парков, ресторанов, фитнес-клубов. | infrastructure.json |
| Отзывы и минусы reviews_search.py | Парсит отзывы жителей с irecommend, otzovik, городских форумов + Perplexity. Выделяет 8-12 минусов района с цитатами и ссылками. | reviews.json + reviews.md |
| Сценарист не подключён | Запланирован: возьмёт все собранные данные и напишет сценарий обзора локации. Сейчас сценарии пишутся отдельно. | — |
6 этапов: от поиска темы до публикации шортса 35-40 секунд.
| Этап | Что делает | Куда сохраняет |
|---|---|---|
| 1. Ресёрч тем shorts_research.py | Парсит конкурентов через yt-dlp + ищет темы по 7 ключевым словам недвижимости СПб. Даёт 10 «трендовых» тем + 10 «поисковых». | tg-output/shorts/research/ |
| 2. Сценарии shorts_scriptwriter.py | Пишет 20 сценариев Shorts (10+10) по структуре ВИСП (Внимание-Интерес-Смысл-Призыв) и Лестнице Ханта. | tg-output/shorts/scripts/ |
| 3. Монтаж shorts_editor.py | Раскладывает текст сценария на сегменты с тайм-кодами и подсказками к монтажу. | tg-output/shorts/edits/ |
| 4. B-roll (видеовставки) shorts_brolls.py | Подбирает стоковые видео для перебивок между лицом в кадре. | tg-output/shorts/brolls/ |
| 5. Постпродакшн shorts_postprod.py | Транскрипт записанного шортса + описание + теги. | база shorts_artifacts |
| 6. Публикация shorts_publish.py | Загружает Shorts на YouTube. | YouTube |
Отдельный формат шортсов на основе судебных дел в недвижимости.
| Этап | Что делает | Куда сохраняет |
|---|---|---|
| 1. Ресёрч дел legal_research.py | Подбирает свежие судебные кейсы в недвижимости (за неделю/месяц) с конкретикой и ссылками на решения. | tg-output/legal/research/ |
| 2. Сценарии legal_scriptwriter.py | Превращает кейсы в сценарии Shorts — по 1 кейсу или batch'ом. | tg-output/legal/scripts/ |
Генерация PDF-каруселей с подборками квартир под ипотеку 12%.
| Этап | Что делает | Куда сохраняет |
|---|---|---|
| Карусель про 1 ЖК carousels/ipoteka/carousel_agent.py | Берёт 4-6 лучших квартир из конкретного ЖК с ежемесячными платежами под 12%, делает красивый PDF на 10 слайдов. | tg-output/carousels/<id>/result.pdf |
| Подборка ЖК carousel_agent.py (другой режим) | Подборка из нескольких ЖК — например, «5 лучших ЖК в Приморском районе до 15 млн». | tg-output/carousels/<id>/ |
| Публикация в VK | После одобрения — постит PDF в группу VK с подписью. | VK |
Это не страницы, а маленькие программы-помощники в твоём браузере. Они нужны потому что некоторые сайты (Avito, Perplexity, PNPRO) блокируют запросы с серверов — а с твоего домашнего IP через браузер пускают. Расширения играют роль «прокси»: сервер просит — расширение делает запрос — отдаёт ответ обратно.
| Расширение | Что обслуживает |
|---|---|
| Browser relay (Avito + Я.Карты) | Цены квартир в обзорах локации (Avito) · поиск через Яндекс.Карты для блока инфраструктуры |
| Perplexity relay | Отзывы жителей из Perplexity — для блока «минусы» в обзорах локации |
| PNPRO relay | Каталог ЖК Setl Group (бионика, чистое небо, нева хаус и т.п.) — для обзоров ЖК которых нет в Trendagent |