Як я створив Chrome-розширення для дерусифікації YouTube
Усі статті, обговорення, новини про продукти — в одному місці. Підписуйтеся на телеграм-канал!
Привіт, мене звати Тарас, я працюю Python b/e інженером в продуктовій компанії Plentific. Мрію зробити продукт, який допоможе багатьом людям.
Ця стаття про мій шлях розробки stopRU — розширення для Chrome, яке допоможе очистити YouTube від російських відео. Це спроба подивитись на створення мікропродукту з різних точок зору: b/e, f/e, дизайну чи то маркетингу.
Проблема
В дитинстві я мріяв вирішувати великі та складні проблеми. Після декількох спроб та невдач, наразі я намагаюсь зосереджуватись на менших чи навіть найменших проблемах/ продуктах. Світ не врятувати, почавши велику справу, та закинувши її. Більше користі буде від маленьких, але завершених перемог. Так можна отримати продукт та користувачів набагато швидше. І вже далі ітерувати покращення хоч на щодень.
Ідея мікропродуктів прекрасна тим, що за одиницю часу можна зробити більше помилок, отримати більше уроків і просунутись далі. Особливо це актуально, якщо ви — одна людина, яка над цим працює в позаробочий час.
Для цього проєкту я обрав проблему впливу російського інфопростору на Україну. Зменшивши її, зосередившись тільки на одній платформі YouTube. На саму проблему можна поглянути з трьох сторін:
Локально
Я, як користувач YouTube, хочу мати можливість відмовитись від російських відео у видачі. Наразі це неможливо зробити, просто задавши відповідний критерій у пошуку. Все, що можна — це налаштувати свою мову та локацію на українську/ Україну, відписатись від російських каналів. Це допоможе, проте не матиме яскравого ефекту.
Глобально
В масштабі країни — в трендах присутні російські відео, їх рекомендують, їх дивляться, алгоритми YouTube підхоплюють і рекомендують більшій кількості людей, і так утворюється замкнене коло. Я б хотів, щоб у людини був вибір, бачити ці відео чи не бачити. Є гіпотеза, що колись це вплине на стрічку Guest User в Україні.
Для дефініції: «російським» є будь-яке відео російською мовою. Тобто тут ми не шукаємо хороших росіян теж.
Ідейно
Російська — не є випадковою іноземною мовою. Для нас — це мова ворога, який веде прямий військовий конфлікт з нами протягом кількох останніх років. А культурний конфлікт — протягом декількох останніх століть.
Дивитися «цікаве відео» російською зараз — це з тієї ж серії, що й «читати Пушкіна в оригіналі». Ми боремось з імперією та намагаємось увійти у світ західних демократій. Залежність проявляється в різних площинах: політичній, економічній та культурній. Де спільною ниткою є і мова контенту. Чим швидше ми позбудемось російської, тим швидше ця залежність нівелюється.
Рішення
Простим рішенням є наполегливо та невпинно переконувати YouTube, що Ви не бажаєте бачити російські відео, ручками натискати кнопку «Не цікавить». За деякий час це справді спрацює. Саме цей процес я й вирішив автоматизувати.
Як це працює
Алгоритм
Сам алгоритм досить простий: перевірити кожне відео, чи є воно російською, якщо так, то вилучити, натиснувши «Не цікавить» або «Не рекомендувати канал».
Для перевірки достатньо проаналізувати назву відео та каналу на наявність літер, які присутні в російській абетці та відсутні в українській (ё, ъ, ы, э). Так, не всі рос. відео відповідатимуть цьому правилу. Та практика показала, що цього достатньо. Тобто, якщо на одній ітерації ми пропустимо відео, то на іншій вже інше відео цього ж каналу буде вилучене, і це дасть необхідний зворотній зв’язок.
Досвід користування (UX)
Основним в налаштуванні розширення є вибір між «Не цікавить» або «Не рекомендувати канал», відповідна реакція stopRU на конкретне відео чи канал.
Дію можна скасувати відразу, на місці відео натиснувши «Відмінити», або пізніше скасувати всі одночасно.
Для користувача все мало б відбуватись непомітно. В ідеальному випадку, певні відео зникають і на їхньому місці з’являється напис «Відео вилучено», при завантаженні сторінки та перегляді стрічки.
Також є можливість глянути статистику з історією видалень. Це така собі гейміфікація.
В реальному житті трапляються випадки, коли все йде шкереберть: скрипт не підвантажився вчасно, виконується із затримкою тощо.
Технічна частина
Саму реалізацію я вирішив імплементувати у вигляді Chrome-розширення. Chrome — найпопулярніший браузер, через який дивляться YouTube (на телефоні розширення не працюють). Нагадаю, що розширення — це маленькі програми, які можуть змінювати чи доповнювати вебсторінки. Напевно, найпопулярнішим прикладом є AdBlocker.
PoC (Proof of concept) я зміг написати за декілька годин, і він знаходив рос. відео та їх позбувався, у випадку вправно схрещених пальців на двох руках. Все виглядало нестабільно та без UI, до продукту йому було ще далеко, проте це надало оптимізму.
Програма відстежує всі відео на головній сторінці при завантаженні та при її зміні. Перевіряє і видаляє, якщо потрібно. Для видалення відкриває попап, швиденько клікає на пункт в меню. Це недосконалий підхід. Мої намагання використати API провалились. Розширення я ніколи не писав до цього.
Заглиблюючись у суть, і намагаючись реалізувати початковий задум, стикнувся з рядом питань та викликів.
MV3 not MV2
Розширення має відповідати певному стандарту, і Google перейшов на новий MV3 на заміну старого MV2. Все стало безпечніше, та велика частина функціонала втратилась. Таким чином більшість прикладів, які доступні в інтернеті та документації просто не працювала. Та все ж маємо MV3, і виходу немає, бо MV2 вже не підтримується :(
Зберігання даних
У ролі продакта, мені дуже хотілося зробити збереження даних на сервері. Щоб можна було логінитись з різних ПК під тим же ж акаунтом і бачити свою історію видалень.
Так почалась історія з пошуком бекенду. Як такого бекенду мені не треба, а чисто БД з API, і я вирішив, що Firebase — саме те, що треба. Не одразу, та все поїхало. Я прив’язав Firebase і там зберігав історію видалень, налаштування профілю. Наступним кроком стало бажання якось обмежити можливість людей писати в мою БД. Єдиний спосіб, який я знайшов, — авторизувати всіх користувачів. Так я прикрутив логін, аутентифікацію від Google.
Тут варто розповісти історію про внутрішню боротьбу інженера з продактом та стартапером. Де перший хоче детерміновану задачу і зробити все так, як йому скажуть. Є БД, треба обмежити кількість записів на людину — ОК, додамо логін.
В той час стартапер каже, так-так, скільки це буде часу, це все довго, нам треба швидке, а не ідеальне рішення. В гру вступає продакт, який, зі свого боку, розуміє, що логінитись будуть не всі, далеко не всі, й тоді нам треба або два сценарії підтримувати, або позбутись гостьових користувачів.
Наразі перемогла ідея зберігати дані в локальному сховищі, нікого не логінити і мати один сценарій. Для мене досить важко перемикатись між цими ролями та дебатувати в «колективі». Тому стараюсь виписувати кожен з поглядів і аналізувати після.
Аналітика
Якщо не поміряв, то все пропало, а може взагалі й не існувало. Треба аналітику. У веб все просто: є Google Analytics, яка інтегрується швидко та відповідає більшості запитів. Схожі очікування були й тут, та історія з MV2 -> MV3 натякала, що легко не буде.
І, так, я не зміг прикрутити її. В результаті інтегрував Mixpanel — наразі працює.
Дизайн
То я сам зробив :) Так, треба делегувати, і справді треба. Але в мене було велике бажання спробувати самому, а до цього важко апелювати та заперечувати, і мені ще й сподобалось.
Залучав друзів дизайнерів давати відгуки та пробував потім їх враховувати. А лого — то вже таки справа не моїх рук, а подруги Олесі, за що їй велика дяка.
Розвиток
З ідей для подальшого розвитку — є бажання адаптувати все під Safari та Firefox. Також були думки створювати «чорні» та «білі» списки, перевіряти кожне відео в БД, чи не в «чорному» воно, навіть, якщо по літерах все гаразд.
Та в підсумку зупинився на тому, що це було б невиправдане ускладнення продукту.
Бізнес-модель
Це місійний проєкт, та хочеться, щоб він і заробляв. Тоді буде можливість системно його покращувати чи працювати над іншими.
Додав можливість підтримати проєкт на Patreon та купити мені каву (Buy me a coffee) — що з того вийде, побачимо пізніше, наразі це гіпотеза. Зароблені кошти планую розподілити так: 70% на ЗСУ, 30% на розвиток проєкту.
Є ще думка додати платну версію, яка матиме щось цікаве, як варіант — це вже згадані «білі» списки. Тобто, якщо ви хочете зберегти канали, навіть, якщо вони російською, доведеться платити.
Підсумок
Я радий, що зміг знайти рішення для проблеми, яка мені болить, реалізувати цю ідею — і продукт вже в публічному доступі! А ця стаття — спосіб поділитись досвідом розробки маленького продукту, знайти однодумців та користувачів stopRU. Встановлюйте за посиланням.
Діліться своїми думками в коментарях чи надсилайте на форму.
Якщо ви дочитали до цього моменту, то моя порада: не відкладайте на завтра ідею, яка у вас є. Запишіть все, обміркуйте з друзями, розбийте на етапи — та вйо до пригод! Дякую за увагу.
Найкращі коментарі пропустити