Pixiv - KiraraShss
1261 字
6 分钟
AI摘要打字机使用指南
AI 摘要
AI摘要打字机使用指南
博客为每篇文章详情页顶部配备了一个 AI 摘要打字机组件,读者打开文章时会以打字机动画形式逐字展示文章摘要,提升阅读体验。
功能概览
- 文章详情页顶部自动展示一段摘要
- 摘要以打字机动画逐字显示,标点处稍作停顿,模拟真人打字节奏
- 只在首次滚动到摘要区域时播放一次,不会重复触发
- 尊重用户系统设置:开启了「减少动态效果」的设备会直接静态显示全文
- 摘要内容优先读取你手动编写的
description字段,没有时才由 AI 补全
摘要来源
所有文章的摘要来源由 frontmatter 中的 descriptionSource 字段标记:
| 值 | 含义 | 页面显示 |
|---|---|---|
manual | 人工编写 | 📝 人工编写 |
ai | 千问 AI 生成 | 🧠 AI 摘要 |
你完全可以自己写 description 并标记 descriptionSource: manual,这样就不会被 AI 覆盖。
如何手动编写摘要
在你的文章 frontmatter 中添加 description 字段即可:
---title: 我的文章标题published: 2026-04-15description: "一段自然的、像博客导语一样的摘要文字,60~120字左右。"descriptionSource: manualtags: - 标签category: 分类---字段说明:
- description:文章的摘要内容。建议长度 60~120 字,自然、口语化,像博主在给读者做开场铺垫。
- descriptionSource:标记来源。
manual表示你自己写的,ai表示由脚本生成的。
使用 AI 补全缺失摘要
如果你的文章有 description 字段,脚本会直接跳过这篇文章,不会做任何改动。只有当你新增了一篇文章但没有写 description 时,补全脚本才会介入。
运行补全脚本
在项目根目录执行:
npx tsx scripts/fill-descriptions.ts脚本做了什么
- 扫描
src/content/posts/下所有.md和.mdx文件 - 找出所有 没有
description字段的文章 - 提取文章标题和正文前 2600 字作为上下文
- 调用千问(Qwen)API,用专门优化过的提示词生成一段「像人写的」摘要
- 将生成的摘要写入文章 frontmatter 的
description字段 - 同时添加
descriptionSource: ai标记 - 已有
description的文章 完全不动,不会覆盖你的手写内容
执行日志示例
[09:15:32] 🚀 AI 摘要补全脚本启动[09:15:32] 📡 模型: qwen-plus[09:15:32] 📂 文章目录: src/content/posts[09:15:32] 📊 扫描到 29 篇文章[09:15:32] 📋 27 篇已有描述 -> 跳过[09:15:32] 📝 2 篇缺少描述 -> 准备补全[09:15:33] ⏳ 正在生成: 技术分享/新文章.md[09:15:34] ✅ 补全完成: 技术分享/新文章.md[09:15:34] → 折腾了两天终于把Nginx反代配通了……[09:15:35] 🏁 执行完毕[09:15:35] 跳过(已有描述): 27 篇[09:15:35] 需要补全: 2 篇[09:15:35] ✅ 成功: 2 篇[09:15:35] ❌ 失败: 0 篇失败处理
- 单次 API 请求失败会自动重试最多 2 次,每次间隔递增等待
- 全部重试失败后,该文章会被标记为失败,不影响其他文章继续处理
- 脚本执行结束后会列出所有失败的文章,你可以修改后再次运行重试
- 请求之间间隔 600ms,避免触发 API 限流
AI 生成的摘要是「像人写的」吗?
我们在补全脚本中内置了一套精心设计的提示词(Prompt),让千问知道:
- 不要用「本文主要讲述了」「这篇文章介绍了」这种机械开头
- 不要堆砌概念、不要写成说明书提纲
- 要自然、口语化,像一个真实的博主在给读者做开场铺垫
- 技术文章保持清晰但别冷冰冰,生活感文章语气柔和一些
- 保留原作者的情绪和语气
所以生成出来的摘要更像这样:
折腾了两天终于把Nginx反代配通了,中间踩了三个莫名其妙的坑,趁热记下来免得下次再掉进去 😤
而不是:
本文主要介绍了Nginx反向代理的配置方法,包括常见的错误排查和解决方案。
如何在构建前自动补全
如果你希望每次 pnpm build 时自动补全新文章的摘要,可以修改 package.json 的 build 脚本:
{ "scripts": { "build": "npx tsx scripts/fill-descriptions.ts && node scripts/generate-icons.js && astro build && pagefind --site dist" }}这样每次部署前都会自动检查并补全缺失的摘要,无需手动运行脚本。
注意事项
- 脚本不上传 GitHub:
scripts/fill-descriptions.ts已加入.gitignore,因为它包含千问 API 密钥,确保不会泄露到公开仓库。 - 只写 description 不写 content:脚本只修改 frontmatter 中的
description和descriptionSource,不会触碰文章正文内容。 - 无描述不显示摘要:如果文章没有
description且未运行过补全脚本,文章页面不会显示摘要区域,不影响正常页面渲染。 - 千问模型选择:当前使用
qwen-plus(性价比之选),如有需要可切换为qwen-max(质量更好)或qwen-turbo(更快更便宜)。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
AI摘要打字机使用指南
https://blog.tsh520.cn/posts/博客指南/ai摘要打字机使用指南/