功能说明
将此类结果:
(当您的服务器无法获取页面源代码,因此无法提取构建单框所需的标签时)
转变为这样:
它仅为单框功能提供了一条替代路径,以便在目标服务器拒绝连接时获取页面源代码并查找元数据。
它不会改变单框如何处理页面源代码以查找元数据并渲染单框的方式。
它的目的是允许您输入第三方 API 的详细信息和凭据,以获取页面内容,而不是直接向目标页面发起正常的 HTTP 调用。
原因
我发现我的服务器被禁止访问多个商业网站,导致单框无法渲染。它本质上利用了第三方 API 的可信度,有点像邮件服务。
为何具有成本效益
您可以使用相对便宜的 VPS,即使您的 IP 或用户代理被“列入黑名单”,仍能获得可靠的单框功能。
您不需要它的情况
如果您使用默认安装即可正常为所有目标内容生成单框,且所有用户都满意。
前提条件
您需要拥有一个合适的第三方 API 账户。
设置
onebox assistant api base address: https://api.embed.rocks/api/
上述示例使用的是 embed.rocks,但未来可能会添加对其他 API 的支持。目前,embed.rocks 性价比较高。
onebox assistant api base query: ?url=
onebox assistant api options: &skip=article,description,oembed,imextra&include=source
onebox assistant api page source field: source
您还需要输入由 embed.rocks 提供的 API 密钥。
参见下方示例:
此设置允许您忽略预取(检查直接爬取是否返回结果),而直接使用 API。

默认值为 OFF。
我建议将其设置为 TRUE。
当然,这成本更高,但通常能获得更好的结果,因为在某些情况下,由于不被信任,预取会被重定向到错误的页面。
支持信息
请记住,如果您之前尝试过对某个链接生成单框,Discourse 核心会缓存该结果。
您可以在链接末尾添加随机查询字符串以绕过缓存:https://mylink.com/todaynews?random=random
您还可以通过以下方式检查 API 是否响应,例如:
curl -X GET "https://api.embed.rocks/api/?url=https%3A%2F%2Fnews.bbc.co.uk%0A&skip=article,description,oembed,imextra&include=source" -H "x-api-key: %%%your-api-key%%%"
您需要使用类似 这样的网站(未作担保!)对您要调用的站点(即 url 参数值)进行 URL 编码。
已知限制
-
目前仅测试过一家提供商,尚未测试其他提供商。该提供商是 https://embed.rocks(我与该提供商无任何关联)。如果工作得到赞助,我很乐意考虑支持更多服务。
-
猴子补丁是在方法级别完成的。这会覆盖比实际需要更多的代码,从而增加了插件在核心更新后失效的风险。不过,我认为没有进一步减少这种风险的方法?
如何安装插件
请参阅此处指南:Install plugins on a self-hosted site
此仓库地址为:https://github.com/merefield/discourse-onebox-assistant
https://github.com/merefield/discourse-onebox-assistant
欢迎提供反馈。如果您觉得它有用,请在 GitHub 上给它点星。











) how to do this! Works a charm as far as I can see!