Проект: FList — клубная фильмотека с ИИ  Публичный пост
8 ноября 2026  65
FList - клубная фильмотека с ИИ
https://t.me/FilmListApp

Расскажите о себе и сути проекта?

Наверняка как и многие я по вечерам, а иногда и утром, днем листаю рилсы в инсте, может кто-то youtube-shorts, да, это деградирующий контент, но мне интересно там смотреть кратенькие продающие пересказы разных фильмов и сериалов и раньше я обычно делал скриншот и благополучно забывал про фильм, иногда скидывал скриншот в телегу, чтобы не забыть, что посмотреть в следующий раз.
Так не могло продолжаться долго, надо было эти названия как-то как минимум собирать, потом отмечать что просмотрено, что нет.

Ссылка на бота: https://t.me/FilmListApp
Ссылка на сайт: https://flist.top/

Как появилась идея? Что вдохновило?

Примерно в середине сентября я решил, что надо набросать простенький "скриптик", который будет закрывать мою задачу. Для этого я взял бесплатный тариф у Make, создал там сценарий, на пару с ChatGPT написал промпт (не с первой и не с десятой попытки), подвязал свой OpenAI токен. После сделал команду (Apple Shortcuts), в которую я буду передавать endpoint url от Make, куда буду POST'ом слать скриншот, а дальше OpenAI моделька распознает текст на скриншоте согласно промпту и передаст информацию дальше. По началу я использовал встроенное хранилище Make, но оно мне не подходило, потому что каждый запрос - это трата кредитов Make. А Make выделяет какой-то свой адрес, и там позволил разместить очень простую веб-страничку, но при каждом обновлении страницы Make делал запрос в табличку и кредиты списывались, а на бесплатном тарифе их немного.
Потому решил, что Make будет отправлять результаты в Cloudflare D3 (бесплатная БД на бесплатном тарифе), а страничка будет отрисовываться через Cloudflare Pages. Я там же добавил cname для своего поддомена и начал пользоваться.
После ещё прикрутил авторизацию через Cloudflare по белым спискам E-mail. То есть при заходе на сайт Cloudflare спрашивал e-mail и если он в белом списке, то высылал туда временный код, который надо было ввести в форме и тогда я получал доступ к своему списку фильмов:


Первый прототип, которым я пользовался пару месяцев выглядел так:


На своем смарте адрес сайта через Safari я перевел в PWA и получил сразу ярлык на рабочем столе телефона.

После, 17 сентября я рассказал об этом в клубном чате Вастрик.WIP и людей этот проект быстро заинтересовал и я поделился исходниками веб-страницы и инструкцией как это завести у себя.

Что вошло в прототип и сколько времени на него было потрачено?

Спустя пару месяцев, в ноябре несколько человек ещё приходили ко мне в ЛС, что было бы круто сделать такой сервис клубным, потому что не все могут себе аккаунт OpenAI завести, оплатить токены и т.д.
Решил, что надо расчехлить ChatGPT Codex и поручить ему заняться разработкой сего клубного сервиса.
Итого за 2 полных дня и 1.5 недельных лимита подписки Plus сервис в рабочем состоянии.

Используется тот же совершенный промпт, который был написан ещё в сентябре, сам бот, Mini App = веб-версия, POST-endpoint, а также API для тех, кто знает что с этим делать.

Также, прикрутил сразу клубную авторизацию. Если бот не назовет вас по имени (как указано в вашем клубном профиле), значит вы не привязали свой профиль к клубному боту.

Как работает сервис

Самый удобный: после отправки /start боту открываете личный кабинет в Mini App- есть отдельная кнопка.
Открыв личный кабинет внизу видим кнопку Интеграции и открываем её - это откроет попап внутри Mini App, по кнопке Установить команду "Добавить фильм" у вас откроется пошаренный мною шаблон Команды в icloud, установите его на своё устройство, но не запускайте сразу.

Также, в попапе Mini App вам нужно создать свою персональную ссылку и скопировать её в буфер обмена.

После открываете добавленную команду на редактирование (нажимаете на неё) и в 3 блоке где "https://flist.top/h/ЗАМЕНИТЕ-ВЕСЬ-АДРЕС-НА-СВОЙ" всё стираете и вставляете свою персональную ссылку, сохраняете команду (галочка на клавиатуре и можно выйти из режима редактирования).


Также, проверьте, что у вас включен переключатель "Показывать при экспорте":


И наконец, находите любой скриншот, на котором видно название фильма или сериала, нажимаете поделиться, выбираете новую команду (вы можете её переименовать, назовите как хотите) и нажимаете на неё, скриншот отправиться на сервер и в вашем каталоге появится новый фильм.

