Как очистить YouTube Music от ИИ-музыки: опыт проекта на ytmusicapi

331 комментарии
Плейлисты на ytmusicapi и GitHub Actions отсекают ИИ-треки по возрасту исполнителя, звуку 30-секундного превью и наличию на Deezer и iTunes. За два дня скрипт отметил дизлайком 1373 ИИ-трека от 990 исполнителей, из них 343 русских, и собрал личный микс без ИИ. Проект создан с Claude Opus 5.5, в статье есть инструкция и код детектора

За два дня, –, мы собрали для YouTube Music набор автоматических плейлистов и систему, которая вычищает ИИ-музыку из рекомендаций. Проект работает без участия человека на бесплатном GitHub Actions: каждую пятницу обновляет 8 публичных чартовых плейлистов, каждую ночь собирает личный «Мой микс без ИИ» и его версию из клипов. За первые запуски скрипт поставил дизлайк 1407 ИИ-трекам; после исправления одной ошибки 34 дизлайка сняты, и в итоге отмечены 1373 трека от 990 исполнителей и каналов, из них 343 на русском языке. Код написан в диалоге с моделью Claude Opus 5.5 в Claude Code; ниже – что получилось, как отличали ИИ от живой музыки и как повторить проект.

comss img 2026 10 17 115452

Зачем это понадобилось

Поток сгенерированной музыки растёт быстрее, чем площадки успевают его фильтровать. По данным Deezer, в июне 2026 года полностью сгенерированные ИИ треки впервые превысили половину суточных загрузок – в пиковые дни до 90 000 композиций. Deezer исключает такие треки из алгоритмических рекомендаций, а неслушаемые и накрученные удаляет.

YouTube Music начал распространение меток Made with AI для песен, созданных преимущественно генеративным ИИ. Метка касается только значительного участия нейросети, а её отсутствие не гарантирует, что ИИ не использовали. В нашей проверке метку не удалось найти ни у одного из 25 треков, которые наш детектор уже признал синтезированными, – ни в данных песни, доступных скрипту, ни в коде страницы. Возможно, распространение до этих треков ещё не дошло или метка видна только в приложении.

На практике в персональных миксах аккаунта, на котором делался проект, по нашим правилам было от 4 до 28% ИИ-треков. В отдельных «радио» от ИИ-трека доля доходила до 68–76%, а один из самых заметных хитов недели – BAD TIMES исполнителя Imael Angel, первое место в мировом и российском чартах Shazam и в чарте продаж iTunes House – получил у нашего детектора оценку 1,00, то есть был распознан как синтезированный.

Что получилось: 8 публичных и 2 личных плейлиста

comss img 2026 10 17 114214
Автоматизированные плейлисты

Чартовые плейлисты обновляются каждую пятницу в 19:00 по Москве. Описания у них на русском и английском, все треки ищутся только среди официальных аудиозаписей YouTube Music и проходят ИИ-фильтр. Если свежего трека ещё нет на стримингах, берётся видео с YouTube после сверки исполнителя и названия; если трека нет нигде, его место занимает следующая позиция чарта.

