Community写作与编辑github.com

Doc-Scripter/rankmath-skill

用于撰写或审核WordPress/WooCommerce产品列表,确保RankMath评分达到70+的技能。涵盖产品列表、焦点关键词选择、摘要字段、扩展描述、内部链接、集线器和集体短语(如“温室建设资源”)、孤立页面、入站链接或诊断低RankMath评分。适用于任何给定基础URL的网站,例如https://shop.example.com。触发条件:RankMath评分、产品列表SEO、WooCommerce SEO、焦点关键词、元描述、内部链接、集线器页面、集群链接。

rankmath-skill 是什么?

该技能专为开发者和内容创作者设计,用于优化WordPress或WooCommerce网站上的产品列表或文章,以在RankMath SEO评分中获得70分以上。它通过一个结构化的工作流程(分为六个步骤)来系统性地解决低评分问题,涵盖了从基础URL推导平台配置、选择焦点关键词、填充RankMath要求的六个字段(如SEO标题和元描述),到编写遵循特定规则的正文内容。关键在于:RankMath评分的是字段填充情况而非内容质量,且不统计入站链接或集线器存在性。该技能已在Claude Code和Cursor等AI代理平台上验证,并包含一个检查脚本(check_listing.sh)来确保合规性。它支持通过REST API自动检测WooCommerce的存在性、内容类型和Sitename长度,以提供精确的优化建议。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add Doc-Scripter/rankmath-skill

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

RankMath WooCommerce 产品列表

概述

两项工作,只有一项有评分。

  1. 让 RankMath 满意。 它实际读取的六个输入,加上一份将活页面从 41/100 提升至 84/100 的正文撰写规范。RankMath 评分的是字段,而非文字:一个1000字的页面,如果摘要字段为空,得分会低于一个700字但字段填充完整的页面。
  2. 让页面可被访问。 正文中强调的每个集合都必须解析为真实链接,且页面本身必须能从平台内部链接到。 RankMath 不统计入站链接或集线器存在性。 步骤3b和4改变的是Google对页面的看法,而非RankMath数字。不要指望评分提升。

此处没有任何内容是硬编码到某个网站的。提供一个基础URL,主机、URL清单、站点名称预算以及WooCommerce是否存在都由此衍生(步骤0)。文末的一个工作示例是匿名的——供说明之用,绝非输入。

步骤 0 - 从基础URL推导平台配置

每项工作都从一个基础URL开始,例如 https://shop.example.com 或 https://blog.example.com。推导出以下内容;切勿假设。

事实如何推导
是否为 WooCommerce?curl -sL "$BASE/wp-json/wc/store/products?per_page=1" - 返回200表示是,rest_no_route 表示仅有文章和页面。不要假设 /product/ URL结构存在
存在哪些内容类型curl -sL "$BASE/wp-json/wp/v2" 然后列出路由名称。自定义类型(如 farm、produce)会在此显示,必须包含在内
完整URL清单scripts/build_link_inventory.sh <base> - 它通过 x-wp-total 对每个集合进行分页,并写入 _audit/inventory/<host>/{nodes,edges,nav,meta}.tsv
站点名称附加长度获取 与你正在撰写的页面相同内容类型 的3个活页面的 <title> 值,取最长的公共后缀,计算其字符数。这是需要减去的预算。后缀为0个字符 并不 意味着“没有附加”——而是模板不同,因此需要在同一类型内重新测量
哪些 href 被视为内部链接主机等于推导出的主机,或者 href 是相对或协议相对的。其他均为外部链接
哪些节点是 编辑性 的从 nodes.tsv 读取节点种类。如果网站暴露了 navigation/menu 等类型,它们的“正文”是菜单,因此属于界面元素,而非写作内容——将它们从入站和集群计数中排除(参见 H5)

curl 在所有地方都需要 -L。WordPress 的站点地图和REST路由在 Rank Math 接管后会进行301跳转,没有 -L 的 curl -s 会返回 空正文,这会导致幻影URL被发明出来:一个空列表看起来像“没有这样的页面”,而不是“获取失败”。

