Главное за 30 секунд
10 июня 2026 в Welder ушло на прод три фикса, которые ломали сценарии агентств с несколькими каналами и платных подписок через Stripe. YouTube-аккаунт теперь подписан реальным именем канала — не e-mail'ом; каждая серия пишет в свою собственную привязку соцсетей — даже если у пользователя 8 соц-аккаунтов; кредиты по Stripe-подписке начисляются в кошелёк за минуту — без ручного триггера.
Если у вас один канал и одна карта, разницу не заметите. Если вы агентство с 4-6 faceless-каналами на одном операторе (гайд про эту модель) — это закрывает три самых громких бага последних трёх недель. Под катом разбор каждого: что было сломано, как чинили, что делать вашему пайплайну.
Контекст: почему агентства тонули в каналах-однофамильцах
Цикл «5 AI-каналов на одного SMM» работает, только когда инструмент явно различает, в какой именно аккаунт уходит конкретный ролик. У почти всего рынка коротких AI-видео с этим в 2026-м всё ещё проблема:
- Submagic ограничивает подключение одним аккаунтом на платформу — если у клиента два TikTok-канала, второй вы привязать не сможете.
- SendShort в июньском релизе 2026 тоже остановился на «один аккаунт на платформу».
- OpusClip Pro даёт мульти-аккаунт, но без явной привязки серии к нужному — публикует в «дефолтный» и оставляет вас раскидывать черновики руками.
Welder в апреле-мае шёл по похожей развилке: подключений хранили сколько угодно, но при автопубликации серия резолвила «куда писать» по принципу «самое свежее по connected_at для платформы». Стоило подключить новый TikTok-аккаунт — и все ранее работавшие серии резко начинали постить в него же. На лог-уровне это выглядело как «всё стабильно», на уровне клиента — как «вы подменили мне канал».
Параллельно YouTube в подписи коннекта показывал e-mail сервисного аккаунта вместо настоящего имени канала: четыре под-канала на одном Google-аккаунте превращались в четыре строки vasya@gmail.com. Угадать, который из них «История Великих Битв», можно было только с третьей публикации.
И, наконец, оплаченные Stripe-подписки в редких случаях не зачисляли кредиты — ничего видимого, просто тишина после успешного платежа. На стороне Stripe всё было OK, на нашей — пустой обработчик.
Сегодняшний релиз закрывает все три симптома.
Фикс №1: YouTube подписан реальным именем канала
Раньше при подключении YouTube в личном кабинете рядом с иконкой стояло creator-account@gmail.com. Аккаунт с пятью под-каналами рендерился пятью одинаковыми строками — без видимой разницы, какой именно канал вы подключили.
С 10 июня в подписи стоит реальный channel.title. Welder читает его из videos.insert-ответа при первой публикации серии и подменяет лейбл в web_youtube_connections.channel_name. Если у вас уже было подключено десять YouTube-связок — после первого нового публикуемого ролика подпись обновится автоматически, без переподключения.
Чисто-API-нюанс. Чтение channels.list с mine=true или id требует scope https://www.googleapis.com/auth/youtube.readonly. Welder подписывает OAuth-запрос только youtube.upload (минимум на запись) — с ним channels.list возвращает 403 insufficientScopes. Поэтому имя приходит не на этапе коннекта, а на первой публикации: videos.insert всегда отдаёт snippet.channelTitle в ответе, и мы стэмпим его в БД.
Что вам делать. Ничего, если новые серии запускаются регулярно — имя проставится само через пару дней. Если хотите увидеть имя сразу — опубликуйте любой voiceover-ролик в этот канал руками из дашборда; первая успешная публикация перепишет лейбл. Полный переход на «имя из коробки на коннекте» требует ребилда OAuth consent screen в Google Cloud с добавлением youtube.readonly; это в плане на июль 2026 (см. предыдущий апдейт от 7 июня).
В лог-таблицу web_admin_events теперь пишется диагностический код scope_missing каждый раз, когда videos.insert отвечает 403 — это позволяет за минуту понять, что пользователь при коннекте снял галку с прав на загрузку. Раньше там было пусто, и саппорт догадывался по второй симптоматике.
Фикс №2: серии пишут в свои собственные привязки
Сценарий, который ломался в среднем у одного из десяти агентских юзеров:
- SMM-щик подключает TikTok-аккаунт «Канал A», создаёт пять серий.
- Через две недели подключает второй TikTok — «Канал B» (новый клиент).
- Все пять старых серий, плюс новые, внезапно начинают постить в «Канал B».
Корень — функция resolveBoundConnection. Если у серии не было явной привязки в web_series_social_bindings, fallback шёл «самый свежий connected_at для платформы». Любой новый коннект автоматически становился «дефолтом» для всех несвязанных серий.
С 10 июня правило другое:
- Fallback теперь — OLDEST-first (
connected_at ASC). Привычные серии остаются на том коннекте, под который они изначально запускались. - При первой публикации серия самопочиняет себя: если в
web_episode_publishesуже есть строка с конкретнымplatform_account_id, серия привязывает себя к этому коннекту вweb_series_social_bindings. Дальше она устойчива к любым новым подключениям. - Wizard серии теперь явно пишет per-series binding при первом запуске. Не надо лазить в SQL и пинить руками.
В сухом остатке: подключить 2-й/3-й/8-й аккаунт TikTok (или YouTube, или Reels) больше не уводит за собой существующие серии. Welder ведёт себя как «несколько каналов под одной крышей», а не как «всё пишет в самый свежий».
Если вы агентство с 4-6 каналами и хотите явно пин-нить серии (для аудита), используйте новый раздел «Соцсети серии» в карточке: один клик закрепляет нужный аккаунт. На уровне БД это пишется как row в web_series_social_bindings(series_id, platform, connection_id) — следующий ребилд резолвера читает оттуда первым.
Контекст рынка. По нашим тестам в мае-июне, на «один аккаунт на платформу» обламываются три из пяти агентств: средний клиент быстро вырастает в пять каналов, а SMM не готов покупать два аккаунта Submagic ради разделения. Параллельно кейс агентства с 14 клиентами и ₽2.1M MRR — именно про эту модель: 14 проектов, 18 соц-аккаунтов, один человек в проде. Чинить фундамент под такие команды было приоритетом.
Фикс №3: Stripe-кредиты возвращаются в кошелёк
Третий фикс уйдёт незамеченным у большинства, но был самым раздражающим у тех, кого касался. Симптом: пользователь оплачивает подписку (Starter или Pro), Stripe пишет invoice.paid, наша вебхук-функция отвечает 200 — а в кошельке кредиты не появляются. Поддержка чинила руками, средний lag — 2-4 часа.
Корень — изменение в форме события invoice.paid в API-версии 2026-04-22.dahlia. До апреля Stripe слал subscription_id в invoice.subscription — короткий путь, по которому мы матчили платёж с подпиской. С 2026-04-22.dahlia это поле задепрекейтили в пользу invoice.parent.subscription_details.subscription, а в 2026-05-27.dahlia (текущая стабильная) invoice.subscription начало уходить в null для новых вебхуков.
Наш обработчик месяц молча работал на null-пути: «нет subscription → не из подписки → выходим». Кредиты копились в журнале Stripe, а в нашей БД оставались на старом балансе.
С 10 июня:
stripe-webhookчитает subscription id по новой иерархии: сначалаinvoice.parent.subscription_details.subscription, затемinvoice.subscription_details.subscription, и только потом legacyinvoice.subscription— для пользователей, чьи аккаунты ещё на старой API.- Все пропущенные начисления за май-июнь забэкфилены. Список — в
web_admin_eventsпоkey='stripe_backfill_2026_06_10', всего 18 транзакций. - Тест добавлен в
__tests__/payments/stripe-webhook-invoice-paid.test.ts— три фикстуры: legacy (до 2026-04-22), переходная (2026-04-22), новая (2026-05-27+).
Если вы платили Starter или Pro между 5 и 10 июня и не видите начисленные кредиты — напишите в саппорт со ссылкой на платёж, доначислим в течение 10 минут.
Сравнение с рынком и что это даёт командам
Коротко — где Welder сейчас на одной шкале с рынком по мульти-аккаунту:
| Сервис | Аккаунтов на платформу | Серия → конкретный аккаунт | Лейбл YouTube-канала |
|---|---|---|---|
| Welder (10 июня 2026) | ∞ | через web_series_social_bindings, OLDEST-fallback | имя канала из videos.insert |
| Submagic (июнь 2026) | 1 | нет, один на платформу | имя аккаунта из OAuth |
| SendShort (июнь 2026) | 1 | нет, один на платформу | |
| OpusClip Pro (июнь 2026) | до 5 | «дефолтный», без явного binding | имя канала |
| HeyGen Publish (март 2026) | до 3 | через тэги | имя аккаунта |
Цифры сверены с официальной документацией каждого сервиса на 10 июня 2026.
Практический эффект:
- Агентство с 4-6 клиентами, где SMM ведёт сразу несколько каналов из одного дашборда — фикс №2 закрывает риск, что 7-й клиент подменит вам историю публикаций по первым шести.
- Сольный креатор с двумя ниша-каналами на одном Google-аккаунте (
@kuhonnye-istorii+@russkaya-kuhnya, например) — теперь они различимы в подписи без лишних кликов. - Кросс-постер на 7 платформ (мы писали гайд про это) — fallback больше не угоняет ваши серии в свежий аккаунт. Можно явно прописать «эта серия пишет только в Reels Канал A и TikTok Канал B», и резолвер уважит.
Один SMM на 6 faceless-каналов теперь масштабируется до 10-12 без ручного аудита привязок. Это не маркетинговый слоган, а арифметика: если вы тратили 2 часа в неделю на «проверить, что куда ушло» — этот цикл закончился.
Что под капотом и куда движемся в июле
Для тех, кому интересны технические детали:
lib/social/resolve-binding.ts—ORDER BY connected_at ASCвместоDESC, плюс новый шаг self-heal: после первой публикации записывается явный binding вweb_series_social_bindings.lib/youtube/oauth-callback.ts— при ошибкеinsufficientScopesпишет кодscope_missingвweb_admin_events, чтобы саппорт видел проблему за минуту.lib/payments/stripe-webhook.ts— новая утилитаextractSubscriptionId(invoice)с тремя fallback-путями (parent.subscription_details.subscription→subscription_details.subscription→subscription).
Полный лог — в docs/STATE.md под iter-431, iter-432, iter-434.
Что запланировано на июль:
- YouTube
readonlyscope в OAuth consent screen. Уберёт необходимость ждать первой публикации, чтобы получить имя канала. Требует ревью Google Cloud — ETA 18-22 июля. - Per-series биллинг. Сейчас кредиты тратятся из общего кошелька — для агентств это бухгалтерская боль. Появится возможность подключить к каждой серии свой
metadata.client_idи видеть расходы по клиентам. - Bulk-релоад биндингов. Кнопка «перепривязать всё к выбранному аккаунту» — нужна тем, кто мигрирует со старого аккаунта на новый.
Если у вас есть конкретный сценарий, который мы не закрыли этим релизом — напишите в саппорт с тегом «agency-flow», такие кейсы попадают в backlog приоритетным цветом.
Сделать первое в свой аккаунт
Самый быстрый способ проверить, что у вас новая логика — открыть карточку любой серии и проверить блок «Соцсети серии». Если там стоят аккаунты по имени, а не e-mail, вы уже на новой версии.
Если тестируете Welder впервые — заведите серию через дашборд, привяжите TikTok и YouTube, запустите первый ролик в voiceover-режиме. Тариф Starter с 9 июня 2026 стоит 990 ₽/мес, и его хватает на 5-7 коротких роликов в неделю — этого достаточно, чтобы прогреть автопостинг и увидеть, что серии действительно различают аккаунты.
Welder закрывает одну болячку за раз, не «революционно меняя подход». Если это не то, что вам нужно — есть 12 альтернатив на рынке, мы их не скрываем.