跳到主要内容

ai文章摘要

最后更新于:
AI 摘要

image-20260803072518.avif

AI文章摘要

版权

次功能来源于@Hyde大佬的《AI 摘要实现 https://seasir.top/posts/ai-summary-tutorial/》文章,感谢大佬的手把手文档❤️❤️❤️。

One在次基础上移植到自己博客了哈哈。

背景

1给我的站点新增 文章AI摘要功能。
2
3目前有的小伙伴已经实现的demo如下:
4https://seasir.top/posts/ai-summary-tutorial/
5deom文档:https://seasir.top/posts/ai-summary-tutorial/
6他这个站点事astro,文章AI摘要是 提前在构建阶段生成并存入文章元数据,前端页面读取后带动画展示,页面访问无需实时调用 AI,无额外接口开销。
7
8请帮我把他这个AI摘要功能给一直过来哦。

回答

对照 Firefly-hydeAI 摘要教程,本站可迁移点已经清楚。落地方案有两处会明显影响实现,请先选一下:

1. 构建期用哪家大模型?

  • A. 通义千问 / DashScope(与 Firefly 一致,QWEN_API_KEY
  • B. 任意 OpenAI 兼容接口(可配 BASE_URL / MODEL / API_KEY,默认仍指向通义)
  • C. 先不做自动生成,只做前端展示;摘要手写进 frontmatter

2. 自动生成何时跑?(选 C 可跳过)

  • A. 仅本地/手动:make gen-ai-summary,不进 CI(省费用、可控;Firefly 也是独立脚本)
  • B. CI/构建里自动给缺摘要的文章补全(需在 CNB 配密钥)

另外默认会按 Firefly 复用 frontmatter 的 description + descriptionSourceai / manual):有内容就展示卡片;生成脚本只补空 description。若你希望 AI 摘要与现有 SEO/卡片简介分开,可以说一声,会改成独立字段 aiSummary

开搞

101.
2B. 任意 OpenAI 兼容接口(可配 BASE_URL / MODEL / API_KEY,默认仍指向通义)
3
402.
5A. 仅本地/手动:make gen-ai-summary,不进 CI(省费用、可控;Firefly 也是独立脚本)
6
703.我希望 AI 摘要与现有 SEO/卡片简介分开,改成独立字段 aiSummary。AI摘要生成的只允许出现在文档页面的AI文章摘要那里,首页文章摘要只从原来默认的frontmatter的description字段拿内容就好。
8
9按上面我说的弄吧。

文章 AI 摘要已接好,按计划落地。

展示

  • 文档页 aiSummary → 正文上方卡片 + 打字机动画
  • 首页卡片仍只读 description
  • 样例页:/topics/klsjl(formatter)已填 aiSummary

