用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/lennney/gate-all-skills --skill seo-metadata命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | seo-metadata |
| description | Next.js SEO 完整配置。涵盖 Metadata API、Open Graph、JSON-LD 结构化数据、Sitemap、Robots.txt。新建页面或 SEO 整改时加载。 |
| trigger | 需要配置 SEO 元数据 |
| input | 网站信息 |
| output | SEO 配置代码 |
| next | 无 |
| dependencies | 无 |
// 每个 page.tsx 顶部
import type { Metadata } from 'next'
import { getSiteConfig } from '@/lib/site'
{ generateSiteMetadata }
site = ()
: = (site, {
: ,
: ,
: ,
: { : , : },
: [...(site. || []), , ],
})
| 项 | 规则 |
|---|---|
| pageTitle | 含品牌名 MECCHA CHAMELEON,不拼错。格式:主题 — 子主题 (em dash,前后空格) |
| pageDescription | 150-155 字符。一段完整的描述,含 2-3 个目标关键词。不要截断、不要清单 |
| canonicalPath | 必填。从 / 开始,如 /platforms。空字符串 '' 表示首页 |
| robots | 内容页 { index: true, follow: true },法律页 { index: false, follow: false } |
| keywords | 只在 /platforms、/buy、/requirements 等需要大量长尾词覆盖的页面追加 |
首页也需要单独的 metadata 导出——不要只依赖 layout.tsx 默认值。
import { generateSiteMetadata } from '@/lib/seo'
const site = getSiteConfig()
export const metadata: Metadata = generateSiteMetadata(site, {
pageTitle: 'Paint Yourself Invisible | Hide-and-Seek Party Game (2026)',
pageDescription: 'MECCHA CHAMELEON is a creative hide-and-seek party game on Steam (PC). Paint to blend in. $5.99, Very Positive, 2-10 players. Tips, requirements, and guide.',
canonicalPath: '',
robots: { index: true, follow: true },
})
必须用 generateSiteMetadata,不能手写原始 Metadata 对象。否则缺 canonical URL、OG、Twitter Card。
import { getSiteConfig } from '@/lib/site'
import { generateSiteMetadata } from '@/lib/seo'
const site = getSiteConfig()
export const metadata: Metadata = generateSiteMetadata(site, {
pageTitle: 'Privacy Policy',
pageDescription: 'Privacy policy for MECCHA CHAMELEON guide. Data collection, cookies, and your rights.',
canonicalPath: '/privacy',
robots: { index: false, follow: false },
})
export const metadata: Metadata = generateSiteMetadata(site, {
pageTitle: 'Paint Yourself Invisible | Hide-and-Seek Party Game (2026)',
})
✅ MECCHA CHAMELEON Platforms — PS5, Mac, Mobile & PC Support (2026)
❌ MECCA CHAMELEON Platforms —PS5, Mac, Mobile & PC Support (2026)
❌ MECCHA CHAMELEON Platforms —PS5... // em dash 后缺空格
规则:
—)前后各加一个空格(2026) 年号| 状态 | 字符数 |
|---|---|
| ✅ 理想 | 150-155 |
| ⚠️ 可接受 | 145-160 |
| ❌ 太长 | >165(Google 会截断) |
| ❌ 太短 | <100(浪费曝光机会) |
裁剪技巧:
原本: "MECCHA CHAMELEON tips and tricks —best camouflage techniques ranked S to B, Seeker search strategies, common beginner mistakes, and how to find hidden players. Master both roles with pro strategies." (168 chars)
裁剪: "MECCHA CHAMELEON tips and tricks — ranked camouflage techniques S to B, Seeker strategies, beginner mistakes, and how to find hidden players. Master both roles." (152 chars)
关键:删冗余副词、合并同类项、去掉不必要的修饰词。
| 页面类型 | JSON-LD Schema | 必须字段 |
|---|---|---|
| 首页 | VideoGame + WebSite | aggregateRating, offers, operatingSystem |
| 评测 | Review + VideoGame | reviewRating, itemReviewed, aggregateRating |
| FAQ | FAQPage(多条 Question/Answer) | 至少 5 个问答对 |
| 购买指南 | Product + Offer | offers.price, offers.availability |
| 平台/需求/模式 | VideoGame | aggregateRating, offers, operatingSystem |
| 所有内容页 | BreadcrumbList | 通过 generateBreadcrumbJsonLd 自动生成 |
不要只写 name + url + description。aggregateRating 和 offers 是最重要的——它们触发搜索结果的星级评分和价格标签。
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify({
'@context': 'https://schema.org',
'@type': 'VideoGame',
name: data.name,
url: 'https://meccha-chameleon.info/classes',
description: '页面描述',
operatingSystem: 'Windows 10/11 64-bit',
applicationCategory: 'GameApplication',
aggregateRating: {
'@type': 'AggregateRating',
ratingValue: data.rating, // 4.3
bestRating: data.ratingMax, // 5
ratingCount: data.ratingCount, // 16348
},
offers: {
'@type': 'Offer',
price: '5.99',
priceCurrency: 'USD',
availability: 'https://schema.org/InStock',
url: data.steamUrl,
},
}),
}}
/>
内容页是手风琴 <details>,JSON-LD 需要所有问答对:
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify({
'@context': 'https://schema.org',
'@type': 'FAQPage',
mainEntity: data.faqs.map((faq) => ({
'@type': 'Question',
name: faq.q,
acceptedAnswer: {
'@type': 'Answer',
text: faq.a, // 纯文本,不要含 HTML 标签
},
})),
}),
}}
/>
注意: acceptedAnswer.text 里不要含 <a> 标签或 HTML。Schema 解析器偏好纯文本。
export default function sitemap(): MetadataRoute.Sitemap {
const site = getSiteConfig()
const baseUrl = `https://${site.domain}`
const mainPages = ['', '/guide', '/review', '/faq', '/classes', '/tier', '/items', '/platforms', '/buy', '/requirements']
const legalPages = ['/privacy', '/tos', '/disclaimer']
const entries: MetadataRoute.Sitemap = [
...mainPages.map(path => ({
url: `${baseUrl}${path}`,
changeFrequency: (path === '' ? 'weekly' : 'monthly') as 'weekly' | 'monthly',
priority: path === '' ? 1.0 : 0.8,
})),
...legalPages.map(path => ({
url: `${baseUrl}${path}`,
changeFrequency: 'monthly' as const,
priority: 0.3,
})),
]
return entries
}
原则:
/jump(跳转中间页)不加入 sitemapmainPages 数组export default function robots(): MetadataRoute.Robots {
const site = getSiteConfig()
return {
rules: {
userAgent: '*',
allow: '/',
disallow: ['/jump', '/api/'],
},
sitemap: `https://${site.domain}/sitemap.xml`,
}
}
| 页面类型 | 最低外链数(指向站内其他页) |
|---|---|
| 首页 | 至少 5 个 |
| 指南类页面 | 至少 3 个(指向其他指南页) |
| 购买/平台/需求页 | 至少 3 个 |
| FAQ | 至少 6 个(涵盖所有内容页) |
| 法律页 | 1-2 个即可 |
每个指南页(guide/classes/items/tier)在底部 CTA 前加导航栏:
<section className="section" style={{ padding: '2rem 0' }}>
<div className="container">
<div style={{ maxWidth: '800px', margin: '0 auto' }} className="reveal">
<p style={{ textAlign: 'center' }}>
<strong>Related guides:</strong>{' '}
<a href="/guide">Beginner's Guide</a> —
<a href="/classes">Game Modes</a> —
<a href="/items">Camouflage Guide</a>
</p>
</div>
</div>
</section>
在 FAQ 的 a 答案文本中嵌入指向对应详细页面的链接:
"MECCHA CHAMELEON is currently available exclusively on PC via Steam. See our
<a href="/platforms">Platform Availability Guide</a>for full breakdown."
从 Google Search Console / 关键词工具导出的 CSV 中,提取:
示例优先级矩阵:
| 关键词 | 搜索量 | 增长 | 动作 |
|---|---|---|---|
| ps5, mac, mobile | 20+ | 20%+ | 新建 /platforms |
| steam key | 5+ | 30%+ | 新建 /buy |
| cloud save error | 1+ | 160%+ | 强化 /requirements |
| tips, how to play | 一致 | 稳定 | 已有覆盖 ✅ |
| 项目 | 说明 |
|---|---|
| OG 图片 | 每个页面用独立的 OG 图片(至少不同标题 overlay)。当前只有一张 capsule.jpg |
| favicon | 至少 favicon.svg + apple-touch-icon.png。考虑 PWA 的 icon-192x192.png |
| 字体数量 | 最多 3 个 Google Font 家族。5 个以上影响 LCP |
| hreflang | 如果支持多语言,在 alternates 中添加 hreflang 标签 |
| WebP/AVIF | 图片用 WebP 格式替代 JPEG,减小传输体积 |