typecho添加AI摘要功能以及我的二改博客功能
typecho添加AI摘要功能

众所周知GPT目前已经覆盖到了方方面面,博客作为大段落的文字,如果写的过多,反而没有重点,不如用一段摘要来概括他,然后选择合适的部分进行阅读,typecho的AIContentSummary项目便应运而生。
它可以在博主发布博文的时候自动调用ai接口,生成ai摘要来提供简要概括
但是AIContentSummary有个缺点就是它是将生成的摘要放在了文章简介当中,如果正文页面没有这个简介的显示则不会显示在正文中,只会放在首页目录页的文章摘要当中,非常不方便,于是乎想到了二次开发
二次开发实现的效果
通过AIContentSummary+easyTyper.js+typecho标签调用实现在正文页首页通过打字机的形式,展示出当前文章的AI摘要
AIContentSummery
github地址如下Rockytkg/AIContentSummary: AIContentSummary 是一个用于通过调用AI接口,根据文章内容生成摘要的 Typecho 插件 (github.com)
然后去国内数一数二的GPT:KimiAI页面自己去申请API账号,新账号会给15元免费不会过期的使用额度,基本上够用了,kimiai的api和chatgpt几乎一致,可以直接无缝调用,API申请地址Moonshot AI - 开放平台
然后配置完毕后,每次提交博文的时候就会去调用并生成ai摘要,要注意的是在保存文章时,请不要刷新网页。因为提交文章时会调用API接口等待返回,刷新网页可能导致摘要生成失败。
调用生成内容
在对应的页面位置我这里是post.php,添加如下php代码
AI摘要:
<?php
$content = $this->fields->content;
if (!isset($content)) {
echo "还没有生成摘要!Ciallo~ (∠・ω<)⌒☆";
} else {
echo $content;
}
?>'
要注意$this->fields->content是不输出摘要的,如果是$this->fields->content()加上了括号的这个,会直接带一个print效果,会直接输出
加上打字机效果
用过gpt的都知道,gpt是慢慢说话的,加上打字机效果会有比较好的交互作用
这里找到一个easyTyper.js供使用easy-typer-js: 功能十分强大打字机插件,兼容原生JS和MVVM类框架(Vue,React,angular),随心所欲的输出任何你想输出的内容。 (gitee.com)
先引入,之后在post.php调用即可,我这里是输出到一个id叫abstract的div里,可以参考
<script src="<?php Utils::indexTheme('assets/js/easyTyper.min.js'); ?>"></script>
<script>
var obj = {
output: '', // 输出内容 使用MVVM框架时可以直接使用
type: 'normal',
isEnd: false,
speed: 15, //数值越小越快
backSpeed: 40,
sleep: 3000,
singleBack: false,
sentencePause: false
}
var content = ['AI摘要:<?php
$content = $this->fields->content;
if (!isset($content)) {
echo "还没有生成摘要!Ciallo~ (∠・ω<)⌒☆";
} else {
echo $content;
}
?>']
var typing = new EasyTyper(obj, content, ()=>{
// 此回调结束了easyTyper的生命周期
console.log('结束了,我的使命!')
typing.close()
}, (output, instance) => {
// 钩子函数,每一帧的数据获取和实例EasyTyper的获取
console.log(output)
document.getElementById('abstract').innerHTML = `${output}`
})
</script>
存在的BUG
由于是采用了pjax的无缝刷新的方式,所以在打字机还没打字结束时就切到其他页面就会报错,因为找不到id=abstract这个div了,如果此时再进入某个页面,就会跟这个页面自身的abstract打架,页面会不停抖动。
解决方法1. 调高打字机输出速度
解决方法2. 在跳出页面的时候结束打字机进程,但我懒得弄
主题魔改目录
我要记录一下miracle这个主题到底我自己修改了哪些东西,以便之后升级的时候还能改过来
-
gravatar改crvartar
-
代码框改成mac主题样式的
-
添加开往以及upyun的head和footer标签
-
post添加了这个aicomment
- 上下文插件在post页面添加内容
<div class="post-share" style="border-bottom:none;margin-bottom:-10px;">
<div class="nextprev" style="margin-bottom:20px;">
上一篇:<?php @CategoryNext_Plugin::thePrev('%s', '没有了', array(), $this); ?>
</div>
<div class="nextprev">
下一篇:<?php @CategoryNext_Plugin::theNext('%s', '没有了', array(), $this); ?>
</div>
</div>