生成(仅本地)

  1. .env 配置 AI_SUMMARY_API_KEY(可选 AI_SUMMARY_BASE_URL / AI_SUMMARY_MODEL
  2. 执行 make gen-ai-summary(不进 CI / build

主要文件

  • layouts/partials/ai-summary.html_ai-summary.scssai-summary.js
  • scripts/generate-ai-summaries.mjs
  • docs/single.html / list.html 注入点

测试

符合预期。

获取千问ai的key

来到阿里云百炼大模型页面,获取key:

https://bailian.console.aliyun.com/cn-beijing?tab=model#/api-key

问题:

还得是上ai,我是不是还要获取千问ai的key呀?

回答:

对。按现在这套默认配置,需要一个能调通义(DashScope)的 API Key。

怎么配

  1. 打开 阿里云百炼 / DashScope 开通并创建 API Key
  2. 在项目根目录 .env 里写上:
1AI_SUMMARY_API_KEY=sk-xxxxxxxx
2# 下面两项可不写,默认就是通义
3# AI_SUMMARY_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
4# AI_SUMMARY_MODEL=qwen-plus
  1. 本地执行:make gen-ai-summary
    只会给还没有 aiSummary 的文档补摘要,不进 CI,访问页面也不会再调 AI。

也可以不用千问
任何 OpenAI 兼容接口都行,改 AI_SUMMARY_BASE_URL / AI_SUMMARY_MODEL / AI_SUMMARY_API_KEY 即可。

没有 Key 时脚本会直接报错退出;前端卡片本身不依赖 Key——有 aiSummary 字段就会显示(formatter 那篇已有手写样例)。


本地跑脚本

命令报错:

 1Administrator@DESKTOP-7GA8OTS MINGW64 /d/hugo-teek-private (master)
 2$ make gen-ai-summary
 3bash: make: command not found
 4
 5Administrator@DESKTOP-7GA8OTS MINGW64 /d/hugo-teek-private (master)
 6$ 
 7
 8
 9
10我这里make命令报错呀

回答:

Windows 的 Git Bash 里通常没有 make,直接用 Node 就行:

1node scripts/generate-ai-summaries.mjs

你这边 Key 已经配好了,脚本能正常生成。

注意: 当前大约还有 900+ 篇没有 aiSummary。全量跑会很久、也比较耗额度。刚才试跑时已生成了一小批,我已把批量任务停掉。

建议:

  • 先给几篇重点文章手写 aiSummary,或只对部分目录再跑(需要的话我可以给脚本加「按目录 / 数量限制」)
  • 若要装 make:可用 Chocolatey choco install make,或装 MSYS2;不是必须

日常用这一句即可:

1node scripts/generate-ai-summaries.mjs

问题:

我本地站点docs目录下 _下划线开头的文章无需跑呀

回答:

已改好:路径里任意一段以 _ 开头都会跳过(如 _其它/_index.md)。

按当前仓库粗算:约 1499 篇会被跳过,剩余大约 40+ 篇才会生成。

重新跑:

1node scripts/generate-ai-summaries.mjs

效果:

 1Administrator@DESKTOP-7GA8OTS MINGW64 /d/hugo-teek-private (master)
 2$ node scripts/generate-ai-summaries.mjs
 3扫描目录: D:\hugo-teek-private\hugo-teek-site\content\docs
 4API: https://dashscope.aliyuncs.com/compatible-mode/v1  model: qwen-plus
 5共找到 1542 个 Markdown 文件
 6已跳过(_ 开头目录/文件,含 _index): 1499
 7已跳过(已有 aiSummary / 无 frontmatter / 正文过短): 23
 8需要生成: 20
 9
10处理: OneBlog (hugo-teek-site\content\docs\30.专题\10.开源项目\05.OneBlog\06.OneBlog.md)
11  生成成功: 最近终于把折腾了好几年的博客系统定下来了——OneBlog,一个真正让我愿意长期养下去的「文档库+博...
12
13处理: 迭代记录 (hugo-teek-site\content\docs\30.专题\10.开源项目\05.OneBlog\08.迭代记录.md)
14  生成成功: 最近忙着给 OneBlog 做一轮密集打磨:从首页加载性能、移动端滚动体验,到评论系统接入、友链申请...
15
16处理: 图床 vs 本地 (hugo-teek-site\content\docs\30.专题\10.开源项目\05.OneBlog\25.图床 vs 本地.md)
17  生成成功: 最近把博客里友链和导航栏的 155 张小 logo 全部从本地迁到了 OneImg 图床(背后是七牛...
18  
19  
20  完成! 成功: 20, 失败: 0

FAQ

前端本身有AI文章摘要组件嘛

问题:

能不能不通过ai,而是本地前端自己的vue或者其他什么框架,通过识别本文内容就可以提取aiSummary呢?


回答:

可以,但要分清两件事:“本地提取摘要”“真 AI 总结” 不是一回事。

🟢不调云端 AI 时,实际能做的

1. 前端规则提取(Vue/原生 JS 都行)
读正文 DOM / Markdown,用规则生成一段话,例如:

  • 取第一段 / 前 80~120 字
  • 取各级标题拼成提纲式导语
  • 简单“关键句”打分(句长、是否含关键词)再挑 1~2 句

优点:无 Key、无费用、访问也不打外部接口。
缺点:不是理解原文后的总结,质量通常不如通义那种导语;每次进页都算一遍(或算完缓存),也偏偏离你之前认可的「构建期写进元数据」模式。

2. 构建期本地提取(更适合 Hugo)
仍用现在的 aiSummary 字段和打字机卡片,但把 make gen-ai-summary 改成不调 API,只从正文抽第一段/关键句写回 frontmatter。
访问期依然零接口;首页 description 继续分开。这是静态站里最干净的「免 AI」方案。

3. 浏览器里真跑小模型(Transformers.js / WebLLM)
技术上可行,但要下几十~几百 MB 模型,弱网/手机不友好,和「轻量博客」不太配,一般不推荐。

🟢和当前实现的关系

现在已经是:aiSummary 进 frontmatter → 文档页卡片 + 打字机;生成脚本走 OpenAI 兼容接口。

若不想用 AI,不必上 Vue:Hugo 主题里加一段小 JS,或把生成脚本改成提取逻辑即可。Vue 不会 magically「读懂」文章,除非背后还是模型或规则。

🟢建议

目标做法
不要 Key、质量要求一般构建期本地提取 → 仍写 aiSummary(推荐)
完全不写 frontmatter前端进页后从正文抽一段再打字机(可做,但 SEO/首屏不如前者)
还要接近 AI 导语质量继续用现在的 API 方案,或本地大模型(成本/体积高)

如果你拍板,我可以按「构建期本地提取、不调 API」改 make gen-ai-summary(例如:优先第一段,不足再拼标题下首句,长度约 60~120 字),前端卡片不动。要改成「纯前端运行时提取」也可以,说一下偏好即可。

🟢结论(还得是上AI)

@one 还得是上ai,不然不智能。

AI文章摘要功能是可选的

后续可能存在的问题

万一后面千问AI的免费套餐没了,或者说没其他免费的AI套餐了,到时候再说呗哈哈,反正这个AI摘要总结是可选的。

结束。

最新文章