Проект: Бот для сохранения заметок с Youtube (timepoint + субтитры)  Публичный пост
4 мая 2022  2545
Бот для сохранения заметок с Youtube (timepoint + субтитры)

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

Привет всем! Я активный lifelong learner. Вечно что-то изучаю в крайне разных сферах (от эмоционального интеллекта до Nodejs). За последние годы мой процесс поглощения контента на 90% переехал в Youtube. Хочу сделать его удобнее для себя и себе подобных.

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

Мой типичный workflow при изучении конкретного видео состоит из двух этапов.

  1. Ознакомление + "зарубки". Сначала я просматриваю его в ускоренном режиме (обычно 1,5x). В процессе просмотра делаю пометки, в каких таймпоинтах видео есть ценные кусочки информации. Обычно это происходит с телефона где-нибудь на ходу или в транспорте. Мои "информационные зарубки" отправляются сразу в Telegram (как заведено - в "Saved messages").
  2. Конспектирование по "зарубкам". Наконец, когда добираюсь домой, рыскаю по оставленным пометкам, пересматриваю их, чтобы законспектировать эссенцию полезных знаний в свой Obsidian (если кто не знает - бомбезное хранилище знаний).

Но вот незадача - несмотря на оформленный Youtube Premium, я так и не нашел удобного способа сохранять себе ссылку на конкретный таймпоинт с телефона. В целом, есть несколько "обходных путей", но они, по ощущению, жутко кривые. В итоге, мне приходилось сначала сохранять в Telegram ссылку на видео, а затем по мере просмотра видео - под этой ссылкой циферками сеять отметки времени, где встречаются инфо-полезняшки.


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

Еще, чего мне явно не хватало (уже при конспектировании) - это возможности бегло пройтись по оставленным "зарубкам" (например, по субтитрам в этих точках) без запуска самого видео. Это явно оптимизирует процесс разбора.

Во-первых, можно выбрать что важно обработать в первую очередь, а о чем - можно вообще забыть (далеко не всегда то, что на первый взгляд показалось полезным, остается таковым после овладения "whole picture"). Во-вторых, иногда суть можно быстро сохранить, без траты времени на пересмотр фрагмента.

Ввиду накопившихся хотелок, я наконец решил редизайнить процесс самостоятельно.

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

Мой прототип - Telegram бот. Потратил неделю, (часть работы по коду делегировал, лень было вникать). Текущая версия поддерживает такой типичный сценарий:

1. Отправляешь боту ссылку на видео:


2. Затем посылаешь боту отметки времени (с этого видео), которые треубется сохранить как "зарубки". Поддерживается 3 формата: "mm" (минуты), "mm ss" (минуты секунды) или "hh mm ss" (часы минуты секунды). Бот в ответ возвращает прямую ссылку на таймпоинт и прямо под ней - субтитры вокруг этого таймпоинта.

!UPDATE!: Кстати, сразу после таймкода можно написать любой текст. Его бот распознает как твою заметку, относяющуюся к текущему этому таймкоду.


!UPDATE!: Теперь кроме отметок времени боту можно закидывать комментарии и картинки, не привязанные к конкретному таймпоинту.

!UPDATE! (19.05.22): Если к таймкоду (сразу без пробела) добавить символ 's' или 'c' (русскую или английскую), то вместе с субтитрами бот выдернет скриншот. Удобно, если нужно заскриншотить график или диаграмму на видео). Это также работает для видео без субтитров.

(!UPDATED!) 3. Когда просмотрел одно или несколько видео, нажимаешь кнопку "Собрать все". Бот расфасовывает все твои заметки по отдельным pdf и MD файлам - качай на здоровье.

Я MD-шники сохраняю сразу в Obsidian волт:

Что еще умеет бот

a. Также, боту можно напрямую отправить ссылку с таймпоинтом (которую позволяет скопировать веб-версия Youtube): https://youtu.be/VIDEO_ID?t=TIME . Тогда он из нее сразу вытащит субтитры (если они, конечно, там есть)))

!UPDATE!: b. По команде /all отдает все субтитры текущего видео.

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

Классика жанра: Node.js (хочу перевести на TS) + Telegraf.js + Mongo.

Сколько потратили и заработали? Есть идеи как это можно монетизировать?

