Auditar o SEO de um site Next.js com o PageAudit
Audite a página publicada, corrija o head com a Metadata API, crie o robots.txt e o sitemap e audite de novo pelo npm.
Atualizado em
1Adicione o script de auditoria
Salve o script como scripts/seo-audit.mjs. Ele pede Node 18 ou mais novo e nenhum pacote.
// Audits a page with PageAudit and fails when the page has SEO errors.
// Usage: node scripts/seo-audit.mjs https://example.com/
const page = process.argv[2] ?? "https://example.com/";
const response = await fetch("https://pageaudit.online/api/audit", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ url: page }),
});
const report = await response.json();
if (response.status === 402 || response.status === 429) {
console.warn("No free PageAudit audits left today. Run it again tomorrow.");
} else if (!response.ok) {
console.error(`PageAudit answered ${response.status}: ${report.error}`);
process.exitCode = 1;
} else {
const { errors, warnings } = report.counts;
console.log(`Score ${report.score}: ${errors} errors, ${warnings} warnings`);
for (const issue of report.issues.filter((i) => i.severity === "error"))
console.error(`${issue.code}: ${issue.message}`);
if (errors) process.exitCode = 1;
}2Crie o comando do npm
Acrescente o comando seo:audit ao package.json, com o endereço da sua página publicada.
{
"scripts": {
"seo:audit": "node scripts/seo-audit.mjs https://example.com/"
}
}3Corrija o head
Rode npm run seo:audit. O título, a descrição e o canonical que faltam vão em app/layout.tsx, pela Metadata API.
import type { Metadata } from "next";
export const metadata: Metadata = {
metadataBase: new URL("https://example.com"),
title: { default: "Example Store", template: "%s | Example Store" },
description: "Handmade ceramic mugs and plates, shipped in 3 days.",
alternates: { canonical: "/" },
openGraph: { type: "website", siteName: "Example Store", images: ["/og.png"] },
};4Crie o robots.txt e o sitemap
O Next.js serve os dois arquivos a partir de app/robots.ts e app/sitemap.ts. Publique e rode npm run seo:audit de novo.
// app/robots.ts
import type { MetadataRoute } from "next";
export default function robots(): MetadataRoute.Robots {
return {
rules: { userAgent: "*", allow: "/" },
sitemap: "https://example.com/sitemap.xml",
};
}
// app/sitemap.ts
import type { MetadataRoute } from "next";
export default function sitemap(): MetadataRoute.Sitemap {
return [{ url: "https://example.com/", lastModified: new Date() }];
}