tag、categories、keywords和description每次发布前都要想如何填好、填对。一方面要避免分类混乱,另一方面要记得已有的分类有哪些。用AI命令:扫全站归纳词表 → 只从词表选填 → 按正文生成 description/keywords 并写入。


Archetype 的现状

hugo new 的模板只有占位,没有「从已有里选」的机制,例如

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
---
date: '{{ .Date }}'
draft: true
title: '{{ replace .File.ContentBaseName "-" " " | title }}'
tags: []
categories: []
series: []
description: ''
keywords: []
---

每次发布前都要想如何填好、填对。一方面要避免分类混乱,另一方面要记得已有的分类有哪些。稍不留神就会新增一个相似的分类,作为强迫症患者倍感煎熬。

约束与实现

  • 词表:只从已有 tags/categories 里选,没有贴切的就留空,不造新词;series 不碰。
  • SEO:description 80~160 字、一句摘要,keywords 5~10 个、不堆砌。

Prompt 示例

这里我以cursor为例,通过新建一个command来实现。您可根据下面的prompt自行调整,用于自己的agent中。

Prompt 核心可写成:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Hugo 文章 Front Matter 补全与 SEO 优化

## 你的任务

对**当前打开或选中的这篇** `blog/content/posts/*.md` 文章,完成两件事并**直接修改该文件的 front matter**(不要只输出建议):

---

### 1. Taxonomy 补全(仅 tags、categories)

- 先读取本仓库 `blog/content/posts/` 下**所有** `.md` 的 front matter,归纳出已使用过的 **tags****categories**(各自去重列表)。
- 根据**当前文章**的标题与正文,**仅从上述已有词表中**选取贴切的 tags、categories 填入 front matter。
- **若已有词表中没有与本文贴切的项,则保持该字段为空列表或不修改**,不要自行发明新的 tag 或 category。
- **不处理 series**:series 由作者手动填写,不要添加或修改。

---

### 2. SEO:description 与 keywords

根据当前文章的**标题和正文**(尤其是开头与核心段落),生成并写入 front matter:

- **description**(meta description)  
  - 长度:约 80~160 字符(中文可偏短),适合搜索引擎展示。  
  - 内容:一句完整、可读的摘要,概括文章主题或结论;自然包含与主题相关的关键词,不堆砌、不与标题完全重复。  
  - 若已有 description 且你认为无需改动,可保留;否则用新生成内容覆盖。

- **keywords**  
  - 5~10 个与文章主题紧密相关的词或短语;与 description 和正文一致,不堆砌、不重复无意义词。  
  - 若已有 keywords 且无需改动可保留;否则用新生成内容覆盖。

---

## 约束与格式

- 只修改**当前这一篇**文章的 front matter,不改其他文件, 如过你无法确定当前用户所指的文章,请向用户询问, 不要进行任何修改操作。
- 保持该文件原有 front matter 格式(YAML `---` 或 TOML `+++`),只增改上述字段;其余字段(如 `date``draft``title``series`)保持不变。
- 若当前文件不是 `blog/content/posts/` 下的文章,或无法读取到任何 posts,则只输出说明,不修改任何文件。
- 完成后用一两句话说明:补全了哪些 tags/categories(若留空则说明原因),以及 description 与 keywords 的要点。

按自己站点约定改一改 prompt 即可复用;写作时专注正文,frontmatter 交给这条命令即可。