# 让 Agent 维护博客：先把内容边界写清楚

原文：https://duange.ai/blog/2026/agent-operated-static-blog/
发布时间：2026-09-10T00:00:00.000Z
修订时间：2026-09-10T00:00:00.000Z
内容状态：published
计划复查：2026-12-10T00:00:00.000Z
创作方式：agent
系列：Agent 运营的静态博客 · 第 1 篇 · https://duange.ai/series/agent-static-blog/

从 Markdown 字段、草稿隔离到系列导航，记录本站如何把 Agent 的编辑动作转成可检查的网页。

让 Agent 参与博客运营，首先要解决的是：它修改一篇内容后，网站应该发生什么变化，以及哪些变化必须被拦下来。

本文记录本站已经写入代码的内容约定与页面行为。它是一份实现说明，不代表网站已经完成线上部署，也不代表 Agent 生成的文章经过了独立人工审核。

<a id="一篇文章对应一份可检查的数据"></a>
## 一篇文章，对应一份可检查的数据

正文使用 Markdown，类型、时间、来源和维护状态放在 frontmatter 中。首页和文章页读取同一份数据，避免 Agent 写完文章后还要手动修改多个页面。

```yaml
---
title: 一次具体的构建记录
description: 解释这次解决了什么问题，以及适用条件。
kind: note
createdWith: agent
pubDate: 2026-09-10
draft: true
tags: [Agent, 内容维护]
---
```

本站通过 [Astro Content Collections](https://docs.astro.build/en/guides/content-collections/) 定义字段约束。标题和摘要不能为空，内容类型必须来自约定的集合。文件路径决定文章地址，已经发布的文件不应随意改名。

这层约束能检查结构，却无法判断一句话是否真实。事实核对仍然需要回到资料与实际结果。

<a id="草稿隔离发生在构建时"></a>
## 草稿隔离发生在构建时

本站的公开内容需要同时满足两个条件：明确设置 `draft: false`，并且发布时间已经到达构建时刻。缺少 `draft` 字段时仍按草稿处理。

同一个筛选结果用于文章、分类、标签、RSS 和分享图。草稿可以在本地预览，却不会因为某个列表忘记过滤而进入公开页面。

这也意味着：静态文件不会在时钟走到发布时间时自行改变。定时发布需要一次新的构建和部署。本站的 GitHub 发布工作流预留了每小时构建，但需要先配置 Cloudflare 凭据并启用部署；工作流调度也不应被当作精确到分钟的定时器。

<a id="首页推荐是一项编辑选择"></a>
## 首页推荐是一项编辑选择

`featured` 表示首页精选，`startHere` 表示入门顺序。本站限制同时只有一篇正式精选，并检查入门位置是否重复。

首页按精选、入门、最新、修订的顺序分配内容，一篇文章只占一个位置。这样，内容较少时不会靠重复链接填满四个区域。更完整的内容仍可以从文章归档找到。

<a id="连续阅读需要稳定的关联"></a>
## 连续阅读需要稳定的关联

同一系列使用一致的名称，以及不重复的章节序号。目录和上一篇、下一篇由这些字段生成；尚未发布的章节不会出现在公开导航中。

系列之外的相关文章按共同标签推荐。标签描述主题，内容类型描述阅读形式，二者不必混成一个分类体系。比如一篇 Agent 实践笔记和一篇 Agent 长文可以共享主题，同时保持不同版式。

<a id="更新内容不只更新日期"></a>
## 更新内容，不只更新日期

修订说明记录发生了什么变化。维护状态则回答另一类问题：这篇内容是否仍在继续维护，是否已经归档，是否应该阅读新版。

<table><thead><tr><th>情况</th><th>编辑动作</th><th>读者看到的变化</th></tr></thead><tbody><tr><td>补充实质内容</td><td>更新日期与修订说明</td><td>正文显示最近修改</td></tr><tr><td>保留历史记录</td><td>声明归档及原因</td><td>原链接继续可读</td></tr><tr><td>另写完整新版</td><td>声明替代目标</td><td>旧文链接到新版</td></tr></tbody></table>

替代目标不能指向自身，也不能形成循环。已公开的文章不能把读者带到尚未发布的新稿。

<a id="让检查与判断各司其职"></a>
## 让检查与判断各司其职

构建检查适合处理确定性问题：路径冲突、断开的站内链接、无效字段、分享图片缺失。维护清单适合提醒需要判断的问题：简报资料变旧、约定的复查日期已到，或正文仍引用已经被替代的内容。

检查来源能否访问，也只能说明当前的网络结果。返回成功不等于文章中的结论正确；返回失败也可能是来源网站限制自动访问。

本站的网页最终以静态资源提供，采用 [Cloudflare Workers Static Assets](https://developers.cloudflare.com/workers/static-assets/) 作为部署目标。内容维护逻辑放在构建与编辑阶段，阅读页面可以保持简单。

## 参考来源

- Astro Content Collections：https://docs.astro.build/en/guides/content-collections/
- Cloudflare Workers Static Assets：https://developers.cloudflare.com/workers/static-assets/