Второй вариант: отправить скриншот или название прямо в бота.
Третий вариант: отправить скриншот или название фильма на сайте (или Mini App) (нажать на плюсик в правом верхнем углу).

При первой отправке скришота через поделиться > команда Добавить фильм система спросит у вас разрешение на отправку данных на внешний ресурс, рекомендую нажать на Разрешать всегда.

Какой технологический стек вы использовали? Почему?

FastAPI - для веба и API, в принципе ядро всего сервиса.
Tortoise-orm - мой любимый async django-like ORM.
PostgreSQL для хранения всех данных.
Redis - для кэша.
TMDB API для подтягивания метаданных к фильмам.

По умолчанию TMDB пытается подтянуть метаданные к каждому добавленному фильму в каталог, но это работает не всегда идеально.
Обычно новый фильм/сериал в каталоге выглядит так:


Если вам нужны метаданные (это не обязательно), нажимаем на карточку фильма и внизу TMDB может предложить варианты из базы (если год неправильный может не сработать, можно пробовать вообще без года) и выбираем подходящий вариант, для повторного запроса (если изменили год к примеру и ничего не нашлось можно нажать Повторить загрузку метаданных)

После загрузки карточка преображается:


Так выглядит в общем списке:

Также, добавил возможность опубликовать свой каталог в публичный доступ с выбранным username, например:

https://flist.top/u/bakhti

В настройках можно выбрать что показывать по публичной ссылке: только просмотренные, только запланированные, всё.
В любой момент через настройки можно отключить публичный профиль, username резервируется за вами.

С какими самыми неожиданными трудностями пришлось столкнуться?

Токены, токены и ещё раз токены. Очень много исправлений UI/UX.

Изначально страница авторизации для браузера выглядела так (в Mini App авторизация из телеги автоматически перетекает):


А сейчас выглядит так (авторизация по Telegram ID сохранилась, внизу справа):

Ещё актуален вопрос, как настроить похожее поведение Команд на Android устройствах, может быть через сторонний софт или есть встроенный интерфейс.

Идеи монетизации

Данный сервис для клуба предоставляется бесплатно, но для людей извне клуба сервис будет платным по подписке около 1.5 евро/мес, я уже добавил интеграцию Tribute, не знаю, посмотрим, будет ли вообще спрос (я же не умею в рекламу). Цену могу подкрутить, если считаете, что слишком дорого для людей извне клуба.

Какие планы на будущее

Если будет спрос, то добавлю возможность создавать пользовательские списки, использовать существующие или настраивать свои темы оформления для публичного каталога.

Нужны ли какие-то советы или помощь Клуба?

Буду премного благодарен обратной связи, любым предложениям, идеям и т.д.

6 комментариев 👇

а как же аниме и книги?
я был тем (видимо одним из тех), кто писал в личку, в моей идее было так:

  1. отправляешь в бот что угодно, картинку, описание, название
  2. он понимает, во первых, о чём речь
  3. находит каноническое название, категоризирует, что это — фильм, сериал, аниме, книга
  4. запихивает это самостоятельно в определённую категорию
  5. в зависимости от типа контента, ищет его в какой-то базе, например, аниме на MyAnimeList, книги на GoodReads и тд (может быть стоит сделать разные настраиваемые интеграции, если кто-то пользуется другими сервисами)
  6. добавляет в список с каноническим названием, постером, оценкой и ссылкой на сайт
  Развернуть 1 комментарий

@yumaa, попробую и это добавить.

  Развернуть 1 комментарий

@legeminus, поясню немного, чего я так прицепился к MyAnimeList :) я просто именно там сохраняю список просмотренного аниме, у меня там профиль с 2010 года. мне не нужен сервис, в котором можно вести список просмотренного или ставить просмотренному оценки. мне нужен сервис, который сможет понять, что я ему скинул, и добавить это в план. потом, когда я посмотрю — из этого списка я просто удаляю тайтл, т.к. мне там это больше не нужно. аналогично с книгами, я веду список прочитанного на GoodReads.

  Развернуть 1 комментарий

@yumaa, Ага, посмотрю, что можно придумать, попробую добавить поддержку книг и аниме, но аниме, думаю и через TMDB должно работать

  Развернуть 1 комментарий

@legeminus, оно работает. не знаю, где база полнее, у TMDB или MAL, но как я написал выше, я веду список просмотренного аниме на MAL, и чтобы добавить — мне нужно тайтл найти там, вручную. а я хочу ссылку тык тык :)

  Развернуть 1 комментарий

@yumaa,

Аниме теперь тоже можно добавлять, используется API aniliberty.

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб