在Gemini协议上创建博客

Lobsters Hottest 工具

摘要

这篇文章提供了使用Gemini协议创建博客的详细指南,Gemini协议是一种替代互联网协议,提供更简单、以人为中心的网络体验,无需JavaScript或CSS。

<p><a href="https://lobste.rs/s/qxzjqt/creating_blog_gemini">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/09/21 12:25

# 在 Gemini 协议上创建博客 来源:https://brennan.day/creating-a-blog-in-gemini/ 欢迎阅读我关于 Gemini 以及另类互联网和小型网络的第三篇博文!这将是我迄今为止关于这个主题最实用、最详细的文章——我也很兴奋能深入探讨这个话题。 如果你想了解 Gemini 的历史和基本概念,请阅读我的第一篇文章:《Gemini、Gopher 与 Finger。天哪!超越 HTTPS 的另类互联网》(https://brennan.day/gemini-gophers-and-fingers-oh-my-alternative-internets-beyond-https/)。我的第二篇文章《老网与另类网:使用 Gemini、Gopher 和终端工具构建低配置日常互联网指南》(https://brennan.day/oldnets-and-altnets-a-guide-to-building-a-low-spec-daily-internet-out-of-gemini-gopher-and-terminal-tools/)则更侧重于让人们使用旧硬件连接到普通互联网的资源。 然而,本文将只专注于 Gemini(也涉及一点 Gopher 和 Spartan)。因为我意识到自己之前只是浅尝辄止地探索了这个协议的可能性。虽然这里会链接一些有趣的阅读内容,但本指南更侧重于探讨在 Gemini 上进行创作、社交和互动的可能性。 但如果你想快速了解核心内容:Gemini 是一个现代、极简的互联网协议,是 `https://` 的替代品,需要使用不同的互联网浏览器来访问。它由一位化名为 Solderpunk 的开发者于 2019 年创建,不使用 HTML,每个页面都用 Gemtext(https://geminiprotocol.net/docs/gemtext-specification.gmi)编写,这是一种只有标题、链接和列表的精简格式。所有连接都通过 TLS 在端口 1965 上运行,采用一次请求、一次响应,然后连接关闭的模式。 ## 在 Gemini 上写博客:为什么? 首先,我想回答为什么有人想在 Gemini 上写博客,而不是使用广泛流行、主流的明网(即 `https://`)。 首先,你可能读过这样的头条新闻:《AI 智能体可能很快接管互联网》(https://www.popularmechanics.com/science/a73753782/ai-agent-taking-over-internet/),这听起来相当可怕。虽然我认为这种措辞是危言耸听,但我们都同意,最近互联网上生成式 AI 和智能体的增加确实令人烦恼。使用 Gemini,你可以避免这一切。那里没有真正的商业利润(而且它本身也很小众),这意味着那个网络空间里只有人类。 其次,你无需担心 JavaScript 或 CSS 的技术复杂性。见鬼,你甚至不用担心 HTML。你所有的内容都将采用 Gemtext 格式(https://gmi.sbgodin.fr/htmgem/docs/tutogemtext-en.gmi),你可以理解为它是 Markdown 的极简版本。(我也创建了一个易于使用的转换器:https://gemtext.brennan.day/。)这意味着你不必花费时间和精力去担心设计或排除故障。这让你能专注于写作本身,并更加用心地经营博客。没有其他干扰。 当然,对某些人来说,这正是网络创作的*乐趣*所在。但如果你想在学习所有这些之前就将作品发布到网上,Gemini 是一个绝佳的起点。正如我之前所说,作为一名网络编织者,你需要身兼多职,同时努力学习如何成为更好的作家、网络开发者和用户体验设计师可能会让人不堪重负,从 Gemini 开始在这方面会有所帮助。你随时可以在以后将你的文件转换为 Markdown,并用它们来创建正规的网页。 现在,并不是说有什么在明网上能做而在 Gemini 上不能做的事,但我喜欢用流行的、小巧的墨水屏阅读器 XTeink(https://www.xteink.com/)来作比较,它是设计放在手机背面的。你能在更大的手机屏幕上轻松阅读相同的内容吗?可以,但墨水屏阅读器的设计有其局限性。这是一种不同的,且可以说更好的体验。 或者,你可能希望在保持公开的同时拥有更多隐私。你在 Gemini 空间里的受众要小得多,因此也更有针对性。 最后,正如我在之前的帖子中提到的,与普通互联网相比,Gemini 对资源的需求要小得多。你完全可以通过基于终端的浏览器使用 Gemini,这意味着任何无法处理现代网络的硬件设备都可以再次连接到网络。 ## Gemini 上的博客平台 有许多令人惊喜的平台可以让你加入并开始拥有自己的 Gemini 胶囊(capsule)。 如果你想要一个同时存在于明网和 Gemini(以及 Gopher)上的博客,我推荐 SmolPub(https://smol.pub/),它界面非常简单,只需支付 5 美元即可享受终身服务。 Tildeverse(https://tildeverse.org/)是另一个入门的好选择(并且拥有许多其他功能!),尽管这需要你熟悉一下终端和 `ssh`。像 Tilde.pink(https://tilde.pink/)这样的服务器是纯 Gemini 的,会自动给你分配一个胶囊,而 Tilde.town(https://tilde.town/)则需要你使用一个命令(https://tilde.town/wiki/editing-your-homepage/gemini.html)来设置胶囊,例如 `town request-gemini`。类似地,SDF/Freeshell.org(https://freeshell.org/)会给你一个 Gopher 站点。 也有一些 Gemini 专用的平台,例如 flounder.online(https://flounder.online/)和 Midnight Pub(https://midnight.pub/),不过这些平台需要手动审批才能加入。 Gemcities(https://gemcities.com/)是我偶然发现的另一个平台。虽然它看起来*有点*随性,但它也是免费的,可以让你立即访问并使用一个相当易用的网页界面来创建和管理你的胶囊。 当然,你也可以托管自己的 Gemini 服务器(https://kevinboone.me/gemini_vps.html),关于这方面的资源(https://html-chunder.neocities.org/posts/self-hosting-a-gemini-capsule/)也有很多,但这超出了本文的范围。 ## 你的胶囊里放什么? 答案与制作任何网页一样:放任何你想放的东西!(https://brennan.day/webmaster-a-anifesto-for-everyone/)但这里有一些想法供你参考: 在这一点上,少即是多,比互联网上其他任何地方都更甚。你只需要一个文件夹和一些纯文本文件。像这样扁平的文件夹结构就足以开始了: ``` index.gmi # 根目录文件(默认在基础 URL 提供的文件, # 是 Gemini 中 index.html 的等价物) about.gmi # 你是谁 now.gmi # 你当前在做什么 hobbies.gmi # 你感兴趣的事物 links.gmi # 你发现的有趣的非 https 链接 quotes.gmi # 你想保留和分享的名言 gemroll.gmi # 你想分享的其他人的胶囊 gemlog/ index.gmi # gemlog(日志)的根文件(见下文) 2026-09-15-thoughts.gmi # 一篇博客文章 2026-09-01-update.gmi # 另一篇博客文章 等等... ``` ## Gemlog(日志) Gemini 胶囊中的博客通常被称为 gemlog,虽然没有官方的 gemlog 规范,但社区已经形成了一些共识: - 文件命名:按日期命名文章,通常是 `YYYY-MM-DD-slug.gmi` 和/或组织在 `/posts/` 或 `/gemlog/` 目录下。 - 索引页(index.gmi):一个反向时间顺序排列的文章链接列表,每个链接通常以日期为前缀: ``` # 我的 Gemlog => /gemlog/2026-09-15-thoughts.gmi 2026-09-15: 一些想法 => /gemlog/2026-09-01-update.gmi 2026-09-01: 一次更新 ``` - Atom 订阅源:许多 gemlog 还会发布一个 `atom.xml`,这样人们就可以用 RSS 阅读器订阅,因为 Gemini 本身没有原生的订阅机制。 - 首行作为标题:约定(非规范)是,一篇文章的首行是一个 `#` 标题,当文章被聚合到其他地方时,该标题用作其标题。 ## 其他实用功能 大多数为 Gemini 构建的浏览器,如 Bombadillo、Lagrange 和 Kristall——也都可以与 Gopher、Spartan 等协议交互,并支持旧的 `finger://` 协议。你可以像添加任何其他链接一样在你的胶囊中添加一个 finger 链接: ``` => finger://[email protected] 用 Finger 查询我的当前状态 => finger://example.com/kenny .plan 文件 ``` 你还可以拥有 `.plan` 和 `.project` 文件,这些文件也可以放在 `now.gmi` 页面上。 - `.plan` → 当前状态,本周正在做什么(最初的微型博客) - `.project` → 一行话描述“这个账号/这个人是关于什么的” Michael Lazar 为 Gemini 胶囊制定了一份规范(https://portal.mozz.us/gemini/mozz.us/files/rfc_gemini_favicon.gmi?),建议使用一个名为 `favicon.txt` 的纯文本文件,其中包含单个 Unicode 表情符号。支持该规范的客户端会检查该目录下的 `favicon.txt` 来解析任意页面的 favicon,如果不存在,则会查找父目录(与查找 `robots.txt` 的逻辑相同)。在你的胶囊根目录(例如 🍇)放置一个 /favicon.txt 可以为整个网站启用该功能,并且你可以在子目录中用不同的文件覆盖它。不过,支持是可选的,并且取决于客户端。 同样,在胶囊中添加一个 `.well-known/security.txt` 也是一个好习惯,就像在任何其他网站上一样,内容可以如下: ``` Contact: mailto:[email protected] Contact: https://example.com Expires: 2027-12-31T23:59:00.000Z Encryption: https://example.com Policy: https://example.com Preferred-Languages: en, es Canonical: https://example.com/.well-known/security.txt ``` Gemini 也支持 `robots.txt` 文件,但 Gemini 请求不携带用户代理字符串,因此,按用途定义虚拟用户代理的惯例取代了指定特定机器人的方式: ``` User-agent: archiver Disallow: /private/ User-agent: indexer Disallow: /drafts/ User-agent: researcher Disallow: User-agent: webproxy Disallow: / User-agent: * Disallow: /cgi-bin/ ``` ### ASCII 艺术 由于你主要被限制在文本范围内,Gemini 是一个沉浸于 ASCII 艺术的绝佳借口。这里有很棒的文本转 ASCII 生成器(https://patorjk.com/software/taag/),有他人创作的 ASCII 艺术作品档案馆(https://www.asciiart.eu/),还有帮助你绘制自己 ASCII 艺术的工具(https://www.asciiart.eu/ascii-draw-studio/app)。见鬼,甚至 WikiHow(https://www.wikihow.com/Create-ASCII-Art)都有一个相当不错的教程。 现在,我喜欢了解到这一点:尽管 Gemini 如此极简,仍然有可以注册并与其他用户互动的网站。 其中最受欢迎的两个例子是 **Gemini BBS** 和 **Station**。还有一个很棒的植物游戏叫做 **Astrobotany**,它也以类似的方式运作。 这些互动都没有破坏 Gemini 的设计原则,相反,它是通过四个基本原语的巧妙组合构建的。Gemini 服务器不是从磁盘读取文件,而是可以被配置为运行脚本,脚本接收请求 URL(包括查询字符串),然后将 gemtext 写入标准输出(stdout): 1. 客户端请求一个 URL。 2. 服务器回复状态码 10(或 11 用于敏感输入,如密码)以及一个提示字符串,而不是内容。 3. 客户端显示一个带有该提示的单行文本输入框。 4. 用户输入的任何内容都会被 URL 编码并作为查询字符串附加,然后客户端使用该字符串重新请求相同的 URL。 Gemini 没有 cookie,因此跨访问的持久状态通过 TLS 客户端证书来处理。服务器可以为某个路径返回状态码 60("需要证书"),客户端要么生成一个证书(在用户许可下),要么提交已有的证书。然后服务器将任何存储的状态与该证书的指纹关联起来。这就是胶囊在会话之间“记住你”的方式,无需密码或 cookie。 关于更多信息,我建议查看 solderpunk 的仓库 gemcert(https://git.sr.ht/~solderpunk/gemcert)。 ## 开始使用 现在,开始使用 Gemini 可能会让人困惑。首先,你需要一个真正的 Gemini 浏览器,因为你常用的浏览器不支持该协议。Lagrange(https://github.com/skyjake/lagrange)是我使用的并推荐的浏览器;我喜欢它的一点是侧边栏有一个“结构”选项,可以让你像文件目录一样查看你所在的网站。但 Amfora(https://github.com/makew0rld/amfora)是一个很好的基于终端的选项。 除此之外,上述一些托管选项需要使用终端和 SSH,所以如果你以前从未生成过密钥对,GitHub 的 SSH 密钥生成指南(https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)是一个很好的教程,即使你不是在 GitHub 上使用它。至于实际编写 gemtext,官方规范(https://geminiprotocol.net/docs/gemtext-specification.gmi)很不错,因为它内容不多。 在大多数情况下,你需要使用终端来编辑和向你的胶囊添加内容,除非你使用像 SmolPub(https://smol.pub/)或 Gemcities(https://gemcities.com/)这样提供网页界面的平台。这意味着你需要熟悉命令和基于终端的编辑器,我知道这听起来很吓人。对于编辑器,我推荐 Micro(https://micro-editor.github.io/),它比 vim 或 nano 友好得多,因为它支持鼠标操作,并且有熟悉的快捷键,如 `ctrl+s` 保存和 `ctrl+q` 退出。如果你是命令行新手,LinuxCommand.org 的“学习 Shell”(https://linuxcommand.org/lc3_learning_the_shell.php)专门针对终端进行讲解,而麻省理工学院的《你计算机科学教育中缺失的一学期》(https://missing.csail.mit.edu/)则是一门不错的广泛速成课程。 关于更多信息和浏览器选项,我推荐 Awesome Gemini(https://github.com/kr1sp1n/awesome-gemini)仓库。 ## 在 Gemini 上使用 CGI 脚本 Gemini 没有像 PHP 或服务器端 JavaScript 这样的东西,但它支持传统的 CGI(通用网关接口)脚本。服务器不是提供一个静态的 `.gmi` 文件,而是运行一个脚本,并将其打印到标准输出的内容作为响应返回给客户端。 响应格式是:第一行是状态码和 MIME 类型,一个空行,然后是正文。这是一个用 Python 写的“你好”示例: ``` #!/usr/bin/env python3 print("20 text/gemini") print() print("# 你好!") print("欢迎来到我的 Gemini 空间小角落。") ``` 将其保存为 `hello.cgi`,使用 `chmod +x` 命令使其可执行,然后将其放入服务器用作其 cgi-bin 的目录中。大多数支持 CGI 的 Gemini 服务器,包括 Jetforce(https://github.com/michael-lazar/jetforce)(即前面提到的 Astrobotany 所使用的服务器),会通过像 QUERY_STRING 和 PATH_INFO 这样的环境变量传递请求详情,因此你可以构建搜索框、留言簿或其他任何交互功能。如果你有兴趣了解更多,有很多 CGI 脚本教程(https://xitzin.readthedocs.io/en/latest/how-to/cgi-scripts/)可供参考。 ## 复兴主义的复兴 Gemini 并非一项古老技术被重新启用,它诞生于 2019 年。但它大量借鉴了 Gopher 的精神、BBS 以及数十年历史的 phlogosphere(Gopher 博客圈)。然而,令人遗憾的是,在我研究和浏览 Gemini 空间的过程中,我发现死链或废弃链接的数量几乎与活跃链接一样多。我理解这一点。使用一个完全不同的协议会有很多阻力。我承认,我自己也花了好几个月才最终认真对待它。我认为 Gemini 永远不会“起飞”,而且我很为此感到高兴,真的。这是一个在不拔掉网线的情况下,就能拥有的宁静而平和的互联网替代空间。我计划更多地使用它,而且我打算开始专门在该协议上发布一些我的作品。 但我确实希望你考虑尝试一下,这可能是网上唯一没有成群结队的生成式 AI 机器人惹恼大家的地方,谁知道呢。 --- ## 链接 以下是我

相似文章

用 Python 构建一个 Gemini 服务器

Lobsters Hottest

一篇分步讲解如何用最少依赖在 Python 中构建 Gemini 协议服务器的博客文章,从在 1965 端口监听原始 TCP socket 开始,讲解底层 socket API。文章还将 Gemini 协议作为一种极简、无跟踪的 Web 替代方案进行了介绍。

掌握全新的 Gemini Notebook

YouTube AI Channels

Gemini Notebook(原名 Notebook LM)已发展成为一个完整的研究与学习平台,用户可以让 AI 基于自己的来源,分析差距,并将信息转化为播客、视频、幻灯片、测验和信息图表。