废话不多说,直接给出教程,方法来自清羽大佬,我将其适配到了Stellar主题
不用担心,不用任何费用即可实现
教程
环境配置
摘要生成功能来自插件 hexo-ai-summary-liushen ,由清羽基于hexo-ai-excerpt插件开发而来
首先,安装插件
1 | npm install hexo-ai-summary-liushen --save |
如果安装了上述插件,构建过程中报错,继续安装以下依赖
1 | npm install axios p-limit node-fetch --save |
安装后,在Hexo配置文件_config.yml任意位置添加以下配置:
1 | # hexo-ai-summary-liushen |
请仔细查看以下内容,由于AI摘要会插入在文件顶部,如果不小心插入了可能会比较麻烦,需要手动删除,下面是配置的说明:
summary_field:设置写入到文章顶部字段的名称,比如我这里默认是summary,最终实现的结果就是在文章顶部插入一个字段为:summary的摘要文本:
如果你是solitude等主题,可能本身主题就内置ai摘要本地实现功能,只需修改成对应的字段名称比如ai_text即可对接,具体请看主题文档。
cover_all:覆盖性重新生成所有摘要,非必要不要打开,可能会导致过量的api消耗。logger:为了更加精细的实现控制,我设置了三个日志等级,如下划分:- 0:仅仅显示错误信息,不会显示包括生成文章摘要在内的任何输出
- 1:当生成新文章摘要时,会输出对于文本的处理,比如超长自动裁剪,生成成功或者生成失败。
- 2:调试使用,会输出包括跳过所有页面信息,仅仅处理文章部分。
api:任何openai类型接口,包括deepseek,讯飞星火,腾讯混元,ChatGPT等。token:api对应的接口密钥。model:使用的模型名称,请检查对应接口文档说明,不同接口包含的模型不一致。prompt:提示词,请自行定制,建议详细一些,但是不要太废话,以我写的为例。ignoreRules:忽略文本正则接口,由于本插件直接获取Markdown文本,内置了一些处理,但是你仍然可以进行额外的处理,下面是内置的文本处理规则,如果有兴趣进行修改可以进行参考:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17// 2. 清理内容
content = content
.replace(/```[\s\S]*?```/g, '') // 代码块
// .replace(/`[^`\n]+`/g, '') // 行内代码
.replace(/{%[^%]*%}/g, '') // Hexo 标签
.replace(/^\|.*?\|.*$/gm, '') // 表格行
.replace(/!\[.*?\]\(.*?\)/g, '') // 图片
.replace(/\[(.*?)\]\(.*?\)/g, '$1') // 超链接文本
.replace(/<[^>]+>/g, '') // HTML 标签
.replace(/ /g, ' ') // 空格实体
.replace(/\n{2,}/g, '\n') // 多重换行压缩
.replace(/^\s+|\s+$/gm, '') // 行首尾空格
.replace(/[ \t]+/g, ' ') // 多空格压缩
.trim();
// 3. 拼接标题
const combined = (title ? title.trim() + '\n\n' : '') + content;max_token:限制模型输入的最大字数,用字符串的slice进行截断,如果超出模型接受范围,可能会造成下文覆盖上文导致prompt丢失,内容混乱,所以请按照模型承受能力进行灵活配置。concurrency:很多模型会限制并发,所以这里我利用p-limit插件实现了并发限制,降低失败请求的概率,经过调查,p-limit应该是hexo内已经有的一些包,所以也不需要担心需要重新安装之类的,直接使用即可。
尝试运行
由于该插件修改了头部,虽然修改的流程严格按照hexo的要求,写回头部的流程类似于Hexo-abbrlink,写入后不可撤回,并且由于AI具有不可控性,请运行前注意备份,防止在所有文章顶部生成不必要的内容,难以清理,特别是仅有一份源码在本地的朋友,注意勤备份。
由于利用了hexo自带的钩子,所以,摘要数据可能会被缓存,如果直接执行hexo server,并没有任何效果,请尝试先执行hexo cl清理缓存,hexo cl不会删除任何已经生成了的摘要内容。
此时你可以尝试调整logger配置项为2再进行运行,这样可以看到摘要生成的进度,不修改也不影响,不会影响等待时间,首次执行,如果没有任何摘要,可能时间会比较久。
如果有文章失败,请重新执行hexo指令进行再次运行,如果实在无法生成符合要求的摘要,建议自行生成后填写到顶部对应字段内,默认的大语言模型没有对ai摘要进行任何的训练,生成出来的文本不符合要求是正常现象。
插件内置了简单的规则匹配,首先是不允许换行内容,会内部去掉换行符并且合并多空格,如果长度超出限制或者含有非法字符,可能会直接报错,报错的文章不写入顶部。
如果一切正常,应该可以在每篇文章的顶部看到对应的摘要文段。
API推荐
以下是可以申请免费API的接口:
| 接口名称 | 优势 | 劣势 | 字符上限 | 模型类型 | 稳定性 | 简介 |
|---|---|---|---|---|---|---|
| 腾讯混元 Lite | - 官方支持,性能稳定 - 计划支持高达256K字符输入输出 - 免费使用,无需付费 |
- 需腾讯云账号及实名认证 - 当前可能仍处于4K字符限制阶段,256K支持尚未全面上线 |
计划支持256K字符(当前可能为4K) | 自研大模型,具备多模态能力 | 高 | 腾讯自研的混元大模型,支持多轮对话、逻辑推理、内容创作等,计划全面支持256K字符输入输出,适用于多种应用场景。 |
| 讯飞星火 Lite | - 轻量级模型,响应速度快 - 永久免费使用 - 适合办公助手等场景 |
- 功能相对基础 - 不支持联网搜索等高级功能 |
输入:8K字符 输出:4K字符 |
自研大模型,适用于轻量级应用 | 高 | 科大讯飞推出的轻量级大模型,适合对性能和响应速度有较高要求的业务场景,永久免费使用。 |
| ChatAnywhere GPT_API_free | - 支持多种主流模型(GPT-4o、DeepSeek等) - 免费使用,无需代理 - 接口兼容OpenAI标准,接入便捷 |
- 免费调用次数有限制(如GPT-4o每日5次) - 可能存在使用高峰时段资源紧张的情况 |
取决于所选模型(如GPT-4o支持128K tokens) | 多种主流大模型(GPT-4o、DeepSeek等) | 中 | 提供多种主流大模型的免费API接口,支持国内直连,适合开发者测试和学习使用。 |
| QWQ.aigpu.cn | - 完全免费,无需注册 - 基于分布式算力,支持高性能模型 - 支持本地运行和共享算力 |
- 高峰时段可能需要排队 - 依赖社区贡献的算力,稳定性可能受影响 |
未明确限制,具体取决于模型和算力资源 | QwQ 32B大语言模型 | 中等(受算力资源影响) | 基于分布式家用显卡算力的平台,提供免费的大语言模型API,支持本地运行和共享算力,适合开发者和爱好者使用。 |
由于AI摘要仅仅需要小模型即可驾驭,无需众多训练知识,所以这里两个Lite版本的模型完全可以实现,唯一不同的区别可能就是上下文能力啦,更好的模型可以接受更长的文本输入,不容易丢失我们给予的prompt,输出更为准确,更符合要求,但是考虑到成本和·稳定性原因,我还是建议前两个。
注意各家都有自有api接口和OpenAI类型接口,我们这里选择OpenAI接口,输入完整的地址如混元的兼容接口:
1 | https://api.hunyuan.cloud.tencent.com/v1/chat/completions |
申请token后正常使用即可。
Hexo适配
有些主题已经有静态ai摘要的功能了,可以无需下面的步骤,使用插件向文件插入对应的字符串即可,下面的教程适用于butterfly或者类butterfly主题,如果是其他主题可能需要自行适配。
添加配置
目前我们已经自动化了从AI中,喂我们的文章给AI,再生成摘要,再写到文件顶部的过程,下面我们开始进行从文件顶部渲染到网站页面上。
首先在主题配置文件_config.stellar.yml文件中写入配置,方便我们进行控制摘要是否开启:
1 | # 文章AI摘要是否开启,会自动检索文章色summary字段,若没有则不显示 |
这里的内容均为装饰性内容,除了enable选项,其他没有任何控制效果,都是装饰,所以无需担心,可以先按照我的写,后面再根据效果修改。
添加模板
在这之前,配置均与主题无关,都是统一配置,后面的内容都是根据Stellar适配
找到主题文件下的themes\stellar\layout\page.ejs,添加三行内容
1 | el += `<article class="${articleClass()}">` |

