顺便说一下,我不知道你们论坛有多忙,或者 x/twitter 的 onebox(一键预览)发帖频率如何,但基本的免费 Twitter 方案确实适用于默认的 onebox——它只是将速率限制在每 15 分钟大约 1 次 onebox 请求。我让它在一个相对繁忙的论坛上运行,它似乎只在人们试图在一个帖子中发布多个 onebox 链接时才限制。
不幸的是,我刚发现这会阻止很多 YouTube(例如 https://youtu.be/)被嵌入,因为这些链接会重定向到 YouTube。
人们发布的 YouTube 链接远多于他们发布的 X 帖子。所以我暂时禁用了它,现在将简单地把 x.com → twitter.com 替换掉。
我们很少提到 x/twitter 帖子。并且 Twitter.com 的 onebox 可以工作,但 X.com 不行。
你确定吗?我指的不是这个组件,而是使用免费的 Twitter 开发者计划 API 令牌且禁用此组件的原生 onebox。你说你正在被托管——他们应该能够像在这里的 Meta 上那样设置默认的 oneboxing。
我在两个不同的自托管站点上免费获得了丰富的 X/Twitter 嵌入功能。每当 X/Twitter API 出现任何问题时,我就会使用此组件,然后根据需要打开和关闭它。
我为 X 设置了一个免费的开发者账户。我想知道如何获得用于嵌入的 Twitter one box?
我已启用原生 Twitter 嵌入组件,运行良好,但我希望以深色模式发布。
在某些较新的 Discourse 版本中,禁用 Twitter/X onebox 似乎效果不佳。
此外,此主题组件在已存在的 onebox 上也无法正常工作。
我添加了一些功能,除了用原生嵌入替换纯链接外,还会查找 Twitter onebox,然后执行相同的操作。
这意味着不再需要禁用 oneboxing 或重建旧帖子了。
感谢你!抱歉等了一个月。我那时候在住院躺在病床上,现在才出院并看到这个 PR。合并了!
大家好……有人遇到这个插件的问题吗?看起来是哪里出错了,现在无论是 x.com 还是 twitter.com 的嵌入内容都不显示了。是不是有新版本的 Discourse 导致它失效了?
确认截至今天(2026年9月26日)该问题依然存在。
在我的实例中,该组件现在会主动抛出错误,而不仅仅是静默失败——Discourse 显示了仅限管理员可见的横幅:
由于您站点上的某个帖子装饰器抛出错误,帖子可能未正确渲染。由 “Twitter/X Einbindung” [Twitter/X 嵌入] 引起。
这种情况反复发生,并触发了全站范围的 Safe Mode 风格警告,而不仅仅是嵌入缺失。Discourse 版本:2026.10.0。
除了完全禁用该组件外,有人找到修复方法或变通方案吗?
在解决了我的服务商的一些 IPv6 问题后,我将改用 Nitter 嵌入,并彻底退出 Twitter。
自马斯克因持续的机器人垃圾信息问题而大幅限制 API 访问以来,所有形式的外部访问都受到了影响。
我理解其商业和安全方面的决策,但无法理解为何缺乏官方的外部嵌入选项。
我知道 Nitter,但它不如直接复制和粘贴原始 X 链接那样方便。
Discourse 项目团队或许可以考虑主动联系 X Corp,并提供一个官方插件。
否则,我真心看不到这里实现互操作性的未来。而 X 无疑是西方世界最重要的新闻平台
请注意,Nitter 上个月收到了停止侵权函,可能很快就不再可用:X sends cease-and-desist to open source project Nitter over alleged scraping | TechCrunch
看起来挺靠谱的。他们没有任何解释或恢复措施就删除了大量数据,背后的利益动机实在令人不寒而栗。
我链接的那个社区项目比现在更活跃。Codeberg,由社区驱动。
除非 X 做出改变,而 Zed 不再在那里做实际的艰苦抓取工作。
嗯,抵抗者会一直抵抗,直到能够抵抗为止。自闭症人士(Inventati)为人类服务了几十年,直到无法再继续下去。
我认为 Nitter 至少还能在没有进一步问题的情况下维护一年。他们只是将流量推送到大型服务上,而自托管并没有那么大的影响。
我创建了这个组件的一个小型分支,修复了安全模式下的崩溃问题(由于缺少属性导致的未处理空值),以及另外几个小问题:GitHub - terraboss/discourse-x-native-embed: X embedding · GitHub — 目前运行良好,欢迎反馈。
更新:我的分支的第一个里程碑
感谢大家的反馈。目前为止,我的分支成功避免了安全模式横幅的出现。我目前对原因的最佳猜测仍然是缺少 data-onebox-src 属性,但这尚未得到确认,因此请将其视为实验性功能。
自那以后,我添加了一些功能,其中一些是之前在这个帖子中大家希望看到的:
- 推文上方的纯链接会在推文加载后消失(如果无法连接到 X,则链接会保留)
- 推文加载时页面跳动减少,且不再出现重复的嵌入
- 嵌入内容的深色模式支持
- Discourse 未进行 onebox 处理的纯 X 链接现在也会被嵌入
- 引用包含 X 链接的帖子时,不再用推文替换你的引用
原始创意完全归功于 @Lhc_fl。该分支在构建过程中得到了一些来自 Claude 的 AI 协助。我很乐意听到其他人使用后的反馈。
在长主题中向上滚动时滚动位置会跳动
当在长主题中向上滚动时,一旦较旧的、屏幕外的帖子被重建(可能与帖子隐藏机制有关),页面会反复向下跳动一点。这种干扰足够严重,以至于很难从底部向上阅读长帖子。
我最初怀疑是主题组件的问题(原生 X/Twitter 嵌入在重新加载后调整大小),但即使没有这些组件,这种跳动似乎也会发生。向下滚动时没有显示同样的问题,只有向上滚动时才会出现。
Discourse 版本:最新且最棒的版本。有没有其他人遇到这个问题,或者这是一个已知的问题?
也许一个替代方式是增加一个全局替换词,把 https://x.com 替换成 https://fixupx.com?
谢谢你的建议!不过恐怕像那样的替代方案并不适合这个项目。这个组件的核心目的就是从 X/Twitter 直接嵌入推文。像 fixupx 这样的第三方代理并不能解决根本问题,反而只是在中间多加了一层:又多了一个可能出错或随时变更的服务,也多了一个能看到请求的第三方。此外,它还会改写帖子中存储的链接。
我真正希望的是拥有推文的本地副本。这样有助于提升加载速度和缓存效果,让嵌入内容在故障时更具韧性,同时还能保留一份内容存档。但这需要付费 API 访问权限,并且需要明确版权和内容责任方面的相关事宜,而这两者我都无法提供。因此,目前该组件将继续采用直接嵌入的方式。
如果某人只需要普通的链接预览,并且对使用代理没有异议,那么通过监控关键词进行替换或许可以满足这一需求,但这与该组件的目标不同。
