WP Manifestindependent plugin directory
manifest / seo / seo-auto-tags

SEO 自动标签

给 WordPress 文章自动推荐标签,点一下生成候选标签,确认后再写入文章。

by 西瓜烧鱼 · github.com/solowaltz/seo-auto-tags · website

★ 0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/solowaltz/seo-auto-tags/archive/refs/heads/main.zip

给 WordPress 文章自动推荐标签。点一下就能生成候选标签,确认后再写入文章,省去手动整理的麻烦。

支持本地算法和 OpenAI 兼容接口,既可以完全离线使用,也可以接入自己常用的 AI 服务。

作者:西瓜烧鱼 · 许可:GPL-2.0-or-later


主要功能

  • 兼容区块编辑器和经典编辑器
  • 根据标题和正文提取主题词,突出标签的 SEO 相关性
  • 支持本地算法和 OpenAI 兼容接口:不想花钱时可完全本地运行
  • 候选标签可编辑、取消、复制和重新生成
  • 优先复用站内已有标签,过滤明显重复词
  • 文章列表页支持一键补标签
  • 提供标签健康度、调用限速、用量统计和结果缓存
  • 支持屏蔽词和标签数量提醒

安全与隐私

  • API Key 使用站点密钥加密后保存,也可以只放在 wp-config.php
  • AI 模式只把标题和正文片段发送到你自己配置的接口,本地模式不联网
  • 接口地址强制使用 HTTPS,并检查 DNS,拦截本机、内网和云元数据地址
  • 所有异步请求都校验权限和 nonce,避免越权生成或写入标签
  • 插件不收集站点数据,不向作者服务器回传内容

为什么标签要控制数量

WordPress 的每个标签都会生成一个归档页。标签建得太多太碎,会:

  • 产出大量内容稀薄的页面,稀释整站权重
  • 让同一个意思被拆成多个标签(「PS教程」和「Photoshop教程」),互相分权

所以本插件默认只给 5 个候选,并且默认优先复用已有标签。

标签本身也要短。3~6 个字最理想:

  • 太短(如「软件」「教程」)没有区分度,聚合的文章太多、主题散
  • 太长(如「安卓手机录屏软件推荐」)只能聚合一两篇文章,同样会变成稀薄的归档页

因此中文标签限制在 2~8 字,打分时 3~6 字权重最高; 英文按视觉宽度折算,不会误伤 Photoshop、Portraiture 这类长词。


安装

  1. 下载本仓库的 seo-auto-tags.zip,或把整个目录打包成同名 zip
  2. WordPress 后台 → 插件 → 安装插件 → 上传插件 → 选择 zip → 现在安装
  3. 启用插件
  4. 进入 设置 → SEO 自动标签 按需配置

要求:WordPress 5.8+、PHP 7.4+(建议 PHP 8.0 以上)。

也可以直接把 seo-auto-tags 目录上传到 wp-content/plugins/ 下再启用。

使用

写文章时:

  1. 编辑页右侧找到「SEO 自动标签」面板
  2. 点「生成标签」
  3. 取消勾选不想要的
  4. 点「应用选中标签」→ 保存文章

给旧文章补标签:

到「文章」列表页,找到「SEO 标签」列里显示「未打标签」的行,点「一键生成」, 确认弹窗里列出的标签后自动追加(不会删掉原有标签)。


配置 AI 模式

选择 AI 模式后填写服务商、API Key 和模型名。接口地址和模型名会自动带出。

内置预置:

服务商 说明
DeepSeek 中文效果好,价格低
通义千问 阿里云,新用户有免费额度
智谱 GLM 有免费模型(glm-4-flash)
月之暗面 Kimi 长文本能力强
OpenAI 需要国外网络环境
自定义 任何 OpenAI 兼容接口(必须 https)

填好后点「测试连接」确认能通,再去文章里用。

AI 兼容性

不同服务商的返回格式不完全一样,插件按常见格式逐个兜底:

  • 标准 OpenAI 兼容:choices[0].message.content
  • 老式 completions:choices[0].text
  • 多模态数组:message.content[0].text
  • 部分网关:output.text / content
  • 网关强制返回 SSE 分块时,自动拼接

