Page metadata skill

When the user wants to optimize meta tags other than title, description, Open Graph, or Twitter Cards.

by kostja94·MIT license·★ 1,006 Stars on the repo·GitHub ↗

Use now

Files of Page metadata

kostja94/main1 file shown
SKILL.md
Show the full text121 lines

SEO On-Page: Metadata (Other Meta Tags)

Guides optimization of meta tags beyond title, description, Open Graph, and Twitter Cards. Covers hreflang, robots, viewport, charset, and metadata completeness.

When invoking: On first use, if helpful, open with 1–2 sentences on what this skill covers and why it matters, then provide the main output. On subsequent use or when the user asks to skip, go directly to the main output.

Scope (On-Page SEO)

  • Hreflang: Language/region targeting for multilingual sites
  • Meta robots: index/noindex, follow/nofollow (page-level)
  • Viewport: Mobile responsiveness
  • Charset: Character encoding
  • Metadata completeness: All pages have title + meta description (see title-tag, meta-description)

Initial Assessment

Project context: Read root contextus.md when present and load only the modules relevant to this task. Without Contextus, use available project material or user-provided facts and ask for missing information; do not create a parallel context system.

Identify:

  1. Multi-language: zh, en, x-default if applicable
  2. Indexing: Full index, noindex for specific pages
  3. Tech stack: Next.js, HTML, etc.

hreflang (Multi-language)

Three non-negotiables: (1) Self-referencing tags (each page links to itself), (2) Symmetric annotations (every version lists ALL others), (3) Valid ISO 639-1 or language-region codes (en, en-US, zh-CN).

Implementation methods: HTML <link> in head, XML sitemap (xhtml:link), or HTTP headers. For SPAs/JS-rendered pages, use sitemap-based hreflang as backup. See rendering-strategies for SSR/SSG/CSR.

Canonical alignment: Canonical URL must match the same regional version hreflang refers to. Misalignment causes Google to ignore hreflang.

x-default: Fallback for users whose language/location doesn't match any version. Point to default locale or language-selector page.

Next.js (App Router)
export const metadata = {
  alternates: {
    languages: {
      'en-US': '/en/page',
      'zh-CN': '/zh/page',
      'x-default': '/en/page',
    },
  },
};
HTML (generic)
<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
<link rel="alternate" hreflang="zh" href="https://example.com/zh/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/page" />
Common Mistakes (Avoid)
  • Missing reciprocal references between language versions.
  • Canonical tag conflicting with hreflang.
  • Relying solely on machine translation without localization (see translation).
  • Ignoring mobile—hreflang must appear on both desktop and mobile.
  • Forgetting to update hreflang when page structure changes.

Meta Robots (Page-level)

Page-level control for indexing and link following. See indexing for which page types typically need noindex.

Directive Effect
noindex Exclude page from search results
nofollow Do not pass link equity through links on the page; does NOT prevent indexing
noindex,follow Exclude from SERP; allow crawlers to follow links (most common for thank-you, signup, legal)
noindex,nofollow Exclude + block link flow (login, staging, test pages)

Crawl vs index vs link equity: robots.txt = crawl control; noindex = index control; nofollow = link equity only. See robots-txt, indexing.

<meta name="robots" content="noindex, follow">

Next.js: metadata.robots = { index: false, follow: true }. Default is index: true, follow: true.

Viewport

<meta name="viewport" content="width=device-width, initial-scale=1">

Required for mobile-friendly pages; affects Core Web Vitals and mobile search. For full mobile-first indexing and mobile usability requirements, see mobile-friendly.

Charset

<meta charset="UTF-8">

Place in <head>; first child of <head> recommended.

Output Format

  • hreflang setup if multi-language
  • Meta robots if noindex needed
  • Viewport / charset if missing
  • title-tag, meta-description: Title and meta description
  • open-graph, twitter-cards: Social sharing; link previews
  • canonical-tag: Canonical + hreflang for multi-language
  • indexing: noindex page-type list; noindex vs nofollow
  • robots-txt: Crawl vs index; robots.txt vs noindex
  • mobile-friendly: Mobile-first indexing; viewport required
  • rendering-strategies: SSR, SSG, CSR; SPAs need sitemap-based hreflang
