暗色模式

TeoSeo v1.2.0 发布:AI 自动生成摘要与关键词,SEO 三件套一次配齐

技术教程
2026-08-07
61
1

TeoSeo :从推送工具到 SEO 三件套

TeoSeo 是本站自研的 Typecho 1.3 SEO 插件,一路小步快跑:

  • v1.0Typecho1.3SEO插件TeoSeo:自动 sitemap + 发布即推送):sitemap.xml + IndexNow + 百度推送,发布即推送,一个不落;
  • v1.1:推送历史面板,每条推送成败都能查;
  • v1.2.0(本次):AI 内容优化——发布文章自动生成摘要与关键词,前台输出 meta description / keywords / JSON-LD 结构化数据,存量文章一键批量生成。

也就是说,一篇文章的 SEO 三件套(meta 描述、关键词、结构化数据)现在全自动了。

适配说明:插件的 AI 摘要、前台 meta 输出与编辑页字段联动目前主要针对本站主题(Inaline)适配;其他主题的输出样式可能不同,如遇问题欢迎到 GitHub 反馈。

新功能一:发布即自动生成摘要与关键词

支持任意 OpenAI 兼容接口

插件走的是通用的 /chat/completions 协议,所以 DeepSeek、通义千问、智谱 GLM、Kimi、OpenAI 都行,换平台只改 BaseURL 和模型名,代码不用动。本站实测用 智谱:

BaseURL = https://open.bigmodel.cn/api/paas/v4
模型名  = glm-4-flash-250414

设置页配置项

在「设置 → TeoSeo」里新增了一组 AI 配置:

配置项说明
AI 开关关闭时不调用任何接口
AI 接口 BaseURLOpenAI 兼容接口地址
API Key存在本地数据库,不经过第三方
模型名deepseek-chat / qwen-plus / glm-4-flash 等
摘要长度(字)默认 120,建议 80~200
请求超时(秒)默认 30,长文接口一般要 20~40 秒
SSL 校验默认严格校验;虚拟主机 CA 链残缺导致失败时勾选,自动降级重试一次

两个设计细节

① 生成不卡发布。 AI 接口再快也要几秒到几十秒,如果发布文章要干等,体验就毁了。插件把生成挂到请求收尾阶段(shutdown 阶段)异步执行:发布响应先返回,AI 结果写完字段,下次刷新面板就能看到。生成失败也静默记日志,不影响发布本身。

② 已有摘要不覆盖。 发布钩子只对没有摘要的文章生成,你手动写好的摘要不会被 AI 冲掉;真想要 AI 重写,面板上有「强制覆盖」按钮。

新功能二:存量文章批量生成

后台新增「TeoSeo → AI 内容优化」面板:未生成摘要的文章排前面,显示最近 50 篇,支持单篇生成、强制重新生成、一键批量生成。

批量生成的实现有点"笨"但很稳:每处理一篇就 302 跳转一次续跑。为什么不循环一把梭?Typecho 部署在不同环境(虚拟主机 / VPS / Docker)性能差异很大,加上各家 AI 接口普遍有速率限制,几十篇一起跑很容易超时或被限流;一篇一跳转是最土也最稳的办法,还能顺便看进度。连续失败的同一篇文章不会反复重试(last 守卫防死循环),每次批量上限 200 篇。

批量生成前:文章摘要与关键词均未生成

批量生成后:摘要与关键词自动填充,按钮变为更新生成

新功能三:前台 SEO 输出实测

文章页现在会自动输出三样东西:

meta name="description"   → AI 摘要(没配 AI 时从正文截取)
meta name="keywords"      → AI 生成的关键词
JSON-LD Article           → 标题/发布时间/修改时间/作者/发布者/链接

线上文章页的 SEO 输出实测

截图是直接在线上文章页抓的,JSON-LD 的 headline、datePublished、mainEntityOfPage 都是真实数据,搜索引擎拿到的就是这份。

和 Inaline 主题的协同

Inaline 主题自带 seo_description / seo_keywords 自定义字段支持,会自己输出 meta description。如果插件再输出一遍就变成两条 description——插件在钩子里先检查主题是否已输出,有就让主题的留下,避免重复标签被搜索引擎嫌弃。正文截取摘要时也会先把 markdown 的行首 # 和行内 **、反引号去掉,description 里不会出现一坨符号。

版本细节:上线前修掉的三个坑

v1.2.0 最初版本来自 AI 辅助开发(opencode),检查后修了三处再上线:

  1. JSON-LD 注入风险:AI 生成的摘要是外部接口返回的不可信内容,如果里面混进 </script> 会提前闭合标签变成注入点。补了 JSON_HEX_TAG 转义;
  2. SSL 校验全关:原版为了兼容虚拟主机把 TLS 校验整个关了——API Key 是钱,不能裸奔。改成默认严格校验,勾选开关后才在失败时降级重试;
  3. 发布同步阻塞:原版发布时同步调 AI,改成了 shutdown 异步,见上文。

升级方式

线上已经升级到 v1.2.0(GitHub Astararry-1127/TeoSeoAi 分支,后续合入 main)。其他站点升级:把 Plugin.phpClient.phpai.php 三个文件覆盖到 usr/plugins/TeoSeo/,然后停用再启用一次插件重建钩子(注意:启用前先清空 options.plugins 再激活,重复激活会把钩子注册两遍,我们线上就踩过这个坑,症状是 JSON-LD 输出两条)。

升级后到设置页保存一次配置,让 AI 配置项写入数据库,然后就可以在面板里批量生成了。

参考资料

发表评论

astarry
astarry 博主
2026-08-07 12:47 #1
免费模型已经直接集成到源码默认了,直接注册账号填key即可!