利用 Taotoken 为 Markdown 静态站点生成器添加 AI 摘要功能
1. 静态站点与 AI 摘要的工程场景
现代静态站点生成器(如 Hugo、Hexo、Next.js 等)通常以 Markdown 文件作为内容源,在构建时渲染为 HTML。对于内容维护者而言,为每篇文章手动编写摘要既耗时又难以保持风格统一。通过集成 Taotoken 的 API,可以在构建流程中自动调用大模型生成摘要,实现以下典型需求:
- 在
npm run build等构建命令执行时,扫描_posts或content目录下的 Markdown 文件 - 提取文章正文内容(通常为 YAML front matter 之后的部分),将其发送至 Taotoken 的文本补全接口
- 将返回的摘要写入 front matter 的
description或excerpt字段,供模板引擎调用 - 在持续集成(CI)环境中安全地管理 API Key 和用量预算
2. Node.js 构建脚本集成方案
以下示例展示如何在 Node.js 环境中使用 Taotoken 的 OpenAI 兼容 API 实现摘要生成。假设项目使用 CommonJS 模块系统,且已安装openaiSDK 和gray-matter用于解析 Markdown front matter:
const { OpenAI } = require("openai"); const fs = require("fs/promises"); const path = require("path"); const matter = require("gray-matter"); const client = new OpenAI({ apiKey: process.env.TAOTOKEN_API_KEY, baseURL: "https://taotoken.net/api", }); async function generateExcerpt(markdownPath) { const file = await fs.readFile(markdownPath, "utf-8"); const { content, data } = matter(file); // 截取前 2000 字符作为生成上下文 const context = content.slice(0, 2000); const completion = await client.chat.completions.create({ model: "claude-sonnet-4-6", // 可从模型广场选择适合摘要的模型 messages: [ { role: "system", content: "你是一位专业的编辑,请用 1-2 句话概括以下文章的核心内容,语言简洁专业。", }, { role: "user", content: context }, ], max_tokens: 100, // 限制生成长度以控制成本 }); return completion.choices[0]?.message?.content; } // 遍历 posts 目录处理所有 Markdown 文件 async function processPosts() { const postsDir = path.join(__dirname, "content/posts"); const files = await fs.readdir(postsDir); for (const file of files.filter(f => f.endsWith(".md"))) { const fullPath = path.join(postsDir, file); const excerpt = await generateExcerpt(fullPath); const { content, data } = matter(await fs.readFile(fullPath, "utf-8")); await fs.writeFile( fullPath, matter.stringify(content, { ...data, excerpt }) ); } } processPosts().catch(console.error);3. 成本控制与工程化实践
Taotoken 的按 token 计费模式特别适合此类批量处理场景,以下是关键控制点:
用量预估与限制
- 通过
max_tokens参数严格限制生成长度(示例中设为 100) - 在脚本中添加
console.log输出每次调用的 token 消耗 - 对于大型站点,建议先在小样本(如 10 篇文章)上测试 token 消耗
环境与密钥管理
- 将 API Key 存储在 CI 环境变量中(如 GitHub Actions 的 secrets)
- 本地开发时使用
.env文件并加入.gitignore - 考虑为构建专用 Key 设置用量告警(可在 Taotoken 控制台配置)
错误处理增强
- 为 API 调用添加重试逻辑(示例未展示,可用
try-catch包裹) - 对网络超时等异常情况保留原始 front matter 不破坏构建流程
- 记录失败案例到日志文件供后续排查
4. 进阶集成思路
对于更复杂的站点架构,可考虑以下扩展方案:
- 缓存机制:将已生成的摘要存储在本地 JSON 文件中,避免重复处理未修改的文章
- 增量构建:结合 Git 变更检测,只处理新增或修改的 Markdown 文件
- 多语言支持:通过调整 system prompt 和模型选择支持多语言摘要生成
- 前端增强:在开发模式下添加"重新生成摘要"的实用按钮,方便内容编辑
Taotoken 的模型广场提供了多种适合文本摘要任务的模型选择,开发者可根据内容类型和语言需求灵活切换。