首页 > 解决方案 > 处理 HTML,更新然后保存在 Ghost 中

问题描述

我正在使用 Casper(默认主题)运行 Ghost(ghost.org,v2.1.4),并且我想发布播客。到目前为止,没有好的方法可以做到这一点。这是我要完成的工作:

  1. 当帖子包含指向 .mp3 文件的链接时,该帖子将成为播客
  2. 在此 URL 正上方注入一些代码,将显示与 HTML5 兼容的播放器(例如wavesurfer.js
  3. URL 本身会更新为正确的链接:“Download Episode #xxx”
  4. 一个适当的enclosure标签被创建并作为不可见的代码注入到帖子中(?)
  5. enclosure可用于 RSS 提要中的此特定帖子,以进行进一步的播客联合
  6. 这个更新的帖子被保存回数据库

我不太确定解决这个问题的最佳方法。我已经能够使用 Ghost 的content助手使第 1 点到第 3 点工作,所以只要帖子中有一个 .mp3 网址,它就会成为一个媒体播放器,下载链接如下。

如何在帖子中添加附件以使其出现在 RSS 中?之后获取整个 post 对象并将其作为更新发布回数据库的正确方法是什么(我当时使用的是 MySQL)?

任何建议/指针都非常受欢迎,因为文档有限并且并不总是清楚地完成这种事情。谢谢!

标签: javascriptrssghost-blogpodcast

解决方案


老实说,我不确定您正在寻找的内容是否可以通过当前的扩展点实现。而且,就像所有不可能的问题一样,我有一个不可能的解决方案:)

使用最新版本的 Ghost,如 2.1.4,您可以在“应用程序”下启用 Zapier。这使您可以选择创建基本上是基于 http 的回调的钩子(称为“zaps”)。就像可以在 Twitter 上自动分享新帖子的那个一样。

您可以创建自己的小服务,例如 Amazon Lambda 或 Azure Functions 服务。您可以设置一个 zap(已经为 Amazon Lambda 预建了一个,但您应该能够为 Azure Functions 甚至只是为任何简单的 HTTP 服务创建一个),在创建新帖子时调用它并转发调用 Amazon Lambda 或 Azure 函数(或您自己的服务)。然后,在被调用的服务中,您可以连接到您的 MySql 数据库,查询和修改帖子并将其保存回来。

所以基本上工作流程是这样的:

  1. 你创建一个帖子
  2. 帖子已保存,这会触发一个快速调用,比如说 Amazon Lambda
  3. 在 lambda 中,您从 MySQL 数据库中查询帖子
  4. 您修改帖子并将其保存回来

我知道这并不理想,而且看起来很复杂,但至少它是完全自动化的。

另一种选择是创建和注册一个自定义的 ghost 助手。这基本上是一段 Node.Js 代码,可以像 the{{content}}和其他助手一样被引用,并且可以被编程为将任意一段 html 输出到模板中。我目前正在编辑一系列关于我为我的 Ghost 博客创建的自定义助手的博文,但与此同时,您可以查看相关的 Github 存储库以获取代码,并查看wiki以获取最重要的知识。同样,这个解决方案非常复杂,一切都基于不受支持的、未记录的功能。


推荐阅读