The Next.js Metadata API: a complete SEO setup that scales
Hand-writing meta tags per page guarantees drift. Here is how we wire the Metadata API once so no page can ship without a canonical, an OG image and a description.
Structured data is machine-readable markup, best implemented as JSON-LD in the page head or body, that describes what a page is about. It powers rich results such as breadcrumbs, review stars, product details and article cards, and it helps search and AI systems identify entities on your site.
| Type | Use on | Rich result |
|---|---|---|
| Organization | Site-wide | Knowledge panel signals |
| BreadcrumbList | Every deep page | Breadcrumb trail in results |
| Article / BlogPosting | Editorial content | Article treatment, dates |
| Product + Offer | Product pages | Price, availability, reviews |
| FAQPage | Genuine FAQ content | Limited eligibility today |
| LocalBusiness | Location pages | Map and business details |
| JobPosting | Job listings | Job search integration |
| HowTo, Recipe, Event, Course | Matching content | Type-specific rich results |
// Generate from the same data the page renders — no drift possible
export function ArticleJsonLd({ article }: { article: Article }) {
const data = {
"@context": "https://schema.org",
"@type": "BlogPosting",
headline: article.title,
description: article.description,
datePublished: article.publishedAt,
dateModified: article.updatedAt ?? article.publishedAt,
author: { "@type": "Person", name: article.author.name, url: article.author.url },
publisher: { "@type": "Organization", name: "ROVQIX", url: "https://rovqix.in" },
mainEntityOfPage: { "@type": "WebPage", "@id": article.url },
image: article.image,
};
return (
<script type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(data) }} />
);
}It helps machines identify entities, relationships and facts without inferring them from prose. Whether a given AI system consumes your JSON-LD directly is not always documented, but explicit, unambiguous data about your organisation, authors, products and articles reduces the chance of being misunderstood or misattributed.
Treat it as part of making your content machine-legible, alongside clean headings and self-contained answers. That framing survives changes in which specific rich results are available.
Not directly. It affects how your result is displayed and how well machines understand the page. Better display improves click-through, which has commercial value regardless of ranking.
JSON-LD. Google recommends it, and keeping the data separate from the visible markup makes it far easier to generate and test.
Markup that does not match visible content can trigger a manual action removing rich results. Errors in required properties simply make you ineligible rather than penalised.
There is no penalty for volume, but only mark up what genuinely applies. Adding types that do not describe the page adds noise rather than signal.
ROVQIX Growth
SEO & growth team, ROVQIX
The ROVQIX growth team handles technical SEO, Core Web Vitals and AI-search visibility for the sites we build. Recommendations here are the ones we apply to client projects and to rovqix.in itself.
ROVQIXdesigns and builds production web platforms — Next.js front ends, Node.js APIs and the infrastructure behind them. Tell us what you're building and we'll scope it with you.
Hand-writing meta tags per page guarantees drift. Here is how we wire the Metadata API once so no page can ship without a canonical, an OG image and a description.
Search engines stopped matching strings a long time ago. They match things — and if they cannot tell which thing you are, nothing else helps.
Technical SEO is mostly engineering work: correct status codes, canonical URLs, crawlable HTML and fast pages. None of it requires a keyword tool.
No spam. Just the occasional case study and craft breakdown.