ПлейлистИсточникСостав
Топ 30 · Мир · Billboard GlobalBillboard Global 20030 главных песен недели: стриминг и продажи более чем в 200 территориях
Клубный топ · House & TechnoBeatport Top 100 и iTunesBeatport House 8 и Techno 8 (покупки диджеев), iTunes House 7 и Techno 7 (продажи слушателям)
Спокойная электроника · Deep & MelodicBeatport Top 100 и iTunesBeatport Deep House, Melodic House & Techno и Organic House по 5, iTunes Downtempo 8 и Ambient 7
Топ 30 · НеоклассикаiTunes Top Songs, жанр ClassicalСводный чарт продаж 10 стран без академической классики, оперного попа и поп-каверов
Россия · Shazam & Золотой ГраммофонShazam (Россия, 7 дней) и «Русское Радио»15 самых распознаваемых треков и 15 лидеров хит-парада по голосованию слушателей
Хит-парад Радио Шансонradioshanson.ruЕженедельный хит-парад по голосованию слушателей
Новое в чартах за неделюВсе чарты вышеТолько треки, впервые вошедшие в любой топ; первое заполнение –
Лучшее за месяцВсе чарты выше30 треков с наибольшим числом очков за месяц; первое заполнение –
comss img 2026 10 17 114433

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

  • «Мой микс без ИИ» – 100 треков каждую ночь: знакомое и любимое 20, давно не слушали 5, новинки любимых исполнителей 20, незнакомое в любимых жанрах 30 («радио» YouTube от любимых треков каждого жанра), тренды недели 15 (наши чартовые плейлисты), новые жанры 10 (по два соседних жанра за ночь, по кругу). Доли жанров: шансон 22%, русская поп 18%, спокойная электроника 18%, клубная 16%, неоклассика 13%, мировой поп 13%, в итоге около 36–40 русских песен из 100. Повторы со вчерашним миксом исключены.
  • «Мой микс – клипы» – 60 треков по тому же алгоритму, но только с настоящим официальным клипом и без треков звукового микса этого дня. YouTube Music при добавлении в плейлист подменяет клип аудиоверсией, поэтому в плеере нужно один раз включить режим «Видео».

Как скрипт отличает ИИ от живой музыки

Аудиторию ИИ-проектам накручивают, поэтому число прослушиваний и подписчиков не помогает. Подделать нельзя возраст исполнителя, и на нём построены правила.

  • Проверяются только новые исполнители и каналы – с первым релизом или созданием канала не раньше 2024 года, когда вышла третья версия генератора Suno. Трек, где среди исполнителей есть давний артист, не трогается.
  • Новый исполнитель считается ИИ-проектом, если звук его 30-секундного превью распознан как синтезированный (порог 0,5).
  • Или если у него нет ни одного трека ни на Deezer, ни в iTunes: живого новичка дистрибьютор обычно выпускает на всех площадках, а Deezer, по собственным данным, исключает полностью сгенерированные треки из рекомендаций и удаляет неслушаемые и накрученные. Из 1609 новых исполнителей, прошедших проверку звука, 559 распознаны как ИИ, 908 звучат как живые, а превью не нашлось у 142.
  • Или если он выпускает релизы потоком: от 5 релизов, для русских исполнителей – от 10. Встречались проекты с 349 и 292 релизами меньше чем за два года.
  • Видео с обычного канала без карточки исполнителя считается ИИ, если канал создан в 2024 году или позже.
  • Если звук чистый и релизов мало, исполнитель считается живым новичком и не трогается.

Отпечаток вокодера – периодические пики в спектре 1–8 кГц, которые оставляют слои транспонированной свёртки в нейросетевых генераторах звука вроде Suno и Udio. У живой записи таких пиков нет, поэтому признак зависит от устройства генератора, а не от стиля музыки.

Звук проверяет открытый детектор lofcz/ai-music-detector – небольшая ONNX-модель около 15 КБ, рассчитанная на Suno до v5 и Udio до 1.5. Файл модели и обработку 30-секундных превью мы взяли из проекта Prototypr/ai-music-classifier (обе работы под лицензией MIT) и переписали без PyTorch, чтобы проверка быстро работала на сервере GitHub. Превью берутся из открытых API Deezer и iTunes.

Перед включением автоматики детектор проверили на размеченных треках:

ГруппаТреков с превьюПризнано ИИ (оценка от 0,5)Оценки
Живые исполнители из лайков: Einaudi, Armin van Buuren, Scorpions и другие2700,00
Живой русский шансон: Наговицын, Дюмин, Круг, Лепс, хит-парад Радио Шансон520не выше 0,02
Русский ИИ, найденный правилом по возрасту980,98–1,00 у распознанных
Иностранный ИИ, найденный правилом по возрасту (случайная выборка)2112большинство 0,99–1,00

