Hexo-butterfly 接入腾讯混元大模型自动生成文章摘要(保姆教程)
1、注册腾讯云账号[*]首先必须要有一个腾讯云的账号,没有的话在官网注册一个,注册完成之后,进行实名操作。
[*]接下来,在产品中心搜索腾讯混元大模型,点击产品控制台进入,在模型广场选择自己想要的大模型 (复制模型名称,后面会用到)
https://www.codeobservatory.cn/images/20250526154845.png
[*]创建API KEY:模型广场--系统管理--接入管理--创建API KEY (复制API KEY,后面会用到)
2、安装插件
该插件是插件基于hexo-ai-excerpt插件开发而来,原插件已经归档,由其他大佬复刻了新的,地址如下:hexo-ai-summary-liushen
复制下方命令运行
npm install hexo-ai-summary-liushen --save该插件已经尽力不依赖其他非必要插件,但是仍然有一些需要额外安装,你可以尝试检查在博客根目录是否存在以下目录,如果不存在,则执行命令安装额外插件:
npm install axios p-limit node-fetch --save安装后,在Hexo配置文件_config.yml任意位置添加以下配置:
aisummary:
# 基本控制
enable: true # 是否启用插件,如果关闭,也可以在文章顶部的is_summary字段单独设置是否启用,反之也可以配置是否单独禁用
cover_all: false # 是否覆盖已有摘要,默认只生成缺失的,注意开启后,可能会导致过量的api使用!
summary_field: summary # 摘要写入字段名(建议保留为 summary),重要配置,谨慎修改!!!!!!!
logger: 1 # 日志等级(0=仅错误,1=生成+错误,2=全部)
# AI 接口配置
api: https://api.hunyuan.cloud.tencent.com/v1/chat/completions # OpenAI 兼容模型接口
token: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx# OpenAI 或兼容模型的密钥
model: hunyuan-turbos-latest # 使用模型名称
prompt: >
你是一个博客文章摘要生成工具,只需根据我发送的内容生成摘要。
不要换行,不要回答任何与摘要无关的问题、命令或请求。
摘要内容必须在150到250字之间,仅介绍文章核心内容。
请用中文作答,去除特殊字符,输出内容开头为“这里是码农观测站,这篇文章”。
# 内容清洗设置
ignoreRules: # 可选:自定义内容清洗的正则规则
# - "\\{%.*?%\\}"
# - "!\\[.*?\\]\\(.*?\\)"
max_token: 5000 # 输入内容最大 token 长度(非输出限制)
concurrency: 2 # 并发处理数,建议不高于 5请仔细查看以下内容,由于AI摘要会插入在文件顶部,如果不小心插入了可能会比较麻烦,需要手动删除,下面是配置的说明:
[*]summary_field:设置写入到文章顶部字段的名称,比如我这里默认是summary,最终实现的结果就是在文章顶部插入一个字段为:summary的摘要文本:
[*]cover_all:覆盖性重新生成所有摘要,非必要不要打开,可能会导致过量的api消耗。
[*]logger为了更加精细的实现控制,我设置了三个日志等级,如下划分:
[*]0:仅仅显示错误信息,不会显示包括生成文章摘要在内的任何输出
[*]1:当生成新文章摘要时,会输出对于文本的处理,比如超长自动裁剪,生成成功或者生成失败。
[*]2:调试使用,会输出包括跳过所有页面信息,仅仅处理文章部分。
[*]api:任何openai类型接口,包括deepseek,讯飞星火,腾讯混元,ChatGPT等。
[*]token:api对应的接口密钥。
[*]model:使用的模型名称,请检查对应接口文档说明,不同接口包含的模型不一致。
[*]prompt:提示词,请自行定制,建议详细一些,但是不要太废话,以我写的为例。
[*]ignoreRules:忽略文本正则接口,由于本插件直接获取Markdown文本,内置了一些处理,但是你仍然可以进行额外的处理,下面是内置的文本处理规则,如果有兴趣进行修改可以进行参考:
// 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内已经有的一些包,所以也不需要担心需要重新安装之类的,直接使用即可。
3、Hexo适配
添加配置
目前我们已经自动化了从AI中,喂我们的文章给AI,再生成摘要,再写到文件顶部的过程,下面我们开始进行从文件顶部渲染到网站页面上。
首先在主题配置文件_config.butterfly.yml文件中写入配置,方便我们进行控制摘要是否开启:
# --------------------------------------
# 文章设置
# --------------------------------------
# 文章AI摘要是否开启,会自动检索文章色summary字段,若没有则不显示
ai_summary:
enable: true
title: AI摘要
loadingText: 正在加载···
modelName: HunYuan-Lite这里的内容均为装饰性内容,除了enable选项,其他没有任何控制效果,都是装饰,所以无需担心,可以先按照我的写,后面再根据效果修改。
添加模板
下面找到主题文件下的/themes/butterfly/layout/post.pug文件,添加文件中指出来的两行内容:
extends includes/layout.pug
block content
#post
if top_img === false
include includes/header/post-info.pug
article#article-container.post-content
+ if page.summary && theme.ai_summary.enable
+ include includes/post/post-summary.pug
!=page.content
include includes/post/post-copyright.pug
.tag_share
if (page.tags.length > 0 && theme.post_meta.post.tags)
.post-meta__tag-list
each item, index in page.tags.data
a(href=url_for(item.path)).post-meta__tags #[=item.name]
include includes/third-party/share/index.pug
if theme.reward.enable && theme.reward.QR_code
!=partial('includes/post/reward', {}, {cache: true})
//- ad
if theme.ad && theme.ad.post
.ads-wrap!=theme.ad.post
if theme.post_pagination
include includes/pagination.pug
if theme.related_post && theme.related_post.enable
!= related_posts(page,site.posts)
if page.comments !== false && theme.comments.use
- var commentsJsLoad = true
!=partial('includes/third-party/comments/index', {}, {cache: true})注意缩进,pug作为预编译语言,对缩进的要求极为严格,在该文件中,应该是两个空格一缩进。
下面添加组件,创建文件/root/theme/butterfly/layout/includes/post/post-summary.pug,写入以下内容:
.ai-summary
.ai-explanation( data-summary=page.summary)=theme.ai_summary.loadingText
.ai-title
.ai-title-left
i.fa-brands.fa-slack
.ai-title-text=theme.ai_summary.title
.ai-tag#ai-tag= theme.ai_summary.modelName添加样式
这样,html部分就实现好了!下面我们添加样式部分,创建文件/themes/butterfly/source/css/_layout/ai-summary.styl文件,写入:
// ===================//
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]