Meta 生成的硬约束交给脚本校验:Title 55–60 字符含 PKW、Description 150–160 字符含 PKW、全站唯一、不含 NKW。模型负责在约束内写文案,四种页面类型各有固定公式。生成后必须跑校验脚本,不通过的重新生成。
AI Skill:Meta 标签批量生成(基于注册表字段)
为什么 Meta 值得单独做一个 Skill
Title 和 Meta description 有几个特点让它们特别适合 Skill 化:
- 约束极其明确:字符数有硬上限,必须含 PKW,必须全站唯一
- 数量大且重复:50 个页面就是 100 条文案
- 质量可量化:长度、关键词位置、唯一性都能脚本检查
- 但又需要创意:在 60 字符内写出有点击欲的文案,规则做不到
这正是“确定性交给脚本、判断交给模型”的典型场景。
一、硬约束清单
这些是脚本可以 100% 检查的:
| 约束 | Title | Description |
|---|---|---|
| 字符长度 | 50–60(英文) | 145–160(英文) |
| 必须包含 PKW | ✅ | ✅ |
| PKW 位置 | 越靠前越好(理想在前 30 字符内) | 前 120 字符内 |
| 全站唯一 | ✅ 完全唯一 | ✅ 完全唯一 |
| 不含 NKW | ✅ | ✅ |
| 品牌名位置 | 结尾(` | Brand`) |
关于字符长度的实际依据
Google 搜索结果的显示宽度是像素,不是字符数。但像素测量在批量场景下不实用,所以用字符数近似:
Title:Google 移动端约 580px,桌面端约 600px
英文平均字符宽 ~10px → 约 58–60 字符
中文字符宽约 20px → 约 28–30 字符
Description:约 920px(桌面)/ 680px(移动)
英文 → 约 155–160 字符(移动端约 110)
中文 → 约 75–80 字符
中英文混排的处理:用“半角当量宽度”计算——中文字符按 2 个半角计。这个方法站内 Meta 审计 Skill 已经用来解决中文截断误判问题,这里沿用同一套算法。
二、四种页面类型的 Meta 公式
固定公式能保证批量生成的一致性,同时留出文案空间。
Pillar 页(commercial)
Title 公式:
{PKW} | {Brand}
或(PKW 较短时):{PKW} - {1–2个差异化词} | {Brand}
示例:
Industrial Centrifugal Pump Manufacturer | AquaFlow (52 字符)
Centrifugal Pump Manufacturer - Custom OEM | AquaFlow (56 字符)
Description 公式:
{含 PKW 的能力陈述} + {1个具体数字/认证} + {服务范围} + {CTA}
示例:
Leading centrifugal pump manufacturer with 20+ years OEM experience.
ISO 9001 certified pumps for chemical, water treatment and food
processing. Request a free quote. (158 字符)
SKU Cluster 页(engineering)
Title 公式:
{型号} {产品名} Specifications & Datasheet | {Brand}
示例:
CP-100 Centrifugal Pump Specifications & Datasheet | AquaFlow (60 字符)
Description 公式:
{型号} + {核心参数范围(2–3项)} + {材料/认证} + {下载 CTA}
示例:
CP-100 centrifugal pump specifications: flow 5-120 m³/h, head
10-50 m, temperature up to 120°C. Cast iron, SS316 and duplex
steel options. Download datasheet. (156 字符)
参数直接写进 Description 是 SKU 页的关键——工程师在搜索结果页就能初步判断是否符合需求,点进来的都是高意图流量。
Application Cluster 页(engineering)
Title 公式:
{产品} for {场景} | Selection Guide | {Brand}
示例:
Centrifugal Pump for Chemical Transfer | Selection Guide | AquaFlow (67 → 超长)
Centrifugal Pump for Chemical Transfer | AquaFlow (48 字符)
Description 公式:
{场景选型要点} + {关键参数/材料要求} + {认证} + {推荐引导}
示例:
Selecting centrifugal pumps for chemical transfer: material
compatibility (SS316, Hastelloy, PVDF), seal options, and ATEX
requirements. Recommended models and specs. (154 字符)
Resource Cluster 页(informational)
Title 公式:
{PKW}? {补充说明} (问句形式,匹配搜索意图)
或:{PKW}: {Complete Guide / Comparison}
示例:
What Is a Centrifugal Pump? Working Principle & Types (54 字符)
Centrifugal vs Gear Pump: Complete Selection Guide (50 字符)
Description 公式:
{直接回答核心问题} + {涵盖内容} + {适用读者}
⚠️ 注意:Resource 页的 Description 不要加 CTA 商业引导,
保持 informational 意图纯净(第 09 篇的意图边界原则)
示例:
A centrifugal pump uses a rotating impeller to convert kinetic
energy into pressure. Learn the working principle, pump types,
and typical industrial applications. (150 字符)
注意 Resource 页的品牌名可以省略——Title 空间宝贵,informational 词的搜索者不关心品牌,把字符留给内容描述更有效。
三、Skill 说明书
# Skill:Meta 标签批量生成
## 何时使用
- 新增一批页面需要写 Meta
- pSEO 批量生成页面后补 Meta
- GSC 发现某批页面 CTR 偏低需要重写 Meta
## 输入
- `registry.json`(提供 PKW / SKW / NKW / page_type)
- 可选:现有页面的 Meta(用于唯一性检查和 CTR 对比)
- 可选:GSC 的 CTR 数据(用于识别需要重写的页面)
## 执行步骤
### Step 1:读取注册表,按 page_type 分组
执行 `scripts/meta-prepare.mjs`,输出每个页面的生成上下文:
PKW、SKW、NKW、page_type、对应的 Meta 公式。
### Step 2:按公式生成(你来写)
对每个页面,按其 page_type 的公式生成 Title 和 Description。
**生成规则(严格遵守)**:
1. Title 必须完整包含 PKW,且 PKW 尽量靠前
2. Title 长度 50–60 半角当量(中文字符算 2)
3. Description 必须完整包含 PKW
4. Description 长度 145–160 半角当量
5. 严禁出现该页面 NKW 中的任何词
6. Resource 页的 Description 不加商业 CTA
7. SKU 页的 Description 必须包含至少 2 个具体参数数值
8. 不使用空洞词:world-class, leading(除有实据),
best, top-quality, high-quality, professional
**关于 "leading" 的例外**:如果有可验证的依据(如市场份额数据、
行业排名),可以使用;纯自我宣称则禁用。
### Step 3:运行校验脚本
执行 `scripts/meta-validate.mjs --input generated-meta.json`
脚本检查全部硬约束。任何一项不通过,回到 Step 2 重新生成
该页面的 Meta——不要手工微调,重新生成质量更好。
### Step 4:输出结果
## 输出格式
生成阶段输出 JSON(供校验脚本读取):
```json
[
{
"page_slug": "/products/centrifugal-pumps/",
"page_type": "pillar",
"title": "Industrial Centrifugal Pump Manufacturer | AquaFlow",
"description": "Leading centrifugal pump manufacturer with 20+ years OEM experience. ISO 9001 certified pumps for chemical, water treatment and food processing. Request a free quote."
}
]
校验通过后输出汇总报告:
# Meta 批量生成报告
生成页面数:[N]
校验通过:[N] 需重写:[N]
## 校验结果
### ✅ 通过([N] 项)
| 页面 | Title 长度 | Desc 长度 | PKW 位置 |
|------|-----------|-----------|----------|
| /products/centrifugal-pumps/ | 52 | 158 | Title 第 1 词 |
### ❌ 需重写([N] 项)
#### /applications/centrifugal-pump-chemical-transfer/
- 问题:Title 67 字符(超出 60 上限)
- 当前:Centrifugal Pump for Chemical Transfer | Selection Guide | AquaFlow
- 建议:删除 "Selection Guide",改为
Centrifugal Pump for Chemical Transfer | AquaFlow(48 字符)
#### /products/centrifugal-pumps/cp-200s/
- 问题:Description 含 NKW "manufacturer"
- 当前:...from a trusted manufacturer with SS316 options...
- 建议:改为 ...with SS316 and duplex steel casing options...
## 唯一性检查
- Title 重复:[N] 组
- Description 重复:[N] 组
(如有重复,列出具体页面)
禁止行为
- 不要跳过校验脚本直接交付
- 校验失败的项不要手工截断字符(会破坏句子完整性), 应重新生成
- 不要为了塞满字符数而堆砌关键词
- 不要给所有页面用同一个 Description 模板套数据 (会产生高度相似的 Meta,Google 可能判为重复)
---
## 四、校验脚本
```javascript
// scripts/meta-validate.mjs
import fs from 'fs/promises';
const registry = JSON.parse(await fs.readFile('registry.json', 'utf8'));
const generated = JSON.parse(
await fs.readFile(process.argv[process.argv.indexOf('--input') + 1], 'utf8')
);
// 半角当量宽度:中文/全角字符算 2,其余算 1
function widthOf(str) {
let w = 0;
for (const ch of str) {
// CJK 统一汉字、全角标点、日韩文字
w += /[ᄀ-ᅟ⺀-가-힣豈-︰-﹏-⦆¢-₩]/.test(ch) ? 2 : 1;
}
return w;
}
const LIMITS = {
title: { min: 40, max: 60 },
description: { min: 140, max: 160 },
};
// 空洞词黑名单
const BANNED = [
'world-class', 'world class', 'best in class', 'top-quality',
'high-quality', 'top quality', 'cutting-edge', 'state-of-the-art',
'one-stop', 'professional manufacturer',
];
const results = [];
const titleSeen = new Map();
const descSeen = new Map();
for (const item of generated) {
const row = registry.find(r => r.page_slug === item.page_slug);
const issues = [];
if (!row) {
issues.push({ type: 'not_in_registry', detail: item.page_slug });
} else {
const pkw = row.pkw.toLowerCase();
const nkw = (row.nkw ?? []).map(n => n.toLowerCase());
// Title 检查
const tWidth = widthOf(item.title);
if (tWidth < LIMITS.title.min || tWidth > LIMITS.title.max) {
issues.push({
type: 'title_length',
width: tWidth,
limit: LIMITS.title,
});
}
if (!item.title.toLowerCase().includes(pkw)) {
issues.push({ type: 'title_missing_pkw', pkw: row.pkw });
} else {
// PKW 位置(越靠前越好)
const pos = item.title.toLowerCase().indexOf(pkw);
if (pos > 30) {
issues.push({ type: 'title_pkw_too_late', position: pos });
}
}
// Description 检查
const dWidth = widthOf(item.description);
if (dWidth < LIMITS.description.min || dWidth > LIMITS.description.max) {
issues.push({
type: 'description_length',
width: dWidth,
limit: LIMITS.description,
});
}
if (!item.description.toLowerCase().includes(pkw)) {
issues.push({ type: 'description_missing_pkw', pkw: row.pkw });
}
// NKW 检查(Title 和 Description 都查)
const combined = `${item.title} ${item.description}`.toLowerCase();
const nkwHits = nkw.filter(n => combined.includes(n));
if (nkwHits.length) {
issues.push({ type: 'contains_nkw', hits: nkwHits });
}
// Resource 页不应有商业 CTA
if (row.page_type === 'cluster-resource') {
const ctaWords = ['request a quote', 'contact us', 'buy now',
'get a quote', 'order now'];
const ctaHits = ctaWords.filter(c => combined.includes(c));
if (ctaHits.length) {
issues.push({ type: 'resource_has_commercial_cta', hits: ctaHits });
}
}
// SKU 页 Description 应含数值参数
if (row.page_type === 'cluster-sku') {
const hasNumbers = /\d+\s*[-–]\s*\d+|\d+\s*(m³\/h|bar|kw|°c|mm|gpm|psi)/i
.test(item.description);
if (!hasNumbers) {
issues.push({ type: 'sku_description_no_specs' });
}
}
}
// 空洞词检查
const combined = `${item.title} ${item.description}`.toLowerCase();
const bannedHits = BANNED.filter(b => combined.includes(b));
if (bannedHits.length) {
issues.push({ type: 'banned_phrases', hits: bannedHits });
}
// 唯一性检查
const tKey = item.title.toLowerCase().trim();
if (titleSeen.has(tKey)) {
issues.push({ type: 'duplicate_title', otherPage: titleSeen.get(tKey) });
} else {
titleSeen.set(tKey, item.page_slug);
}
const dKey = item.description.toLowerCase().trim();
if (descSeen.has(dKey)) {
issues.push({ type: 'duplicate_description', otherPage: descSeen.get(dKey) });
} else {
descSeen.set(dKey, item.page_slug);
}
results.push({
page_slug: item.page_slug,
titleWidth: widthOf(item.title),
descriptionWidth: widthOf(item.description),
pass: issues.length === 0,
issues,
});
}
const failed = results.filter(r => !r.pass);
console.log(JSON.stringify({
summary: {
total: results.length,
passed: results.length - failed.length,
failed: failed.length,
},
failed,
passed: results.filter(r => r.pass).map(r => ({
page: r.page_slug,
titleWidth: r.titleWidth,
descWidth: r.descriptionWidth,
})),
}, null, 2));
process.exit(failed.length > 0 ? 1 : 0);
五、用 CTR 数据反向优化
Meta 的最终目标是点击率,不是字符数合规。生成后 4–8 周,用 GSC 数据回看:
GSC → Performance → Pages → 对比同类页面的 CTR
判断基准(B2B 工业品参考值):
- 排名 1–3 位:CTR 应 > 15%
- 排名 4–10 位:CTR 应 > 5%
- 排名 11–20 位:CTR 应 > 1.5%
低于基准 → Meta 需要重写
重写时的调整方向:
| 症状 | 可能原因 | 调整 |
|---|---|---|
| 排名高但 CTR 低 | Description 没说清价值 | 加具体数字/认证 |
| Title 被截断 | 超长 | 缩短,PKW 前移 |
| CTR 骤降 | Google 重写了你的 Description | Description 与页面内容相关性不足,需对齐 |
关于 Google 重写 Meta:Google 有时会忽略你的 Description,自己从正文摘一段。这通常意味着它认为你的 Description 与查询意图不匹配。解决方向是让 Description 更贴近页面实际内容,而不是写成宣传语。
→ AI Skill:Content Brief 生成——给定关键词输出写作简报
RELATED / 相关推荐
接着读这些
按同一分类、系列与标签为你挑选。
AI Skill:竞品关键词差距分析
竞品有排名而你没有的词,是最确定的增长机会——市场需求已经被验证。这个 Skill 用脚本做多竞品词库的集合运算,找出共同覆盖但你缺失的词(最高价值),模型负责按业务相关性过滤和排序,输出可直接进注册表的机会清单。
AI Skill:页面覆盖度审计——找出注册表中无对应页面的词
注册表里躺着一批词,但对应的页面还没建——这是最容易被遗忘的增长机会。这个 Skill 用脚本做注册表与实际路由的差集比对,模型负责按业务价值排序并输出可执行的建页清单。
AI Skill:注册表审计——关键词抢词与归属冲突检测
把注册表的唯一性约束检查固化成一个可复用 Skill:确定性脚本负责扫描注册表和页面内容,模型负责判断语义级抢词和给出合并建议,中间用一份写清判定规则和输出格式的说明书连接。