На 79 живых треках не было ни одной ложной тревоги. Часть «иностранного ИИ», который нашло правило по возрасту, детектор посчитал живой музыкой: это либо живые новички, либо генераторы, которых модель не знает. Поэтому вывод «живой новичок, не трогаем» делается только при сочетании чистого звука и небольшого числа релизов.

Сколько ИИ нашли и удалили

Скрипт ставит ИИ-трекам дизлайк – прямой сигнал рекомендациям «такое не предлагать» – и убирает их из истории прослушиваний. Правила ужесточались по ходу работы, поэтому прогоны отличаются охватом.

ДатаЧто проверялосьДизлайков
16 октябряЛайки, библиотека и свои плейлисты9
17 октябряМиксы главной, первые правила (с 2025 года, от 5 релизов)150
17 октябряОблачный прогон на GitHub98
17 октябряПлюс русские треки113
17 октябряПлюс проверка звука170
17 октябряОблачный прогон на GitHub115
17 октябряВсе миксы «Mixed for you», одиночные треки главной, правила «нет превью» и «новый канал»458
17 октябряИсполнители с 2024 года, по 200 треков на микс622
17 октябряНочная чистка истории1
Итого действий / уникальных треков1736 / 1407
17 октябряСняты ошибочные дизлайки после исправления декодирования превью iTunes - 34
Остаётся с дизлайком1373

Оставшиеся 1373 трека принадлежат 990 исполнителям и каналам; 343 из них на русском языке. Из истории прослушиваний удалено 25 ИИ-треков. В последнем полном прогоне, ещё до исправления ошибки с iTunes, 622 трека от 507 исполнителей распределились по причинам так: поток релизов – 236 исполнителей, нет ни на Deezer, ни в iTunes – 157, звук – 96, новый канал – 18.

Доля ИИ в персональных миксах по 200 треков на момент этого прогона:

МиксИИ-трековДоля
Душевные откровения и ритмы жизни5628%
Спокойствие и меланхолия4723%
Атмосфера клубного вайба3517%
My Supermix2412%
Элегантный синтез классики и хауса2010%
Энергия ночного танцпола105%
Заряд бодрости и драйва94%
Классика для глубоких раздумий84%

Победить мусор в миксах YouTube одними дизлайками не удалось: сервис каждый день собирает новые миксы и подмешивает исполнителей, которых накануне ещё не существовало. В тот же день появился новый микс «Ритмы городских улиц», где из 200 треков 43 были ИИ, причём 16 из них уже имели дизлайк, а ещё 38 оказались самодельными загрузками с обычных каналов. Поэтому основным способом слушать стал собственный «Мой микс без ИИ»: он берёт персонализацию из миксов YouTube, но пропускает в плейлист только официальные аудио живых исполнителей и дополнительно проверяет звук каждого трека.

Ограничения и ошибки

  • Первая версия правил ошибочно отнесла к ИИ David Guetta, Khalid и Франца Шуберта: страница исполнителя иногда отдаёт только свежие переиздания, а полную дискографию YouTube загружал не с первого раза. Ошибку нашли на пробном прогоне до каких-либо изменений в аккаунте; теперь неудачная загрузка дискографии означает «проверить не удалось», а не «ИИ».
  • Превью iTunes в формате M4A скрипт сначала не мог декодировать, поэтому правило «нет ни на Deezer, ни в iTunes» фактически проверяло только Deezer. После исправления 84 из прежней группы «без превью» оказались живыми исполнителями, с 34 их треков дизлайки сняты, а 274 подтверждены как ИИ по звуку.
  • Ложные срабатывания возможны и сейчас: правило «нет превью» может задеть живого новичка, которого не нашли на Deezer и в iTunes, а правило потока релизов – плодовитого молодого продюсера. Каждое действие записывается в журнал, по которому дизлайк можно снять.
  • Не ловятся перезаливы со старых каналов, созданных до 2024 года, и ИИ-треки под профилями давних исполнителей.
  • Русские песни из «Понравилось» и все их исполнители исключены из любых проверок по договорённости с владельцем аккаунта, даже если детектор считает трек синтезированным.
  • Обычные прослушивания из истории не удаляются. Скрипт не видит, дослушан трек или пропущен, а для рекомендаций прослушивание – главный сигнал вкуса, особенно если лайки ставятся редко.
  • ytmusicapi – неофициальная библиотека: она имитирует запросы веб-версии, и Google её не поддерживает и не одобряет. Изменение интерфейса YouTube Music может на время сломать скрипт.
  • Обложку плейлиста через API поставить нельзя: обложки загружаются вручную в приложении.

