跳转到主要内容

一个专注于数据所有权和持久性的博客引擎。

项目描述

一个专注于 数据所有权持久性 的博客引擎。

它有何不同?

Nefelibata(葡萄牙语为“漫步云端的人”)是一个专注于保留您内容的IndieWeb静态网站生成器,使用Python 3编写。为了实现这一目标,它的工作方式与常见的静态网站生成器类似,以下是一些设计决策:

  • 每篇帖子都是一个独立的目录。实际帖子以Markdown格式编写并存储为电子邮件消息,每篇帖子都可以有自己的图像、CSS、JavaScript和其他文件。

  • 帖子被转换为HTML和/或Gemtext,生成的网站仅由静态文件组成。没有数据库,所有额外数据都存储在JSON文件中。

  • 当构建网站时,外部图像将被本地镜像,链接将被修改以指向本地资源。

  • 外部链接将被保存到Wayback Machine,并附上存档链接和存档日期,以便读者即使链接在未来发生变化也能跟踪原始链接。网站和新帖子也将自动存档。

  • 网站可以通过插件架构发布到不同的位置。目前,nefelibata支持发布到Amazon S3、FTP和任意命令。

独立网络

Nefelibata承认,大多数互动发生在Twitter或Mastodon等社交网络中。该引擎可以配置全局或按帖子的公告者,这些公告者将发布到社交网络,链接回内容,以便人们可以在网站之外对帖子进行评论和讨论,这是独立网络中的一个称为POSSE(在您的网站上发布,在其他地方同步)的概念。

当网站重建时,公告者将收集任何回复并本地存储,以便在您的帖子旁边显示评论。可以宣布多个社交网络上的帖子,并将评论聚合和保存。

入门

安装

首先使用虚拟环境安装nefelibata

$ pip install nefelibata

这将向您的路径添加一个名为nb的程序。

如果您不耐烦,可以运行

$ nb init blog
$ cd blog
$ nb build

然后查看build/目录中的文件。

创建网站目录

安装nefelibata后,您应该初始化一个将存储您内容的目录

$ nb init blog
$ ls blog
nefelibata.yaml  nefelibata.yaml.full  posts/  templates/

在这里,文件nefelibata.yaml存储您网站的配置。目录posts/将包含您的帖子,并且应该已经有一个名为first/的目录,其中包含一个初始帖子。目录templates/包含用于生成博客及其Atom源和Gemini胶囊的模板。支持多个主题的HTML构建器,但目前只有一个名为“minimal”。

配置您的网站

文件nefelibata.yaml.full包含描述所有部分的注释。

创建新帖子

您的骨架博客已经有一个名为first/的帖子。您可以编辑该帖子,或者使用以下命令创建一个新帖子

$ nb new "Hello, World!"

(注意,您始终需要从您的网站目录中运行nb命令。)

这将创建一个名为hello_world/的新目录,其结构如下

posts/hello_world/
posts/hello_world/index.mkd

如果您设置了EDITOR环境变量,nefelibata将自动打开您的编辑器来编辑index.mkd。您可以将任何自定义CSS、JavaScript或图像放在相应的目录中,或者将任何其他额外文件放在hello_world/目录中。

您会注意到index.mkd文件有标题和正文。该文件实际上以RFC 5322格式存储为电子邮件。最重要的标题包括

  • subject:这是您帖子的标题。

  • summary:这是您帖子的一行摘要。

  • keywords:逗号分隔的关键字/标签。

此外,一旦帖子发布,将添加一个date标题。

构建网站

要构建您的网站,只需运行

$ nb build

这会将Markdown文件转换为HTML和/或Gemtext,并构建网站,包括标签和分类的页面。稍后,一旦帖子已宣布到社交网络,此命令还将收集回复并将它们作为YAML文件本地存储。

发布网站

最后,您可以使用以下命令发布您的网站

$ nb publish

这将使用任何配置的发布者(如S3)上传网站,并将新帖子宣布到社交网络。

接下来是什么?

如果您想自定义网站,请查看您网站内的 templates/ 目录。这些模板使用 Jinja2 编写。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

nefelibata-0.4.tar.gz (82.4 kB 查看哈希值)

上传时间

构建分发

nefelibata-0.4-py2.py3-none-any.whl (68.4 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持