出错时会把 HTTP 状态码翻译成能照着修的建议:

状态码 提示
401 API Key 无效或已过期,重新复制粘贴一次
402 账户余额不足,去服务商后台充值
404 接口地址不对,多数服务商要求以 /v1 结尾
429 被服务商限流了,等一会儿再试
超时 服务器可能出不了外网,或模型响应太慢

报错信息里的 API Key 会被自动脱敏。


AI 消耗说明

会真实调用接口的地方只有四处:

触发点 消耗 防护
编辑器点「生成标签」 一次调用 限速 + 缓存
打开编辑器自动生成(可选,默认关) 同上 同上
文章列表页「一键生成」 每篇一次 限速
设置页「测试连接」 约 20 token 一分钟最多 5 次

发送量控制:正文做「头 + 尾」采样,控制在 4000 字以内(约 2400 token), 单次调用成本约几厘钱。想更省就把「结果缓存」开着。

达到限速上限时自动改用本地算法并在界面上说明原因,不会报错中断,也不会偷偷继续花钱。

想彻底不花钱:生成方式选「本地算法」—— 不联网、不调用任何接口。


安全

项 做法
CSRF 所有 AJAX 接口校验 nonce
越权 逐个校验当前用户对目标文章的编辑权限
SSRF AI 接口地址强制 https,禁止指向本机 / 内网 / 云元数据地址;保存、生成与测试时都会做 DNS 解析检查,并禁止跟随重定向
API Key 泄露 强制 https 传输;设置页不回显完整 Key;报错信息自动脱敏
额度被刷 按用户按小时限速;「测试连接」另有一分钟 5 次节流
批量滥用 单次最多创建 12 个标签
XSS 前端一律用 textContent 写入
内存耗尽 超长正文按段落均匀采样,压到 3 万字以内再分析
进程占满 接口超时 25 秒,避免慢请求占满 PHP 进程池

数据不外泄

API Key

  • 密钥用站点密钥加密后保存,数据库里看不到明文;服务器缺少安全加密能力时不会保存新的 Key

  • 设置页不回显已保存的 Key(输入框恒为空,留空表示不改动)

  • 前端 JavaScript 中不含任何 Key 相关字段,Key 只在服务端使用

  • 报错信息里的 Key 会被自动抹掉

  • 「测试连接」返回的模型回复只截取 40 字

  • 想更安全的话,可以把 Key 放到 wp-config.php,完全不写入数据库:

    define( 'SEO_AUTO_TAGS_API_KEY', '你的Key' );

    定义后插件优先使用该常量,设置页会显示提示并隐藏输入框。

  • 想停用 AI 时,可在设置页勾选「清除已保存的 Key」

站点与内容

  • 请求头使用固定的 User-Agent: SEO-Auto-Tags/x.y.z; WordPress,不携带站点地址
  • 不携带 Referer 等额外请求头;保持 WordPress 默认的 SSL 校验
  • AI 结果缓存的键是「标题 + 正文 + 接口配置」的 md5 指纹,不可反推原文
  • 插件不写任何日志文件,不向自建服务器回传数据

发往 AI 的内容

  • 仅在你点击「生成标签」时发送文章标题与正文(采样后 4000 字以内)
  • 本地算法模式不联网,不发送任何数据

目录结构

seo-auto-tags/
├── seo-auto-tags.php          插件主文件(含环境检查)
├── includes/
│   ├── class-settings.php     设置页 + 标签健康度面板
│   ├── class-generator.php    标签生成算法(本地 + AI)
│   ├── class-ajax.php         异步接口
│   ├── class-metabox.php      编辑器面板
│   └── class-columns.php      文章列表列 + 一键生成
├── assets/
│   ├── editor.js / editor.css     编辑器交互与样式
│   ├── columns.js                 列表页一键生成
│   └── admin.js / admin.css       设置页交互与样式
├── uninstall.php              卸载清理
└── readme.txt                 WordPress 插件说明

开发

纯 PHP + 原生 JavaScript,不依赖任何构建步骤,克隆下来直接改。

运行环境需要启用 mbstring 扩展。


许可

GPL-2.0-or-later © 西瓜烧鱼 · www.rrshare.com