ytmusicapi – неофициальная Python-библиотека для YouTube Music. Она повторяет запросы веб-версии сервиса и позволяет читать библиотеку, искать треки, создавать и менять плейлисты, ставить оценки и изменять историю прослушиваний.

Beatport: почему скрипт не ходит на сайт

Сайт Beatport защищён Cloudflare. Серверы GitHub он перестал пускать уже на второй день, а после частых запросов во время отладки стал отказывать скрипту и на домашнем адресе. Обходить защиту мы не стали. Чарты Beatport раз в неделю собирает задача в приложении Claude: в пятницу в 13:07 расширение Claude in Chrome открывает пять страниц Top 100 в обычном Chrome владельца аккаунта с паузами по 10 секунд и сохраняет снимок в репозиторий. Облачный запуск в 19:00 берёт Beatport из снимка, если ему не больше 4 дней; иначе электронные плейлисты собираются только из iTunes. Если Cloudflare попросит подтвердить, что пользователь человек, задача останавливается и просит сделать это вручную.

Как сделать такой проект: устройство

Проект состоит из трёх частей, и ИИ-фильтр – общая для них середина. Без него чартовые плейлисты наполнялись бы ИИ-хитами (BAD TIMES стоял первым сразу в трёх чартах), а личный микс повторял бы мусор из миксов YouTube.

Часть проектаЧто делаетГде работает ИИ-фильтрЧто происходит с ИИ-треком
Чартовые плейлистыБерёт чарты сайтов и ищет треки в YouTube MusicНа входе: каждый найденный трекПропускается, его место занимает следующая позиция чарта
Чистка рекомендацийОбходит миксы и подборки главной (около 100 штук по 200 треков) и историюКаждый трек миксов и историиДизлайк; из истории – удаление
Личный миксСобирает 100 треков из персональных миксов, лайков и чартовКаждый кандидат плюс проверка звука каждого трекаНе попадает в микс

Ниже – порядок сборки. Команды рассчитаны на Linux; на Windows и macOS отличаются только пути к Python.

Шаг 1. Окружение и доступ к YouTube Music

Понадобятся Python 3.12 или новее, ffmpeg для декодирования превью, аккаунт GitHub и YouTube Music.

python3 -m venv .venv
.venv/bin/pip install ytmusicapi requests beautifulsoup4 librosa onnxruntime scipy

Файл авторизации создаётся из заголовков запроса браузера. Откройте music.youtube.com в браузере, где вы вошли в аккаунт, в инструментах разработчика (F12) на вкладке «Сеть» найдите POST-запрос browse и скопируйте его заголовки (в Firefox: «Копировать значение» – «Копировать заголовки запроса»). Затем выполните команду, вставьте заголовки и нажмите Enter и Ctrl+D:

.venv/bin/ytmusicapi browser

Появится файл browser.json с cookie вашего аккаунта Google. Его нельзя никому передавать, публиковать и добавлять в репозиторий; если выйти из аккаунта в этом браузере, файл перестанет работать. Firefox копирует заголовок Content-Encoding: gzip, из-за которого запросы ломаются, – удалите его из файла.

Шаг 2. Чарт в плейлист

