SEO & Metadata Builder
Prerequisites & Dependencies
- Node.js 18+ or a build tool (Vite, Webpack, Next.js)
- Mandatory packages:
npm i next-seo (for Next.js) or manual template generation
- Access to the application's data: page title, description, site URL, author, and entity types
- Optional:
npm i react-helmet for dynamic meta management in React
Execution Steps
- Inventory all pages that need SEO metadata: home, articles, product pages, error pages
- For each page, collect the required fields:
title, description, url, image, type, siteName, and social handles
- Generate HTML meta tags:
<title>, <meta name="description">, <meta charset>, <meta viewport>
- Add Open Graph tags:
og:title, og:description, og:image, og:url, og:type, og:locale
- Add Twitter Card tags:
twitter:card, twitter:title, twitter:description, twitter:image, twitter:creator
- Generate JSON-LD structured data:
@context, @type (e.g., Article, Product, Organization), and relevant properties (author, datePublished, price, availability)
- Insert all tags into your
_document.js (Next.js) or head component, ensuring they are server-rendered and hydrated correctly
- Validate your markup: use
Google Search Console, Facebook Sharing Debugger, and schema.org validators
// Example: Comprehensive SEO component for Next.js using next-seo
import React from 'react';
import { NextSeo } from 'next-seo';
const SeoMetadata = ({ title, description, image, slug }) => (
<NextSeo
title={title}
description={description}
openGraph={{
type: 'website',
url: `https://example.com${slug}`,
images: [{ url: image, width: 1200, height: 630 }],
}}
twitter={{
card: 'summary_large_image',
title,
description,
images: [image],
}}
jsonLD={[
{
'@context': 'https://schema.org',
'@type': 'Organization',
name: 'Example Corp',
url: 'https://example.com',
logo: '/logo.png',
},
]}
/>
);
export default SeoMetadata;
1---2name: seo-metadata-builder3description: Generate complete HTML meta tags, Open Graph, Twitter Cards, and JSON-LD structured data.4metadata:5 source: skills/seo-metadata-builder/seo-metadata-builder.md6---78# SEO & Metadata Builder910## Prerequisites & Dependencies11- Node.js 18+ or a build tool (Vite, Webpack, Next.js)12- Mandatory packages: `npm i next-seo` (for Next.js) or manual template generation13- Access to the application's data: page title, description, site URL, author, and entity types14- Optional: `npm i react-helmet` for dynamic meta management in React1516## Execution Steps171. Inventory all pages that need SEO metadata: home, articles, product pages, error pages182. For each page, collect the required fields: `title`, `description`, `url`, `image`, `type`, `siteName`, and social handles193. Generate HTML meta tags: `<title>`, `<meta name="description">`, `<meta charset>`, `<meta viewport>`204. Add Open Graph tags: `og:title`, `og:description`, `og:image`, `og:url`, `og:type`, `og:locale`215. Add Twitter Card tags: `twitter:card`, `twitter:title`, `twitter:description`, `twitter:image`, `twitter:creator`226. Generate JSON-LD structured data: `@context`, `@type` (e.g., `Article`, `Product`, `Organization`), and relevant properties (`author`, `datePublished`, `price`, `availability`)237. Insert all tags into your `_document.js` (Next.js) or `head` component, ensuring they are server-rendered and hydrated correctly248. Validate your markup: use `Google Search Console`, `Facebook Sharing Debugger`, and `schema.org validators`2526```javascript27// Example: Comprehensive SEO component for Next.js using next-seo28import React from 'react';29import { NextSeo } from 'next-seo';3031const SeoMetadata = ({ title, description, image, slug }) => (32 <NextSeo33 title={title}34 description={description}35 openGraph={{36 type: 'website',37 url: `https://example.com${slug}`,38 images: [{ url: image, width: 1200, height: 630 }],39 }}40 twitter={{41 card: 'summary_large_image',42 title,43 description,44 images: [image],45 }}46 jsonLD={[47 {48 '@context': 'https://schema.org',49 '@type': 'Organization',50 name: 'Example Corp',51 url: 'https://example.com',52 logo: '/logo.png',53 },54 ]}55 />56);5758export default SeoMetadata;59```