1---
2name: page-metadata
3description: When the user wants to optimize meta tags other than title, description, Open Graph, or Twitter Cards. Also use when the user mentions "hreflang," "meta robots," "viewport," "charset," "canonical meta," "other meta tags," "meta robots noindex," "meta robots nofollow," "hreflang tags," "viewport meta," or "meta charset." For title tags, use title-tag. For meta descriptions, use meta-description. For Facebook/LinkedIn previews, use open-graph. For X previews, use twitter-cards.
4metadata:
5 version: 1.2.0
6---
7 
8# SEO On-Page: Metadata (Other Meta Tags)
9 
10Guides optimization of meta tags beyond title, description, Open Graph, and Twitter Cards. Covers hreflang, robots, viewport, charset, and metadata completeness.
11 
12**When invoking**: On **first use**, if helpful, open with 1–2 sentences on what this skill covers and why it matters, then provide the main output. On **subsequent use** or when the user asks to skip, go directly to the main output.
13 
14## Scope (On-Page SEO)
15 
16- **Hreflang**: Language/region targeting for multilingual sites
17- **Meta robots**: index/noindex, follow/nofollow (page-level)
18- **Viewport**: Mobile responsiveness
19- **Charset**: Character encoding
20- **Metadata completeness**: All pages have title + meta description (see **title-tag**, **meta-description**)
21 
22## Initial Assessment
23 
24**Project context:** Read root `contextus.md` when present and load only the modules relevant to this task. Without Contextus, use available project material or user-provided facts and ask for missing information; do not create a parallel context system.
25 
26Identify:
271. **Multi-language**: zh, en, x-default if applicable
282. **Indexing**: Full index, noindex for specific pages
293. **Tech stack**: Next.js, HTML, etc.
30 
31## hreflang (Multi-language)
32 
33**Three non-negotiables**: (1) Self-referencing tags (each page links to itself), (2) Symmetric annotations (every version lists ALL others), (3) Valid ISO 639-1 or language-region codes (`en`, `en-US`, `zh-CN`).
34 
35**Implementation methods**: HTML `<link>` in head, XML sitemap (`xhtml:link`), or HTTP headers. For SPAs/JS-rendered pages, use sitemap-based hreflang as backup. See **rendering-strategies** for SSR/SSG/CSR.
36 
37**Canonical alignment**: Canonical URL must match the same regional version hreflang refers to. Misalignment causes Google to ignore hreflang.
38 
39**x-default**: Fallback for users whose language/location doesn't match any version. Point to default locale or language-selector page.
40 
41### Next.js (App Router)
42 
43```tsx
44export const metadata = {
45 alternates: {
46 languages: {
47 'en-US': '/en/page',
48 'zh-CN': '/zh/page',
49 'x-default': '/en/page',
50 },
51 },
52};
53```
54 
55### HTML (generic)
56 
57```html
58<link rel="alternate" hreflang="en" href="https://example.com/en/page" />
59<link rel="alternate" hreflang="zh" href="https://example.com/zh/page" />
60<link rel="alternate" hreflang="x-default" href="https://example.com/en/page" />
61```
62 
63### Common Mistakes (Avoid)
64 
65- Missing reciprocal references between language versions.
66- Canonical tag conflicting with hreflang.
67- Relying solely on machine translation without localization (see **translation**).
68- Ignoring mobile—hreflang must appear on both desktop and mobile.
69- Forgetting to update hreflang when page structure changes.
70 
71## Meta Robots (Page-level)
72 
73Page-level control for indexing and link following. See **indexing** for which page types typically need noindex.
74 
75| Directive | Effect |
76|-----------|--------|
77| `noindex` | Exclude page from search results |
78| `nofollow` | Do not pass link equity through links on the page; **does NOT prevent indexing** |
79| `noindex,follow` | Exclude from SERP; allow crawlers to follow links (most common for thank-you, signup, legal) |
80| `noindex,nofollow` | Exclude + block link flow (login, staging, test pages) |
81 
82**Crawl vs index vs link equity**: robots.txt = crawl control; noindex = index control; nofollow = link equity only. See **robots-txt**, **indexing**.
83 
84```html
85<meta name="robots" content="noindex, follow">
86```
87 
88Next.js: `metadata.robots = { index: false, follow: true }`. Default is `index: true, follow: true`.
89 
90## Viewport
91 
92```html
93<meta name="viewport" content="width=device-width, initial-scale=1">
94```
95 
96Required for mobile-friendly pages; affects Core Web Vitals and mobile search. For full mobile-first indexing and mobile usability requirements, see **mobile-friendly**.
97 
98## Charset
99 
100```html
101<meta charset="UTF-8">
102```
103 
104Place in `<head>`; first child of `<head>` recommended.
105 
106## Output Format
107 
108- **hreflang** setup if multi-language
109- **Meta robots** if noindex needed
110- **Viewport** / **charset** if missing
111 
112## Related Skills
113 
114- **title-tag, meta-description**: Title and meta description
115- **open-graph, twitter-cards**: Social sharing; link previews
116- **canonical-tag**: Canonical + hreflang for multi-language
117- **indexing**: noindex page-type list; noindex vs nofollow
118- **robots-txt**: Crawl vs index; robots.txt vs noindex
119- **mobile-friendly**: Mobile-first indexing; viewport required
120- **rendering-strategies**: SSR, SSG, CSR; SPAs need sitemap-based hreflang
121 

Discussion

Alternatives

Agentic Browsing ReadinessAudit and fix agent readiness: the Lighthouse Agentic Browsing fraction, accessibility tree for agents, robots.txt and Content-Signal for AI agents, WAF treatment of agent traffic, llms.txt, Markdown delivery, ai-catalog.json, /.well-known discovery files, and WebMCP tools. Exclude AI citability and brand signals (seo-geo) and commerce protocol depth (seo-ecommerce).Marketing · MITBacklink Profile AnalysisBacklink profile analysis: referring domains, anchor text distribution, toxic link detection, competitor gap analysis. Works with free APIs (Moz, Bing Webmaster, Common Crawl) and DataForSEO extension. Use when user says backlinks, link profile, referring domains, anchor text, toxic links, link gap, link building, disavow, or backlink audit.Marketing · MIT/setup-cmsConnect a CMS to notfair SEO tools. Guides users through configuring WordPress, Strapi, Contentful, or Ghost — tests the connection, and writes credentials to .env.local. Once set up, seo-analysis automatically cross- references CMS content against Google Search Console data. Use whenever the user says "connect my CMS", "set up WordPress", "configure Strapi", "add Contentful", "connect Ghost", or "CMS setup". Also trigger if the user asks why no CMS data appears in a seo-analysis report. · MITBacklink checkBacklink profile for any domain — referring domains, authority, anchors, new/lost links, and a side-by-side vs a competitor. Use when asked "check my backlinks", "backlink profile of X", "who links to them", or "link gap vs competitor".Marketing · MIT