Как раз в последние месяцы занялся разработкой ботов. Поэтому почти ничего не потратил. Бот живет на бесплатном хероку. Заработал пока - сплошной кайф от удобного процесса работы с видео.

Чувствую, что коммерческий потенциал у бота имеется, но сейчас нет энергии заниматься продуктовыми вопросами и маркетингом.

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

В грезах виднеется примерно такой Roadmap:
1. Сделать бот еще более удобным и полезным для Youtube-лернеров.
2. Превратить бот в сервис (или приложение), который позволяет при просмотре видео "не отходят от кассы" делать заметки (сразу в маркдауне) и "обогащать" их кусочками субтитров.

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

Очень любопытно ваше мнение по вопросам:
1. Какие полезняшки в бот доработать, под какие удобные сценарии заточить?
2. Для кого бот может оказаться особенно полезным (хочу в перспективе поискать узкий сегмент ерли адоптеров)?
3. Как бы монетизировали?

p.s. в боте пока могут проскакивать баги, сигнализируйте по возможности
p.p.s. если бот "висит" и ни на что не откликается - введите "/start*" и нажмите Enter. Должно помочь)*

Связанные посты
44 комментария 👇

А есть техническая возможность сразу скриншоты вытаскивать по таймкоду? Было бы полезно для всяких схем, слайдов презентаций. Чтоб сразу добавлять в тот же обсидиан.

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

@ykosyakov, хорошая мысль, сам об этом думал, +1

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

@ykosyakov, доработал эту штуку. Чтобы выдернуть скриншот - после таймкода (без пробела) сразу ставим символ 's' или в русской раскладке 'с'

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

@apris, супер!

  Развернуть 1 комментарий
Daniel Markoff Развиваю Тюменские Аккумуляторы 4 мая 2022

Ещё бы добавить кнопочку -

Бот: "Желаете добавить комментарий к данному фрагменту?" - выбор да или нет.

И сразу комментируешь данный фрагмент! А потом все по фрагментам собрать в один текст. Топ.

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

@MARKOFF, я хочу прикрутить добавление коммента прямо после ввода временной метки, например 15 10 комментарий к метке

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

@apris, да или сразу так. :)

Классный проект

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

@MARKOFF, сегодня уже доделал это, только пока не придумал как пользователей оповещать об обновлениях лучше) Когда вводите циферки (в качестве таймкода) после них через пробел печатаете текст, это и будет заметка

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

Ещё было бы круто:
-подгружать в бота автоматом пару последних видео из истории просмотра.
-отображать сразу пользователю длительность видео и соответсвенно парсить входные данные, если видео длиннее 59:59.

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

Никогда так не сохранял и не прорабатывал видео, но теперь интересно попробовать.

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

Давно мечтаю, чтобы можно было посмотреть tldr видео. Лень смотреть, а уж тем более конспектировать. Хочу сразу получить суть видео в кратком текстоформате

Заплатил бы за такое)

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

@alexkuzn, tldr - это что-то вроде эссенции ключевых мыслей? Или что имеете ввиду в данном контексте?

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

@apris, да, именно оно

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

@alexkuzn, вроде я видел какой-то сервис, делающий так, но больше сказать не могу.

  Развернуть 1 комментарий
Dias Yeszhanov Backend Developer (Go) 5 мая 2022

Процесс перепрыгивания из ютуб в телегу муторен. Есть вариант такого флоу:

  1. Не отрываясь от видео делаешь скрины, чтобы были видны таймкоды.
  2. После просмотра видео высылаешь все скрины боту.
  3. Бот умеет в парсинг этого таймкода по определенным зонам скрина.
  4. end;
  Развернуть 1 комментарий

@diassyes, Очень поддерживаю про муторность процесса. #flow примерно такой и вижу в идеале. Есть подозрение, что для его качественной реализации лучше несколько поменять "среду", в которой все происходит. Копаю туда.

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

Очень здорово, думал о таком проекте но руки как-то не дошли, отлично что его кто-то написал )
Плюсую к идее про скриншоты

А в качестве платной фичи могла бы, например, быть генерация pdfки на основе этих скринов, сабов и ссылок с таймкодами

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

@hauu, жирный плюс с идеей про pdf ки #monetization

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

@hauu, доделал генерацию pdf и MD файлов. Кроме таймкодов с субтитрами в нее входят комменты пользователя и картинки, отправленные пользователем. Фичи распознавания таймпоинта по скрину пока не реализовал. Пока ресерчу и размышляю насчет нее.

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