步骤 1 - 焦点关键词

  • 每个页面一个关键词短语,在整个商店中唯一。免费版 RankMath 只评分单个关键词短语;第二篇使用相同短语的页面无法获得排名。
  • 检查器使用 grep -oiF 计数关键词短语——即固定字符串——因此正文中的连字符会破坏匹配。 10-hectare greenhouse 不会算作关键词短语 10 hectare greenhouse。见证于2026-10-14:一篇关于10公顷项目的文章,采用连字符风格,如果其正文从未实际包含该短语,密度得分会因此受影响。在步骤1就决定正文中全程使用的拼写,当关键词短语无连字符时,写作时也不使用连字符,并在文档包中说明,以免后续的复制编辑将其“修复”回去。
  • 关键词短语必须连续出现。HDPE Female Tees 不匹配关键词短语 HDPE tee。这个单一错误比其他任何检查都更扣分。
  • 优先选择已在活页面slug中的短语。切勿更改已发布的slug以匹配关键词;这会丢失现有排名和入站链接。
  • RankMath 的“URL 过长”检查计算的是整个固定链接,而非 slug。 见证于一个slug为41个字符(6个词)的页面:https:// + 主机 = 37,+ / + slug + 尾部 / = 80,面板显示 URL is 80 characters long——这个数字匹配完整URL而非41字符的slug,证明了其测量对象。 目标:75个字符或更少(由所有者从面板提供,2026-10-09)。因此 可用 slug 上限 = 75 - 主机开销,在那个29字符的主机上,上限是 36个字符。为每个站点计算主机开销一次,并在文档包中说明。
  • 在长品牌域名上,此检查与关键词在URL中的规则冲突,正如标题长度规则与长关键词短语冲突一样。 一个与关键词完全匹配但长于上限的短语,无法既在slug中保持连续又通过长度检查。 对于已发布的页面:记录该长度为 RED 并接受,切勿重命名。 关键词精确的slug是少数能得分的固定链接项之一;缩短一个建议项会丧失排名、入站链接,并常常产生一个重复页面(带有冲突后缀)。如果所有者更倾向于更短的URL,说明他们选择了哪个检查、放弃了哪个检查,并将其作为站点范围的固定链接策略处理——从清单中统计受影响的节点(在那个主机上,83个URL中有22个超过75字符,全部为关键词精确或郡县名称),而不是编辑单个页面。
  • 在撰写任何内容之前,先读取页面中已保存的焦点关键词,并保持其确切形式,包括单数或复数。 将 HDPE elbows 重写为 HDPE elbow 使一个活页面的评分从73下降到37。
  • 当无法访问管理后台时,面板的密度行可恢复存储的短语——不要从slug猜测。 面板的一行文字,"Keyword Density is 0.15 which is low, the Focus Keyword and combination appears 2 times",包含两个未知数和一个方程:分母是 次数 / (密度/100),所以 2 / 0.0015 = 约1,333个词。在活页面正文中计数每个候选短语的连续出现次数,保留其计数与面板数字匹配的那个。见证于2026-10-13 /installation-of-pop-up-sprinklers/:从slug猜测的 pop up sprinklers(17字符)测量到10次使用 / 0.74%,而 installation of pop up sprinklers(33字符)测量到 2次使用 / 0.15%——与面板数字精确到小数点。 存储的短语是长的那个,而这一推断已经让文档包失去了标题预算、密度目标和H2规则。
  • 一个长的存储短语会改变哪些检查是可满足的,因此在推荐之前重新评估每个下游字段。 一个33字符的关键词短语加上一个30字符的站点名称附加,根本无法生成一个合规的标题;而slug衍生的17字符短语则可以。切勿将基于短短语构建的标题粘贴到存储长短语的页面上——RankMath 会打印 "Focus keyword not found in your title"。
  • 复数形式满足单数关键词短语,因为 HDPE elbows 包含 HDPE elbow。反之则不然。不确定时,在标题、H1和第一句话中使用复数形式。
  • 当自然的长关键词短语无法放入标题窗口时,存储其较短的连续尾部。 见证于2026-10-14 high volume low pressure irrigation(35字符)加上30字符的站点名称附加,留给输入窗口为15-30:长短语使 keyphrase in title 和 title length 在写一个字之前就相互不可满足。存储 low pressure irrigation(23字符)在正文中无需付出代价,因为包含关系是单向的——每个长格式提及仍然包含存储的短语,因此算作一次使用。 证明这个选择,而非争论它: 用同一个完成的文件评分两次,每次用一个短语。在一个草稿上测量:短短语 = 密度0.8%/15次使用和14个H2中的5个(均通过),长短语 = 0.2%/4次使用和14个H2中的2个(均为RED)。密度差距是算术问题,而非风格——一个6词短语需要约10次重复才能超过0.5%,读起来像垃圾信息。在文档包中说明两者的数字,让所有者看到原因。
  • 在分配之前,检查站点的焦点关键词映射(默认 ./rankmath-focus-keywords.md,可用 RANKMATH_KEYWORDS= 覆盖)。如果页面位于重复集群中,首先解决该问题;新内容无济于事。
  • 当请求的关键词已被其他页面占用时,不要在该短语上编写列表,也不要悄悄替换为近似同义词。报告冲突——短语、两个URL以及所有者的实际选项(301重定向较弱的页面、区分一个页面的角度或移动该短语)——并且仅在做出决定后编写。将 HDPE elbows 替换为 HDPE elbow 以规避冲突,与上述第4点的问题相同,只是选错了理由。

步骤 2 - 字段包

填充以下所有字段。这是评分从40多分提升到80多分的关键。

