Appearance
为VitePress博客添加AI标签分类功能
随着博客文章增多,手动管理分类和标签变得繁琐,需要实现自动化解决方案
工作流程
文章创建 → AI分析 → 分类标签生成 → 文章更新 → 构建部署
技术实现
配置文件 (ai-config.yaml)
yaml
ai:
enabled: true
provider: "gemini"
model: "gemini-1.5-flash"
api_key: "${GEMINI_API_KEY}"
base_url: "${GEMINI_BASE_URL}"
prompts:
category_analysis: |
请分析以下文章内容,为其选择最合适的分类
可选分类:Development, System, Blockchain, Security, Trading, Others
请只返回一个分类名称,不要解释
tag_analysis: |
请分析以下文章内容,为其生成3-8个合适的标签
要求:英文小写、连字符连接、技术栈优先
请只返回JSON格式的标签数组
AI分析核心代码
javascript
async function analyzePost(postPath) {
const content = fs.readFileSync(postPath, 'utf-8');
const { data, content: markdownContent } = matter(content);
// 检查是否已分析
if (data.ai_edited === true) return null;
// 分析分类
const category = await analyzeCategory(data.title, markdownContent);
// 分析标签
const tags = await analyzeTags(data.title, markdownContent);
return {
category,
tags: validateTags(tags),
confidence: 0.9
};
}
VitePress集成
修改serverUtils.ts
,在构建时检查环境变量:
typescript
async function getPosts(pageSize: number) {
const enableAIAnalysis = process.env.ENABLE_AI_ANALYSIS === 'true';
if (enableAIAnalysis) {
console.log('🤖 启用AI分析模式...');
await batchAnalyzePosts();
}
// ... 继续处理文章
}
环境变量 (.env)
bash
GEMINI_API_KEY=your_api_key_here
GEMINI_BASE_URL=https://your-proxy.com/proxy/gemini
ENABLE_AI_ANALYSIS=false
使用方法
bash
# 普通开发(无AI分析)
bun run dev
# AI分析开发模式
bun run dev:ai
# 普通构建
bun run build
# AI分析构建
bun run build:ai
# 查看分析状态
bun run ai:status
# 手动分析文章
bun run ai:analyze
# 重置分析状态
bun run ai:reset