На очень большое количество видео ютуб сам генерит "транскрипт", (наверняка) можно доставать его и прогонять через нейронку и получать выжимки.
Поверх этого ещё мысль - тянуть таймкоды из апи SponsorBlock и игнорировать в транскрипте то, где ембед-реклама и заставочки/прощалочки.

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

@sta, крутая мысль с нейронкой, погуглил "summarize text api" #feature. Возможно, знаете какие сейчас топовые провайдеры апи для суммаризации? Подозреваю, что таковых больше для инглиша (и скорее всего, с учетом структуры языка, там они дальше пошли в качественном аспекте результата, чем для ру версий).

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

@apris, я давно хочу пройтись по своему бэклогу из новостей, что попадали в инстанс tt-rss (собственно идея оттуда).
Видел как саммари с большего работает на https://infomate.club (на русском), не для всех источников, но думаю это из-за того, что непонятно - какой текст с постоянно меняющейся страницы тянуть. В случае с транскриптом - по идее должно быть даже проще.

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

@apris, Есть https://smmry.com - на нём работают все боты на реддите, что я видел. Он только для английского, но они поделились описанием алгоритма работы, мне давно хочется попробовать его реализовать для других языков

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

@morj, благодарен, копну в него. Если сделаете реализацию для русского или других языков - дайте знать.

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

@morj, сделали что-нибудь такое для русского? Мне тоже надо :-)

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

Идея — огонь 🔥🔥🔥
Очень простая и, тем не менее, очень удачная, знаю много людей, кто по похожей системе смотрит обучающие видосы на ютубчике.

Из фишечек, которые сделали бы инструмент еще полезнее, вижу:

  1. возможность указать боту, сколько секунд/строк субтитров захватывать с таймкода по умолчанию (столько-то до и столько-то после, причем задавать их по отдельности)

  2. возможность указать боту, какие хватать субтитры (чаще всего, к сожалению, это будут авто-сабы, но иногда к видео дают "официальные" субтитры)

  3. скрины — обязательно (например, чтобы зафиксить не только текст, но и схему/диаграмму, которую показывают на экране)

  4. как альтернатива или дополнение к комментам, может быть, тегирование таймкодов? Я бы так помечала фрагменты: переписать в тетрадочку / супер-ключевые пойнты / схемы на скрине / что надо поресерчить в другом источнике / проч.

Будет вообще киллер-фича, если бот будет собирать словарик пользовательских тегов и предлагать их юзеру по мере наполнения и частоты использования. (Прикиньте, как потом это в обсидиане развернется 😂)

Ну и, конечно же, вывод всего собранного в файлик/пдф/csv, это маст.
Удачи с развитием ✨

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