字段规则位置
产品名称 (H1)关键词连续,靠近开头WooCommerce 产品标题。之后重新检查 slug,重命名可能会重写它
SEO 标题总渲染长度在站点名称附加后为45-60字符,关键词在前5个词内,加上由 check_title.cjs 定价的数字/力量词/情感词组合RankMath,编辑片段,标题。参见下面的站点名称陷阱
元描述120-160字符,关键词在前5个词内,以点击理由结尾RankMath,描述。如果为空,RankMath 会静默回退到短描述。这是最常见的隐藏失败
短描述2-3句话,关键词在第一句,不得重复长描述的开头WooCommerce "产品短描述"。为自动元数据、摘要检查和标签上方的文本提供内容
特色图像替代文本焦点关键词 + 市场限定词,例如 " 在肯尼亚销售"媒体库
正文参见下面的规范WooCommerce 描述,文本 (HTML) 选项卡

在承诺替代文本之前,检查图像是否存在。 curl -sL "$BASE/wp-json/wp/v2/media?search=<topic>&per_page=20" 在大多数 WordPress 安装上是公开的,并返回每个匹配项的 source_url 和 alt_text。见证于2026-10-13 /installation-of-pop-up-sprinklers/:pop up、popup 和 lawn 返回 0 个条目,sprinkler 返回了两张 喷枪 照片——一种与埋地草坪喷头不同的产品。因此正确的文档包行是“不存在合规的特色图像;上传真实的站点照片”,而不是为没有人拥有的图片编写替代文本。切勿发明图像,也切勿重复使用同一类别但不同产品的照片,仅仅为了让检查变绿。

站点名称陷阱

RankMath 会在你输入的标题后面附加一个站点名称模板,因此字段长度和渲染长度不同。 在预算标题之前,在目标站点上测量附加内容:获取 相同内容类型 的3个活页面的 <title> 字符串,取最长的公共后缀。其字符数就是模板的实际成本;输入预算 = 60 减去该数字。

两个已测量的失败模式,因此将数字视为按类型计算,而非站点常量:

  • 混合模板将后缀折叠为0字符。 在一个活商店上,产品渲染为 … - Example Online Shop,而文章是坏的(下一项),因此跨类型样本找不到公共后缀。这显示为“免费预算”,但这是错误的。在你正在撰写的内容类型内进行采样。

  • 模板可能已损坏并直接渲染。 商店的文章 /greenhouse-construction/ 的标题是 Greenhouse Construction: Framing & Netting Installation - %s——一个未替换的 printf 占位符。当后缀看起来不对时,在信任任何预算之前,先读取该确切页面的原始 <title>。

  • 三个同类型的页面可能显示三个不同的附加内容。 模板仅控制 RankMath 标题字段 为空 的页面;在任何有人输入了标题的页面上,该字符串直接渲染——包括错误的品牌。该商店的四个产品测量到 23、29、11 和 0 字符的后缀,其中一个携带了 公司 的站点名称。因此按类型采样给你的是模板,而非页面。 针对你正在撰写的页面进行预算:获取其自己的 <title>,并与字段内容进行差异比较。

示例:在该商店中,产品模板附加23个字符,因此一个48字符的输入标题渲染为71字符,未通过长度检查——但仅针对仍在使用模板的页面。参见工作示例。如果附加内容足够长,以至于每个标题都缺少空间,结构性修复优于绕过:在 Rank Math,标题与元数据,产品中缩短模板。

标题可读性需要三个独立元素

RankMath 针对三个独立的检查对标题进行评分,它们不可互换。现在所有三个都可以本地测试:scripts/check_title.cjs 是 assets/admin/js/analyzer.js 的逐行移植,check_listing.sh 将它们打印为三个更多的计分关卡。

  1. 一个 数字 —— 插件的规则基本上是 /\\d+/.test(title)。任何数字都算数:90 Degree、4 Pumps、裸 10。切勿发明一个。
  2. 一个 力量词 —— 小写的标题按空格分割,每个词与 rankMath.assessor.powerWords(PHP 列表 assets/vendor/powerwords/en.php,1,103个条目)进行匹配,匹配规则为 word === entry 或 startsWith(word, entry),最多允许4个额外字符。已验证成员:best, easy, proven, affordable, amazing, excellent, essential, ultimate, free, price, quality, expert。 top 不在列表中 —— 它只携带情感,因此无论此技能之前怎么说,Top 从未通过力量检查。
  3. 一个 情感词 —— 捆绑的 sentiment 词典(9,196个带标签的词,合并 RankMath 的附加和 extras 后)对标题中的令牌求和,当前一个令牌是否定词(not、dont、isnt 等)时符号翻转。 当且仅当总和非零时通过,因此一个正面词和一个负面词可能相互抵消,显示为RED。

一个词可以同时清除检查2和3,这重写了预算算法。 best 既是力量词又是情感词 +5;easy (+4)、proven (+2)、affordable (+2)、amazing (+4)、excellent (+5) 也是;cheap 是力量词且为负 −3。见证于2026-10-14:一个文档包宣称力量和情感是 无法避免的RED,后续的重新测试发现...

[此处文本截断]

相关技能