贴出截图,方便定位代码位置
下面添加组件,创建文件``themes\stellar\layout_partial\main\article\post-summary.ejs,写入以下内容:
1 | <div class="ai-summary"> |
添加样式
这样,html部分就实现好了!下面我们添加样式部分,创建文件source\custom\css\ai-summary.css文件,该文件在博客根目录下,不是主题根目录,写入:
1 | .ai-summary { |
样式也实现啦!目前就差将我们的摘要插入到我们的网站就大功告成啦,为了实现的更加逼真,清羽这里实现了两种样式一个是打字机效果,一个是平滑显示效果,可以按需引入:
添加核心JS
文件路径source\custom\js\ai-summary.js
下面我会介绍两种动效,可以按照自己的需求在任意js文件中选择一个引入即可,两个的区别是,打字机效果更加的节省性能,而平滑显示,因为每个文本为一个span,所以会比较耗费性能。
打字机效果
1 | // 打字机效果 |
本站使用的就是打字机效果,可以自行查看。
平滑显示效果
1 | // 平滑弹出效果 |
引入css和js
_config.yml中,添加:
1 | inject: |
注意,平滑滚动部分的css,我默认注释掉了,请在样式文件中自行打开注释。
这样,一个自己实现的AI摘要就完工啦!
再次感谢清羽大佬提供的方法。