@kotyakott, Благодарен за фидбек. Фоллоуапы:

  1. есть идеи как сделать это синтаксисом? в скобках может? тоже об этом думал и у меня была идея просто плюсик добавлять после последней циферки таймкода. Каждый плюсик увеличивает на 50% дефолтное количество (2 сзади, 6 спереди). То есть 1 плюсик значит 4 сзади, 9 спереди.
  2. хорошая мысль, за одно язык указать, а то у некоторых английских видео почему-то первым субтитры идут на арабском или хинди
  3. в целом, скрины экрана и сейчас можно бросать боту, просто он ничего с ними не делает (по идее можно прикрепить возможность добавлять временную метку + ложить их в pdf (когда до него дойдут руки).
  4. В целом, тегировать можно и сейчас (докрутил как раз комментирование, в комменте можно вводить тег). Относительно словарика - идея классная, однако у меня пока не сложилось видение реализации.

PDF - согласен. Буду пилить

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

@kotyakott, доделал генерацию pdf и MD файлов. Кроме таймкодов с субтитрами в нее входят комменты пользователя и картинки, отправленные пользователем.

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

Отлично! Я сам учусь подобным образом, и много потребляю контента с youtube. Но действую деревянно - все видео выкачиваю себе на телефон, чтобы смотреть их офф-лайново (в метро, в самолете), а заметки пишу рукой в тетрадке, которую не выпускаю из цепких лап никогда. Но правда потом все проработанное перебиваю в Evernote для электронности.

Несколько раз подрывался придумывать подобный сервис, но в итоге приходил к идее, что нужно делать свой видео/аудио-плейер и добавлять всю функциональность в него.

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

Именно из-за того, что к ролику приходится возвращаться много раз, дописывать конспект, править таймкоды - мне и мерещится прямо целый плейер.

А может кто вдруг знает уже существующий подобный проект? Я не весь интернет прочитал, что-то точно пропустил.

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

@rpozlevich, очень солидарен про "заметки от руки". По поводу spaced repetition... Тут есть парочка но (сейчас копаю в то, как эффективно учиться как раз). С одной стороны, SR лучше работает, если есть элемент "active recall". Как это реализовать на практике описывал в этой статье. С другой стороны, в этом видео Justin хорошо доносит 2 мысли:

  1. Spaced Repetition при активном обучении не особо "scalable" история. Его поинт, что если фокусировать себя на запоминании, то объем времени на SR растет экспоненциально.
  2. С другой стороны - предлагает хорошую альтернативу в виде подходов "relational learning". То есть при обучении мы фокусируемся на том, чтобы вместо запоминания изолированных кусочков информации, запоминать инфу в связи (отсюда "relational") с уже существующей (в идеале по более высоким уровням таксономии блума, то есть под призмой применения, анализа, оценки) → этот процесс сигналит мозгу, что инфа важная → мозг "корректирует кривую забывания" → для хорошего удержания достаточно повторить 1-2 раза:

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

прошу добавить альтернативный разделитель минут и секунд

на айпаде смотреть боль

  1. переключить на цифры
  2. набрать например 23
  3. нажать пробел. клавиатура обратно переключается на буквы
  4. обратно переключится на цифры
  5. набрать например 55

вот если бы

  1. переключить на цифры
  2. набрать 23:55

???
profit!!!

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

@gwyllium, кстати, +++, мелочь, а с телефона всегда так, раздражает немного. Альтернативные разделители однозначно нужны

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

@gwyllium, ок учту. Согласен, что из таких мелочей часто складывается привычка к продукту) Кстати, задумался о том, где разместить продукт, чтобы те, кому зашел функционал могли подписаться на оповещения, что доработана конкретная фича?

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

Привет, классная идея! Я тоже подобные интеграции люблю придумывать и решать.
Есть предложение, что для декстоп устройсв можно сделать расширение, по хоткею будет сохранять тайм коды в буфер или сразу отсылать боту.
То есть смотришь видео, cmd+\ (пример запомнить текущий тайм штемп + нормализовать), cmd+/ (запомнить end). Повтоный вызов или редактировние или начало новых отрезков.
Как итог получится делать заметки не покидая видео и не задумываясь сильно

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

@undefined, очень резонирует мысль (у самого проскакивала). Буду рад созвониться обсудить. Пиши, когда будет удобно!

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

Может кто-то не знал, но в мобильном приложении Telegram, можно в сообщение где линк на ютуб или в reply на это сообщение написать таймкод и по клику откроется видео в этом моменте.

Saved Messages
Saved Messages

клик по времени
клик по времени

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

@bakalov, действительн, не знал этого. Возможно, подскажите, может, оно "из коробки" и субтитры выдергивает?

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

@apris, такой фичи не видел)

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

@apris, по апишке youtube думаю можно скачать субтритры.
В каком формате и как это работает не разбирался, но апишка есть)
https://developers.google.com/youtube/v3/docs/captions/download

  Развернуть 1 комментарий
  1. Превратить бот в сервис (или приложение), который позволяет при просмотре видео "не отходят от кассы" делать заметки (сразу в маркдауне) и "обогащать" их кусочками субтитров.

Это, кстати, может быть и плагин для Obsidian. Было бы круто смотреть прямо в нем видос с ютуба и параллельно печатать, а плагин бы уже автоматически подтягивал тайм-коды, субтитры, делал скриншоты по команде.

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

@sobolev, есть это в планах, но сейчас быстрее хочется сделать Chrome расширение

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

Если сделаешь какое-нибудь апи, попробую написать плагин для Worflowy, который позволяет делать это прям там :)

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

😱 Комментарий удален его автором...

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

для заметок с ютуба для себя полезным нашел Notion + Snipo

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

Недавно наткнулся на такой сервис, отчасти решает, то что хочешь сделать:
https://glasp.co/youtube-summary
Надеюсь тебя это не остановит пилить свое решение и ты сделаешь лучше!

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

😎

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

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


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