Встроенный твит от Twitter

Кстати, я не знаю, насколько активен ваш форум и как часто публикуются onebox-ссылки из X/Twitter, но бесплатный базовый план Twitter работает для стандартных onebox-ссылок — он просто ограничивает запросы примерно до одного каждые 15 минут. У меня это работает на довольно активном форуме, и ограничение срабатывает только тогда, когда люди пытаются опубликовать более одной onebox-ссылки в одном сообщении.

3 лайка

К сожалению, я только что обнаружил, что это блокирует встраивание множества ссылок на YouTube (например, https://youtu.be/), поскольку они перенаправляют на YouTube.

Люди публикуют гораздо больше ссылок на YouTube, чем постов в X. Поэтому я пока отключил эту опцию и буду просто вручную заменять x.com на twitter.com.

2 лайка

Мы крайне редко упоминаем посты X/Twitter. Onebox-сообщения для Twitter.com работают, а для X.com — нет.

Вы уверены? Я имею в виду не этот компонент, а нативный onebox, использующий бесплатный токен API разработчика Twitter, при отключённом этом компоненте. Вы говорите, что у вас хостинг — они должны иметь возможность настроить стандартный onebox, как это реализовано здесь, на Meta.

У меня на двух разных самохостинговых сайтах бесплатно работает встраивание X/Twitter с богатым контентом. Я использую этот компонент только тогда, когда API X/Twitter по какой-то причине перестаёт работать, и просто включаю или выключаю его по мере необходимости.

5 лайков

Я создал бесплатный аккаунт разработчика для X. Подскажите, как получить одностраничный блок Twitter для встраивания?

У меня нормально работает компонент Native Twitter Embed, но я хочу публиковать посты в тёмной теме.

Похоже, что в некоторых последних версиях Discourse отключение onebox для Twitter/X работает некорректно. Кроме того, этот компонент темы некорректно работает с уже существующими onebox.

Я добавил функционал, который, помимо замены простых ссылок на нативное встраивание, также ищет onebox для Twitter и выполняет ту же операцию.

Это означает, что больше нет необходимости отключать oneboxing или пересобирать старые сообщения.

PR здесь Feature: support existing oneboxes by communiteq · Pull Request #1 · Lhcfl/discourse-twitter-native-embed · GitHub

3 лайка

Спасибо! Извините за месяц ожидания. Я тогда был в больнице, лежал в палате, и только сейчас выписался и увидел этот PR. Влит!

5 лайков

Всем привет… у кого-нибудь есть проблемы с этим плагином? Похоже, что-то сломалось, и он снова не показывает встраиваемые объекты ни с x.com, ни с twitter.com. Была ли новая версия Discourse, которая это сломала?

1 лайк

Подтверждаю, что проблема всё ещё не решена на сегодняшний день (26 сентября 2026 г.).

В моей инсталляции компонент теперь активно выбрасывает ошибку, а не просто молча завершает работу — Discourse показывает баннер, доступный только администраторам:

:warning: Записи могут отображаться некорректно, поскольку один из декораторов записей на вашем сайте вызвал ошибку. Причина: «Twitter/X Einbindung» [встраивание Twitter/X].

Это происходит постоянно и вызывает предупреждения в стиле Safe Mode по всему сайту, а не просто отсутствие встраивания. Версия Discourse: 2026.10.0.

Кто-нибудь нашёл решение или обходной путь, кроме полного отключения компонента?

Я перейду на встраивание Nitter после решения некоторых проблем с ipv6 у моего провайдера и полностью откажусь от Twitter.

1 лайк

С тех пор как Маск резко ограничил доступ к API из-за продолжающегося спама ботами, все формы внешнего доступа к платформе страдают.

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

Я знаю Nitter, но он не так удобен, как копирование и вставка оригинальных ссылок X.

Было бы разумно, если бы сама команда проекта Discourse обратилась к X Corp и предложила официальный плагин.

В противном случае я, честно говоря, не вижу будущего для интероперабельности здесь. И X, без сомнения, является самой важной новостной платформой в западном мире

Обратите внимание, что Nitter в прошлом месяце получил требование о прекращении деятельности и, возможно, продержится недолго: X sends cease-and-desist to open source project Nitter over alleged scraping | TechCrunch

2 лайка

Выглядит правдоподобно. Они удалили огромное количество своих данных без какого-либо объяснения или возможности восстановления; интересы, стоящие за этим, действительно мрачны.

Комьюнити-проект, на который я ссылался, живее всех. Codeberg, управляемый сообществом.

Пока X ничего не изменит, а Zed уже не будет там, чтобы выполнять основную тяжёлую работу по сбору данных.

Ну, сопротивление сопротивляется, пока это возможно. Автистик (Inventati) работал на благо человечества на протяжении десятилетий, пока это было ещё возможно.

Я думаю, что Nitter будет поддерживаться как минимум ещё год без каких-либо проблем. Они лишь отправляют данные на крупные сервисы, а самохостинг не оказывает такого влияния.

1 лайк

Сделал небольшой форк этого компонента, который исправляет сбой в безопасном режиме (незащищенный null при отсутствии атрибута), а также несколько мелких проблем: GitHub - terraboss/discourse-x-native-embed: X embedding · GitHub — пока всё работает отлично, буду рад обратной связи.

1 лайк

этот компонент не сломан и работает на моём сайте как ожидается.

3 лайка

Обновление: первый этап развития моей ветки

Спасибо за обратную связь. Пока что моя ветка успешно скрывает баннер режима безопасности. Наиболее вероятной причиной по-прежнему остаётся отсутствие атрибута data-onebox-src, но это не подтверждено, поэтому относитесь к этому как к экспериментальному решению.

С тех пор я добавил несколько вещей, некоторые из которых предлагались ранее в этой теме:

  • обычная ссылка над твитом исчезает, как только твит загружен (она остаётся, если к X нет доступа)
  • меньше «прыжков» во время загрузки твитов и отсутствие дублирующихся встраиваний
  • тёмная тема для встраиваний
  • голые ссылки на X, которые Discourse не превратил в onebox, теперь тоже встраиваются
  • цитирование поста со ссылкой на X больше не заменяет вашу цитату твитом

Вся заслуга за первоначальную идею принадлежит @Lhc_fl. Ветка была создана с некоторой помощью ИИ от Claude. Буду рад узнать, как это работает у других.

Позиция прокрутки прыгает при прокрутке вверх в длинных темах

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

Сначала я подозревал компонент темы (нативные встраивания X/Twitter меняют размер после перезагрузки), но, похоже, прыжок происходит независимо от этого. При прокрутке вниз такая проблема не наблюдается, только при прокрутке вверх.

Версия Discourse: последняя и самая новая. Кто-нибудь ещё сталкивался с этим или это известная проблема?

Возможно, альтернативным решением было бы добавить глобальное правило замены, чтобы подставлять https://fixupx.com вместо https://x.com?

3 лайка

Спасибо за предложение! Боюсь, однако, что подобная замена не подходит для этого проекта. Вся суть этого компонента заключается в прямой встраивании твитов из X/Twitter. Сторонний прокси, такой как fixupx, не решает корневые проблемы, а лишь добавляет ещё один промежуточный слой: ещё одну службу, которая может выйти из строя или изменить работу, и ещё одну сторону, которая видит запросы. Кроме того, это привело бы к переписыванию ссылок, хранящихся непосредственно в постах.

То, что мне действительно хотелось бы видеть, — это локальная копия твитов. Это помогло бы с временем загрузки и кэшированием, сделало бы встроенные элементы устойчивыми к сбоям и позволило бы сохранить архив контента. Но для этого потребовался бы платный доступ к API и прояснение вопросов авторских прав и ответственности за контент, чего я не могу предоставить. Поэтому пока компонент ограничивается прямым встраиванием.

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