写作与内容组织
Jant 的发布模型只有一个基本单位:帖子。帖子分三种格式(Note、Link、Quote),可以挂附件,也可以打分。连着写的几条帖子能串成一个 Thread,讲同一个主题的多个 Thread 能归进一个 Collection。其余都是这两层结构的延伸。
帖子格式
Note
正文是你自己写的文字时用 Note。日记、随笔、状态、随手记都属于这一类。
标题可选。有标题时 Jant 用它生成 URL slug,没有就生成一个随机短串。
Link
分享别人的内容、附上自己的看法时用 Link。例如:朋友写的一篇博客、刚发现的好玩工具、值得听的播客单集、读到的一篇好文章。
URL 和标题必填,评论可选。
Quote
引用别人的话时用 Quote。例如:书里的一段话、文章里让你停下来的某一句、电影台词。
引文正文必填,作者和出处链接可选。引文会用独立的样式排版。
附件
帖子可以挂附件,也可以拖动调整顺序。分两类:
- 媒体附件:图片、视频、音频,以及 PDF 等文档。
- 文本附件:附加的 Markdown 块。适合放不该混进正文的内容——完整的代码片段、AI 对话原文、长引用。
评分
帖子可以打 1 到 5 分。适合书、电影、专辑、餐厅这类有明确评价对象的内容。评分显示在帖子页和列表里。
发布设置
发布相关的设置分在两处:
- Publish settings(主 Publish 按钮旁边):可见性(Public / Hidden from Latest / Private,整条 Thread 共用),以及 Save as draft 和 Drafts。
- 日期与链接(每条帖子右上角,默认显示
Now · /…):点开可以改这一条的发布时间和链接。鼠标移到帖子上时出现,窄屏上一直可见。
发布日期(Published on)
帖子默认用当前时间发布。补录旧内容时——从别的平台搬过来的文章、很久以前写下的东西——点开右上角的日期与链接,把 Published on 改成更早的日期,帖子就会按那个时间排进时间线。首页 Latest 和归档都按发布时间排序。
留空就用当前时间。只能选今天或更早:Jant 不做定时发布,未来的日期会被拒绝。
自定义链接(Custom link)
帖子的 URL 默认由标题生成。日期与链接里的 Custom link 可以在发布前指定 slug,例如把 /my-first-blog-post 换成 /hello。留空则自动生成。
这里只适合发布前定好链接。发布后再改这里,旧地址会直接 404——Jant 不会自动跳转。帖子已经发布又想换 URL,改用下面的自定义 URL,它会把旧地址自动 301 跳到新地址。
预览草稿
保存帖子后打开 Drafts,在对应条目上选 … → Preview。Jant 会在新标签页打开 /preview/{slug},Note、Link、Quote、媒体和 Thread 的渲染与正式页面完全一致,页面顶部标明这是草稿预览。
预览地址必须登录后才能访问,也不会被索引或缓存。
Threads
Thread 把多条帖子按时间顺序串在一起:先写一条根帖,之后每一条都用 Reply 挂在它下面。
适合边想边写、分多次更新的内容:一开始未必想清楚,但希望读者按顺序读完。
整个 Thread 共享根帖的可见性(Public / Hidden from Latest / Private),但 Featured 状态各自独立:某条 Reply 可以单独标成 Featured,根帖不必跟着标。
在帖子详情页底部点 Reply,就能接着往下写。
在列表页上,一个 Thread 占一张卡片,是折叠的:根帖、开头两条 Reply,然后是最后三条,最新的排在底部。六条以内的 Thread 放得下,会整个显示。更长的就把中间收成一个「3 more posts」链接,点它会打开被折叠的第一条。Feed 用同一套折法,所以一个 Thread 在阅读器里和在站点上读起来一样。Thread 自己的页面始终显示全部帖子。
Collections
Collection 是一组你自己策展的内容,地址是 /{slug}。同一个 Thread 可以同时属于多个 Collection,根帖和它的所有 Reply 始终属于同一批 Collection。
适合:
- 长期跟进的主题(例如某本书的读书笔记)
- 阅读、观影、听歌等清单
/now之类的站点状态页(nownownow 提倡的「我现在在做什么」,相当于一个长期慢慢更新的 story)
Collection 有自己的页面和 feed。
想要一个成员跟着规则走、而不是靠你手工归类的合集,见智能合集。
URL 里也可以组合多个 Collection:
/collections/reading+movies/collections/notes+links+quotes
这是一个跨多个 Collection 的组合视图:
- 取这几个 Collection 里 Thread 的并集
- 同一个 Thread 属于其中多个 Collection 时只出现一次
- 命中的 Thread 完整展示,包含所有已发布的 Reply
- feed 同样支持:
/collections/{slug1}+{slug2}/feed
智能合集
智能合集是一种成员由条件决定的合集。条件只写一次——「所有 Quote」「2024 年带图的 Note」——符合的帖子自动在里面,以后写的新帖子也一样。
对读者来说它就是一个合集:地址在 /{slug},有标题、描述、帖子列表和自己的 feed。数字下面多一行说明它靠什么收录,那一行可以点,落到显示同一批帖子的归档页,想再筛的人有地方去。
从 Collections → ⋯ → 新建智能合集 创建。弹窗会随着你改条件实时数出命中多少,存之前就能看见这条条件做了什么。
条件之间是「且」——帖子要同时满足全部条件。每个条件最多出现一次:
| 条件 | 选出 |
|---|---|
Collection |
属于某个合集的 Thread |
Format |
Note、Link 或 Quote |
Title |
有标题或没标题的帖子 |
Year |
某一年发布的帖子 |
Media |
带任意附件、不带附件,或带某类附件 |
Replies |
有回复的 Thread,或没有回复的单帖 |
Visibility |
公开、精选,或不在 Latest 里显示 |
一条条件都不写也能存,那就是「收录全部帖子」。
智能合集做不到的事
成员由条件决定,所以合集能做的有几件事它没有对应物:
| 合集 | 智能合集 | |
|---|---|---|
| 单独加一篇进去 | 撰写时勾选 | 条件说了算 |
| 在里面置顶 | 可以 | 不行 |
| 手工排序 | 可以 | 不行 |
| 排序方式 | 你选 | 你选 |
| 布局 | — | 列表或网格 |
| 出现在 Collections | 是 | 是 |
| 能放进导航 | 是 | 是 |
因为第一行,撰写帖子时的合集选择器里没有智能合集。那里没有什么可选的:帖子靠符合条件进去,不靠被加进去。
永远是公开的
没有私密的智能合集。Visibility 只能取「公开」「精选」「不在 Latest 里显示」,所以智能合集的页面不会对访客回 404。
这和私密帖子会不会漏出来是两件事。每个页面用的是和合集页完全一样的逐帖规则:访客只看得到本来就看得到的东西,你登录之后看到的条数可能更多。
想给自己留一个私密的筛选视图,就去 /archive 筛完收藏那个地址——它本来就能用,你失去的只是给它起名字。
创建独立页面(About 页)
Jant 没有单独的「页面」类型——独立页面就是一篇 Hidden from Latest 的帖子。以 About 页为例:
- 新建一篇 Note,标题写
About,正文写你的介绍。 - 发布状态选 Hidden from Latest:页面从首页 Latest 隐去,但直链仍然有效,也不进默认
/feed。
发布后页面就在 /about,slug 由标题生成。想让访客找到入口,到 设置 → 外观 → 导航栏 加一条指向 /about 的链接。
可见性与策展
发布状态
帖子有四种发布状态:
Public:出现在首页 Latest,未登录的访客也能看到。Hidden from Latest:从首页隐去,但内容仍然公开——直链有效,所在 Thread 可加入 Collection,也会出现在/archive里。Private:仅登录后可见。Draft:未发布,仅自己可见。
/archive 是站点上所有公开帖子的完整索引。
Featured
把一条帖子标成 Featured 会做两件事:这条帖子出现在 /featured 页面,它所在的 Thread 进入默认 /feed。同一个 Thread 即使标了多条,页面和 feed 里也只出现一次。
- Featured 页面按 Thread 归拢选中的帖子,Thread 之间按其中最新一条 Featured 帖子的发布时间排序
- Featured feed 在
/featured/feed - 主
/feed可以指向 Featured 或 Latest,默认指向 Featured
为什么默认 feed 是 Featured
Jant 的核心设计之一是把「发布」和「广播」拆开。
发布指内容出现在你的站点上——可以通过直链访问,可以加入 Collection,可以继续写成 Thread。
广播指内容进入订阅者的 RSS feed。
这两件事在 Jant 里是独立的:
- 标记为
Hidden from Latest的帖子会从首页隐去,但内容本身仍然公开:直链有效,所在 Thread 可加入 Collection,也会出现在/archive里。 Public的帖子会出现在首页 Latest,但不会进入默认的/feed。- 只有标记为
Featured的内容,才会进入/feed,推送给订阅者。
所以细碎的记录可以照发:它们出现在站点上,但不打扰订阅者。只有你认为值得分发的内容才进入 feed。
默认行为一览
下表假设默认配置 MAIN_RSS_FEED=featured。
| 帖子状态 | 直链可访问 | Latest | /archive |
默认 /feed |
Collection |
|---|---|---|---|---|---|
Public 且 Featured |
是 | 是 | 是 | 是 | 是 |
Public |
是 | 是 | 是 | 否 | 是 |
Hidden from Latest |
是 | 否 | 是 | 否 | 是 |
Private |
仅登录后可见 | 否 | 仅登录后可见 | 否 | 仅登录后可见 |
Draft |
否 | 否 | 否 | 否 | 否 |
把 MAIN_RSS_FEED 改成 latest 后,默认 /feed 的内容跟着变,但 Hidden from Latest 的帖子仍然不会进入。
URL 与浏览页面
Jant 使用可读 URL:
- 帖子:
/{slug} - Collection:
/{slug} - 组合 Collection 视图:
/collections/{slug1}+{slug2}+{slug3} - 搜索:
/search - 归档:
/archive - Featured 页面:
/featured
Feed:
/feed使用你当前配置的主 feed/latest/feed返回出现在首页 Latest 的帖子(不含Hidden from Latest)/featured/feed中,每个包含 Featured 帖子的 Thread 只返回一个条目/archive/feed返回全量公开帖子(包含Hidden from Latest),支持?year=、?format=、?collection=、?media=等筛选参数/{slug}/feed返回单个 Collection 的 feed/collections/{slug1}+{slug2}/feed返回组合 Collection 的 feed
每个页面都会在 HTML head 里声明 feed,阅读器和浏览器插件不用你手动给地址也能嗅探到。Collection 页和归档页把自己的 feed 排在最前,并带上当前筛选条件,所以在某个页面上订阅,拿到的就是这个页面显示的内容。
Jant 动态生成的 Atom feed 都有同一段发布缓冲:新帖子和 Reply 立即显示在网页上,默认五分钟后才进入 feed。这段时间可以用来检查刚发布的内容、改错,或者赶在 feed 阅读器抓取前撤回。详见配置 § Feed 默认值。
自定义 URL
除了默认 slug,帖子、Collection、归档页都可以设置自定义路径,也可以配置跳转规则。这些都在 设置 → 高级 → 自定义 URL 里管理(路径 /settings/custom-urls)。
一共有四种类型:
- 帖子:给某篇帖子换一个新的主要路径,原 slug 自动 301 跳到新路径。
- 合集:给某个 Collection 换一个新的主要路径,原 slug 同样自动 301 跳过去。
- 归档:把一组归档筛选条件固定成一个路径,例如
/quotes实际渲染/archive?format=quote&visibility=public&view=list。 - 重定向:把任意路径跳到另一个路径或外部 URL。
给帖子或 Collection 设置自定义路径
进入 设置 → 高级 → 自定义 URL,点右上角的新建自定义 URL:
- 路径:你希望对外暴露的新路径,例如
blog/my-post(不用写开头的/) - 类型:选「帖子」或「合集」
- 目标 slug:要指向的帖子或 Collection 的 slug
保存后,新路径成为这条内容对外的主要 URL(permalink、feed、og:url 都用新路径),原 slug 自动 301 跳过去,已经传播出去的旧链接不会失效。
适合把从其他平台搬过来的内容挂回原来的链接。
自定义归档视图(已退役)
自定义 URL 原来有一种「归档」类型:一个短路径,存着手打的归档查询串。智能合集取代了它——结果一样,但不用把 format=note&title=none 敲进输入框,还多了标题、描述和 feed。
已有的归档地址继续能用,也没有让它们失效的打算。每条记录的菜单里多一项转成智能合集,点开的弹窗已经填好条件,你可以先起一个真正的名字再保存。查询串读不完整的记录——或者筛的是「私密」,那是智能合集永远做不到的事——照旧能用,只是不提供这一项。
跳转规则
- 路径:已经传播出去的旧路径
- 类型:选「重定向」
- 目标地址:目标路径(
/new-path)或完整的外部 URL(https://...) - 重定向类型:
301(永久)—— 不打算改回的搬迁,搜索引擎会更新索引302(临时)—— 短期调整,搜索引擎仍记原路径
关于直接修改 slug
如果你只是想换一个对外展示的路径,优先用上面的自定义 URL(类型选「帖子」或「合集」)——原 slug 会自动跳过去,不用额外操作。
确实要在编辑器里直接改 slug 字段的话,注意 Jant 不会保留旧地址,旧路径会变成 404。这时要自己到 设置 → 高级 → 自定义 URL 加一条 301,把旧路径指向新 slug。
保留路径
下列一级路径是 Jant 自身在用的入口,不能用作自定义 URL:
featured、latest、signin、signout、setup、settings、dash、api、feed、search、archive、media、pages、reset、collections、compose、preview、new、static、assets、_assets、healthz、readyz
如果旧站点已经有帖子或自定义 URL 直接使用 /preview,原记录会保留,但旧链接会变成 404。/preview 前缀下已有的自定义 URL 也不再按旧记录解析,因为整个命名空间现在属于登录后的草稿预览。Jant 不会自动生成替代 slug 或跳转,需要新的公开地址就自己改掉冲突的帖子或自定义 URL。
自定义路径只能包含小写字母、数字、连字符(-)、斜杠(/)和点(.)。首字符必须是字母或数字。
快速入口
登录状态下访问 /new 直接进入撰写页面,适合存成浏览器书签。未登录会先跳到登录页,登录后回到 /new。