PostWaver 支持智能自动生成文章 Frontmatter,让你专注于内容创作,而不必手动编写元数据。
在 Claude Code 环境中,PostWaver 会自动使用 Claude API 分析文章内容:
AI 生成的标签会自动保存到缓存,当 AI 不可用时:
详见:标签缓存系统
当 AI 不可用时,使用规则引擎自动生成:
# 一级标题 提取tech/, life/, notes/)💡 数据存储更新
所有配置现在存储在数据库中,不再使用 JSON 配置文件。标签缓存也存储在数据库的TagCache表中。详见 数据库存储文档。
配置数据存储在数据库的 Config 表中:
// 读取配置(替代 JSON 文件)
import { getConfig, setConfig, getConfigCategory } from '@content-hub/database'
// 获取单个配置
const commonTags = await getConfig('frontmatter', 'commonTags')
// 获取整个分类配置
const frontmatterConfig = await getConfigCategory('frontmatter')
// 设置配置
await setConfig('frontmatter', 'commonTags', ['javascript', 'react'])
await setConfigCategory('frontmatter', {
commonTags: ['javascript', 'react'],
autoGeneration: { enabled: true }
})
| 分类 | 说明 | 数据库表 |
|---|---|---|
frontmatter |
Frontmatter 自动生成配置 | Config |
main |
主题配置 | Config |
hexo |
Hexo 集成配置 | Config |
imageUpload |
图片上传配置 | Config |
tagCache |
标签缓存(自动学习) | TagCache |
标签缓存完全存储在数据库中,具有以下特点:
TagCache 表import { addTags, matchTagsFromContent, getPopularTags } from '@content-hub/database'
// 添加标签到缓存
await addTags(['react', 'hooks'], 'tech', ['component', 'state'])
// 从内容智能匹配标签
const matched = await matchTagsFromContent(content, 'tech', 5)
// 获取热门标签
const popular = await getPopularTags(20)
# 启动开发环境
pnpm dev
特性:
工作流程:
1. 启动 pnpm dev
2. 自动扫描 content/posts/
3. 检测每篇文章的 Frontmatter
4. 智能补充缺失字段
5. 写入文件(只在有修改时)
6. 启动服务器
# 扫描文章,在内存中自动补全缺失的 Frontmatter(不修改文件)
pnpm scan
说明:默认情况下,扫描会在内存中生成完整的 Frontmatter,但不会写回文件。这用于数据库索引和内容预览。
# 扫描并智能注入缺失的 Frontmatter 字段到文件
pnpm scan --inject
# 指定目录
pnpm scan --dir content/posts --inject
# 预览模式(不实际写入)
pnpm scan --inject --dry-run
智能注入特性:
示例:
原始文件(部分 frontmatter):
---
title: 我已经有标题了
tags:
- existing-tag
---
运行 pnpm scan --inject 后:
---
title: 我已经有标题了 # ✅ 保持不变
date: '2026-04-03T08:24:55.238Z' # ✅ 新增
tags: # ✅ 保持不变
- existing-tag
categories: # ✅ 新增
- tech
description: 文章描述... # ✅ 新增
draft: false # ✅ 新增
---
import { parsePost } from '@content-hub/core'
// 方式 A:自动补全但不保存(默认)
const post = await parsePost('content/posts/my-post.md', {
autoComplete: true // 启用自动补全
})
// 方式 B:智能注入模式(只补充缺失字段)
const post = await parsePost('content/posts/my-post.md', {
autoComplete: true,
saveToFile: true, // 保存到文件
injectMode: 'missing' // 只注入缺失字段
})
# 理解 JavaScript 闭包
闭包是 JavaScript 中一个非常重要但也容易让人困惑的概念。
## 什么是闭包?
闭包是指函数能够访问其词法作用域外的变量。
---
title: 理解 JavaScript 闭包
date: 2026-04-02T14:55:23.124Z
tags:
- javascript
- java
categories:
- test
description: 闭包是 JavaScript 中一个非常重要但也容易让人困惑的概念。
draft: false
---
# 理解 JavaScript 闭包
...
PostWaver 会自动检测运行环境:
检测条件:
ANTHROPIC_API_KEY 存在CLAUDE_CODE / VSCODE_PID 存在如果需要使用 AI 方案,请设置 API Key:
# 方式 1:环境变量
export ANTHROPIC_API_KEY="your-api-key"
# 方式 2:.env 文件
echo "ANTHROPIC_API_KEY=your-api-key" >> .env
通过数据库管理常用标签:
import { addTags, getPopularTags, exportCommonTags } from '@content-hub/database'
// 添加自定义标签到缓存
await addTags(['vue', 'nuxt', 'pinia'], 'tech')
// 导出常用标签列表(供 AI 参考)
const commonTags = await exportCommonTags(50)
// 更新配置
await setConfig('frontmatter', 'commonTags', commonTags)
定期使用 AI 生成文章,让标签缓存自动学习和积累:
// 查看当前标签统计
import { TagCacheService } from '@content-hub/database'
const stats = await TagCacheService.getStats()
console.log(`总标签数: ${stats.totalTags}, 总使用次数: ${stats.totalUsage}`)
TagCache 表首次使用时,建议先不保存到文件(saveToFile: false),检查生成结果后再启用。
问题:提示 “未找到 ANTHROPIC_API_KEY”
解决:
问题:标签或分类不准确
解决:
await addTags(['tag1', 'tag2'], 'tech')await getPopularTags(20)问题:数据库匹配的标签不相关
解决:
await addTags(['your-tag'], 'category', ['keyword1', 'keyword2'])await TagCacheService.cleanup(2)await TagCacheService.getStats()问题:生成的 Frontmatter 没有保存到文件
解决:
saveToFile 是否为 trueparsePost 时传入 saveToFile: true更新日期: 2026-04-03 版本: v3.2