Ищите только среди официальных аудио (filter="songs") и сверяйте и исполнителя, и название. Без сверки названия скрипт при отсутствии нужной песни молча подставит другую песню того же артиста – так у нас вместо «Разлетелись как птицы» Александра Новикова оказалась его «Птица с дробью».

from ytmusicapi import YTMusic
yt = YTMusic("browser.json")

def find_song(artist, title):
    for r in yt.search(f"{artist} {title}", filter="songs", limit=5):
        names = " ".join(a["name"] for a in r.get("artists") or []).lower()
        if artist.lower().split()[0] in names and title.lower() in r["title"].lower():
            return r
    return None

ids = [t["videoId"] for t in (find_song(a, s) for a, s in chart) if t]
yt.create_playlist("Мой чарт", "Описание", privacy_status="PUBLIC", video_ids=ids)

Чарты берите из открытых источников: CSV Shazam, RSS iTunes, страницы Billboard и радиостанций. Опрашивайте их редко и не обходите защиту сайтов.

Шаг 3. ИИ-фильтр: возраст исполнителя

Первый и самый дешёвый признак – год первого релиза. У трека в YouTube Music есть идентификаторы исполнителей; по ним загружается страница артиста. На ней видны только последние релизы, поэтому, если все они свежие, нужна полная дискография: иначе давний артист с потоком новых синглов будет выглядеть новичком.

def first_release(artist_id):
    info = yt.get_artist(artist_id)
    blocks = [info.get(k) or {} for k in ("albums", "singles")]
    years = [int(r["year"]) for b in blocks for r in b.get("results", []) if str(r.get("year", "")).isdigit()]
    if years and min(years) >= 2024:            # видны только свежие релизы - нужна полная дискография
        for b in blocks:
            if b.get("params"):
                full = yt.get_artist_albums(b["browseId"], b["params"], limit=None)
                years += [int(r["year"]) for r in full if str(r.get("year", "")).isdigit()]
    releases = sum(len(b.get("results", [])) for b in blocks)
    return (min(years) if years else None), releases

Две ошибки, которые мы сделали и исправили: загрузка полной дискографии иногда не удаётся с первого раза – её нужно повторять, а неудачу считать «проверить не удалось», а не «ИИ»; и на старте мы проверяли только исполнителей с 2025 года, хотя массовая генерация шла с 2024-го. Результат храните в кэше – к концу второго дня в нашем было 11 597 исполнителей, и без кэша каждый прогон заново запрашивал бы тысячи страниц.

Шаг 4. ИИ-фильтр: превью и детектор по звуку

Для нового исполнителя нужен звук. Скрипт ищет 30-секундное превью трека в открытых API Deezer и iTunes; если трека там нет – превью популярных треков исполнителя на Deezer. У найденного превью обязательно сверяйте исполнителя, иначе детектор оценит чужую песню.

import requests

def deezer_preview(artist, title):
    # точный запрос часто пуст (диакритика, «feat.» в названии) - тогда свободный
    for q in (f'artist:"{artist}" track:"{title}"', f"{artist} {title}"):
        data = requests.get("https://api.deezer.com/search", params={"q": q, "limit": 3}).json()
        for item in data.get("data", []):
            if item.get("preview") and artist.lower().split()[0] in item["artist"]["name"].lower():
                return item["preview"]      # ссылка на MP3, 30 секунд

def itunes_preview(artist, title):
    data = requests.get("https://itunes.apple.com/search",
                        params={"term": f"{artist} {title}", "entity": "song", "limit": 3}).json()
    for item in data.get("results", []):
        if artist.lower().split()[0] in item.get("artistName", "").lower():
            return item.get("previewUrl")   # ссылка на M4A (AAC), 30 секунд

Модель детектора скачивается одним файлом, к ней нужны librosa, onnxruntime и scipy:

mkdir -p models
curl -L -o models/ai_music_detector.onnx \
  https://raw.githubusercontent.com/Prototypr/ai-music-classifier/main/models/ai_music_detector.onnx

Детектор не слушает музыку целиком: он усредняет спектр 30 секунд, оставляет полосу 1–8 кГц, вычитает нижнюю огибающую, чтобы убрать мелодию, и передаёт оставшиеся пики модели. Обработка повторяет код lofcz/ai-music-detector, но без PyTorch:

import subprocess, requests, librosa, numpy as np, onnxruntime as ort
from scipy.ndimage import minimum_filter1d

SR, NFFT = 16000, 8192
model = ort.InferenceSession("models/ai_music_detector.onnx")
inp = model.get_inputs()[0]
band = (np.linspace(0, SR / 2, NFFT // 2 + 1) >= 1000) & (np.linspace(0, SR / 2, NFFT // 2 + 1) <= 8000)

def decode(url):
    """MP3 Deezer и M4A iTunes -> моно 16 кГц через ffmpeg (librosa сама M4A не откроет)."""
    audio = requests.get(url).content
    out = subprocess.run(["ffmpeg", "-v", "error", "-i", "pipe:0", "-t", "30", "-ac", "1",
                          "-ar", str(SR), "-f", "f32le", "pipe:1"], input=audio, capture_output=True, check=True)
    return np.frombuffer(out.stdout, dtype=np.float32)

def ai_probability(url):
    y = decode(url)
    spec = np.abs(librosa.stft(y, n_fft=NFFT, hop_length=NFFT // 2, window="hann")) ** 2
    mean_db = (10 * np.log10(np.clip(spec, 1e-10, 1e6))).mean(axis=1)[band]
    hull = np.clip(minimum_filter1d(mean_db, size=10, mode="nearest"), -45, None)
    peaks = np.clip(mean_db - hull, 0, 5.0)
    fp = (peaks / (peaks.max() + 1e-6)).astype(np.float32)
    fp = np.interp(np.linspace(0, 1, inp.shape[1]), np.linspace(0, 1, len(fp)), fp).astype(np.float32)
    return float(model.run(None, {inp.name: fp.reshape(1, -1)})[0][0, 0])

Оценка 0,5 и выше означает синтезированный звук. Для треков давних исполнителей, где цена ошибки выше, мы используем порог 0,9.

Декодируйте превью через ffmpeg, а не только через librosa: Deezer отдаёт MP3, а iTunes – M4A, который librosa без внешнего декодера не открывает. Мы на этом ошиблись: функция молча возвращала «звука нет», и правило «нет ни на Deezer, ни в iTunes» фактически проверяло только Deezer. Ошибку нашли при проверке кода для этой статьи, исправили и сняли дизлайки с исполнителей, которые нашлись в iTunes и оказались живыми.

Шаг 5. ИИ-фильтр: правила решения

Ни один признак сам по себе не надёжен, поэтому решение принимается по сочетанию:

СитуацияРешениеПочему
Среди исполнителей трека есть артист с первым релизом до 2024 годаЖивойВозраст не подделать; совместные треки с давними артистами не трогаем
Новый исполнитель, звук превью от 0,5ИИДетектор слышит артефакты генератора
Новый исполнитель, превью нет ни на Deezer, ни в iTunesИИЖивых новичков дистрибьюторы обычно выпускают на всех площадках; у 142 из 1609 новых исполнителей превью не нашлось
Новый исполнитель, звук чистый, но от 5 релизов (для русских от 10)ИИГенераторы, которых модель не знает, выдаёт темп выпуска
Новый исполнитель, звук чистый, релизов малоЖивой новичокЗащита от ложных срабатываний
Видео с обычного канала без карточки исполнителя, канал создан в 2024 году или позжеИИДата создания канала видна на странице «О канале»
Трек или исполнитель из ваших лайковНе трогатьРешение владельца аккаунта важнее детектора

Шаг 6. Проверка фильтра до первого запуска

Прежде чем ставить дизлайки, проверьте фильтр на треках, про которые вы точно знаете ответ: на лайкнутых песнях давних артистов он не должен срабатывать ни разу. Мы проверили детектор на 79 живых треках, включая 52 трека русского шансона, – ложных тревог не было. Затем делайте пробный прогон без изменений в аккаунте и просматривайте список: именно так мы поймали ошибку первой версии, которая отнесла к ИИ David Guetta, Khalid и Шуберта.

python ai_cleanup.py            # пробный прогон: только список найденного
python ai_cleanup.py --apply    # дизлайки и удаление ИИ из истории

Каждое действие записывайте в журнал с идентификатором трека: по нему любой ошибочный дизлайк можно найти и снять. Обычные прослушивания из истории не удаляйте – для рекомендаций это главный сигнал вкуса.

Шаг 7. Расписание на GitHub Actions

Создайте приватный репозиторий и добавьте содержимое browser.json в секрет Settings – Secrets and variables – Actions, например YTMUSIC_BROWSER_JSON. Workflow с расписанием в нашем проекте выглядит так:

on:
  schedule:
    - cron: "0 16 * * 5"    # пятница 19:00 МСК: чарты и чистка миксов
    - cron: "30 1 * * *"    # каждую ночь: ИИ из истории и личный микс
  workflow_dispatch:
jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: actions/setup-python@v6
        with:
          python-version: "3.12"
      - run: pip install -r requirements.txt
      - run: printf '%s' "$AUTH" > browser.json
        env:
          AUTH: ${{ secrets.YTMUSIC_BROWSER_JSON }}
      - run: python sync.py
      - run: python ai_cleanup.py --apply

В конце каждого запуска workflow сохраняет в репозиторий кэш исполнителей, журнал и историю чартов: без этого следующий запуск начинал бы с нуля. Наши запуски занимали от 3 до 16 минут в зависимости от того, включена ли чистка миксов.

Как помочь рекомендациям

  • Слушайте собственные плейлисты, а не «радио» от случайного трека: одно ИИ-радио на час перевешивает много хороших сигналов.
  • Ставьте лайк понравившимся трекам – это обучает YouTube и пополняет «знакомое» в личном миксе.
  • ИИ-трек сразу пропускайте и отмечайте дизлайком или «Не интересует».
  • Очистите давнюю историю в «Моих действиях» Google и включите автоудаление записей старше 3 месяцев: тогда случайные прослушивания прошлых лет перестанут влиять на миксы. История общая для YouTube и YouTube Music.

Как в проекте участвовала Claude Opus 5.5

Весь код – пять Python-скриптов (чарты, ИИ-фильтр, детектор звука, умный микс и генератор обложек) и workflow GitHub Actions – написан в диалоге с моделью Claude Opus 5.5 в Claude Code. Модель проверяла источники чартов на живых сайтах, сравнивала признаки ИИ на размеченных треках, делала пробные прогоны перед изменениями в аккаунте и находила собственные ошибки, например подмену песни при отсутствии нужного трека. Владелец аккаунта задавал требования, проверял результат в приложении и сам выполнял действия, которые модель не делает: вход в аккаунты, ввод секретов и подтверждение проверки Cloudflare.

Вывод

Полностью очистить миксы YouTube Music от ИИ дизлайками нельзя: сервис ежедневно добавляет новых исполнителей, а метки Made with AI только начали распространяться. Надёжнее собирать собственные плейлисты из проверенных чартов и персональных миксов, отсекая новых исполнителей по возрасту, звуку и присутствию на Deezer и iTunes. Такой проект можно повторить на открытых инструментах и бесплатном GitHub Actions, но cookie аккаунта нужно хранить только в секретах, а сайты чартов опрашивать редко.

Читаете нас в Google? Добавьте Comss.ru в источникиДобавьте Comss.ru в источники Google
Новые статьи будут чаще в «Главных новостях» Google. Без подписок и уведомлений, отключается в один клик. Нужен вход в аккаунт Google.Наши статьи будут чаще в «Главных новостях». Нужен вход в Google.
Добавить в Google
Автор:
Комментарии и отзывы

Нашли ошибку?

Новое на сайте