Cyber SEO: 50% reducere
Preferințe

Confidențialitatea contează pentru noi, așa că ai opțiunea de a dezactiva anumite tipuri de stocare care nu sunt necesare pentru funcționarea de bază a site-ului. Blocarea categoriilor poate afecta experiența ta pe site. Mai multe informații (Politica privind cookie-urile)

Acceptă toate cookie-urile

SEO Next.js: randare, metadate, hărți ale site-ului și un blog care se clasează

Ghid SEO pentru Next.js: alege SSG, SSR sau ISR, setează metadatele și etichetele canonical, generează sitemap.xml, rulează un blog alimentat prin webhook și rămâi lizibil pentru crawlerele AI.

Publicat pe
25/10/2026
Actualizat pe
25/10/2026
Timp de citire
8 min
Captură de ecran Sorank cu un card alb etichetat SEO tehnic și textul „SEO Next.js”, peste o listă de articole

Instrumente

Pe această pagină

Pe scurt

Next.js este unul dintre cele mai bune framework-uri React pentru SEO, pentru că trimite crawlerelor HTML complet, nu o carcasă goală. Ca să te clasezi, pre-randează paginile de conținut (generare statică sau ISR), definește titlurile, descrierile și etichetele canonical cu Metadata API, generează sitemap.xml și robots.txt din dosarul app, folosește linkuri reale și coduri de stare corecte și ține conținutul principal în afara codului care rulează doar în client, pentru că majoritatea crawlerelor AI nu rulează JavaScript.

Vrei să afli mai mult? Întreabă

Test rapid

Ți se potrivește SEO și cum ar trebui să începi?

Întrebarea 1 din 425%
Oamenii caută pe Google ce vinzi?

SEO Next.js ține în primul rând de alegerea corectă pentru fiecare rută: ce se randează pe server, ce se păstrează în cache și ce ajunge în HTML înainte ca vreun script să ruleze. Google explică în elementele de bază ale SEO pentru JavaScript că procesează aplicațiile JavaScript în trei faze (parcurgere, randare, indexare) și că „randarea pe server sau pre-randarea rămâne o idee foarte bună”. Next.js face asta implicit. Ghidul acoperă App Router (Next.js 13 și versiunile ulterioare), cu note pentru vechiul Pages Router.

Este Next.js bun pentru SEO?

Da. O aplicație React simplă, construită cu randare pe client, trimite un fișier HTML aproape gol și construiește pagina în browser; motoarele de căutare trebuie să o randeze, iar multe boturi nu o fac niciodată. Next.js randează React pe server, deci răspunsul HTML conține deja titlurile, textul, linkurile și metadatele. Ghidul nostru despre SEO pentru JavaScript explică de ce contează diferența pentru indexare.

În App Router, componentele sunt Server Components implicit. Chiar și componentele marcate 'use client' sunt pre-randate în HTML pe server. Punctul slab sunt datele: orice este adus în useEffect sau încărcat doar după un clic lipsește din HTML-ul inițial. Adu conținutul în Server Components și păstrează componentele client pentru interactivitate.

SSG, SSR, ISR sau CSR: ce mod de randare să alegi?

Next.js îți permite să combini modurile ruta cu ruta. Alegerea influențează prospețimea, viteza și ce primesc crawlerele.

ModCând se construiește HTML-ulVerdict SEOPotrivit pentru
Generare statică (SSG)La buildCel mai bun: HTML complet, foarte rapidPagini de prezentare, documentație, articole atemporale
Regenerare statică incrementală (ISR)La build, apoi reîmprospătat în fundal sau la cerereCel mai bun pentru site-uri mari sau cu schimbări frecventeBloguri, cataloage de produse, pagini CMS
Randare pe server (SSR)La fiecare cerereBun: HTML complet, depinde de viteza serveruluiPagini personalizate sau în timp real
Randare pe client (CSR)În browserSlab: conținut invizibil pentru majoritatea boturilorTablouri de bord în spatele unei autentificări

Documentația Next.js despre ISR enumeră beneficiile: actualizarea conținutului static „fără să reconstruiești întregul site” și gestionarea unui număr mare de pagini fără build-uri lungi. O rută cu export const revalidate = 3600 este regenerată cel mult o dată pe oră; pentru un control exact, apelează revalidatePath sau revalidateTag când se schimbă conținutul. Atenție: ISR nu funcționează cu un export static (output: 'export'). Pentru aplicațiile care trebuie să rămână randate pe client, ghidul nostru despre SEO pentru aplicațiile cu o singură pagină acoperă soluțiile de ocolire.

Sfat

Verifică ce primesc boții, nu ce vezi în browser: rulează curl pe adresă sau deschide view-source și caută o propoziție din articol. Dacă nu se află în HTML-ul brut, depinde de JavaScript.

Cum setezi titlurile, descrierile și etichetele canonical cu Metadata API?

Metadata API înlocuiește next/head în App Router. Conform documentației Next.js despre metadate, exporți un obiect static de metadate dintr-un layout sau o pagină, sau o funcție generateMetadata când valorile depind de date, iar Next.js generează etichetele head. Ambele sunt acceptate doar în Server Components.

export async function generateMetadata({ params }) {
  const { slug } = await params
  const post = await getPost(slug)
  return {
    title: post.title,
    description: post.excerpt,
    alternates: { canonical: `/blog/${slug}` },
    openGraph: { images: [post.cover] },
  }
}

Cinci reguli care previn majoritatea problemelor:

  • Setează metadataBase în layout-ul rădăcină (domeniul tău de producție), ca etichetele canonical relative și adresele Open Graph să devină absolute.
  • Folosește un șablon de titlu în layout-ul rădăcină, de exemplu '%s | Brand', ca fiecare pagină să aibă un titlu unic, cu brandul o singură dată.
  • Dă fiecărei pagini indexabile o etichetă canonical care indică spre ea însăși prin alternates.canonical; asta protejează împotriva duplicatelor create de parametrii din adresă și de slash-ul final. Intrarea noastră din glosar despre eticheta canonical explică regulile.
  • Scrie o descriere pentru fiecare pagină, generată din conținutul din generateMetadata, niciodată o descriere implicită pentru tot site-ul.
  • Adaugă imagini Open Graph cu un fișier opengraph-image în dosarul rutei și verifică rezultatul cu un instrument de previzualizare Open Graph.

Pe paginile dinamice, Next.js transmite metadatele în flux după primii octeți, ca să accelereze randarea. Documentația precizează că streaming-ul este dezactivat pentru boții care așteaptă metadatele în head, detectați după user agent (Bingbot, Twitterbot și Slackbot sunt printre exemple), iar opțiunea htmlLimitedBots personalizează lista. Dacă ție îți pasă de un crawler care nu este acoperit, adaugă-l. În Pages Router, echivalentul este componenta Head din next/head, cu un atribut key ca să eviți etichetele duplicate.

Cum generezi sitemap.xml și robots.txt în Next.js?

Ambele sunt fișiere speciale din dosarul app. Un fișier sitemap.ts care exportă o funcție ce returnează adrese devine /sitemap.xml; un fișier robots.ts devine /robots.txt. Referința pentru sitemap notează că fișierul este pus în cache implicit și că limita Google este de 50.000 de adrese pe sitemap; peste această limită, generateSitemaps îl împarte în mai multe fișiere.

import type { MetadataRoute } from 'next'

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const posts = await getPosts()
  return posts.map((p) => ({
    url: `https://example.com/blog/${p.slug}`,
    lastModified: p.updatedAt,
  }))
}

Include doar adrese canonical, indexabile, care returnează 200, și folosește data reală a actualizării în lastModified. Sitemap-ul acceptă și alternates.languages pentru site-urile multilingve. În robots.ts, indică sitemap-ul și decide ce boturi AI au voie să parcurgă site-ul; articolul nostru despre robots.txt pentru crawlerele AI le enumeră. Mai multe despre format găsești în intrarea noastră din glosar despre harta XML a site-ului.

Ce detalii tehnice strică cel mai des SEO-ul Next.js?

ProblemăCe se întâmplăSoluție
Navigare cu onClick și router.pushGoogle urmărește doar elementele a care au un hrefFolosește componenta Link din next/link, care randează un link real
Conținut lipsă afișat ca pagină 200Soft 404 în Search ConsoleApelează notFound() ca ruta să returneze un cod 404
Redirecționări temporare pentru pagini mutateredirect() trimite un 307Folosește permanentRedirect() sau permanent: true în next.config (308)
Slash-uri finale amestecateDouă adrese pentru aceeași paginăAlege una cu opțiunea trailingSlash și păstrează etichetele canonical consecvente
Versiuni de previzualizare sau de test indexateCopii duplicate ale site-ului în GoogleTrimite noindex pe domeniile care nu sunt de producție
Conținut din taburi încărcat la clicText absent din HTMLRandează tot conținutul pe server și ascunde-l cu CSS dacă e nevoie

Toate aceste probleme reduc parcurgibilitatea: un crawler trebuie să poată descoperi fiecare adresă prin linkuri și să primească un cod de stare curat.

Cum adaugi date structurate în Next.js?

Documentația Next.js recomandă randarea JSON-LD ca etichetă script de tip application/ld+json direct în componenta paginii sau a layout-ului, construită din aceleași date ca pagina, iar caracterul < din JSON-ul serializat să fie scăpat pentru a preveni injectarea. Fiind randat pe server, este văzut în HTML-ul brut atât de Google, cât și de crawlerele AI. Folosește Article (sau BlogPosting) pentru articole, Organization în layout-ul rădăcină, BreadcrumbList pentru paginile adânci și Product pentru comerț electronic. Un generator de schema îți dă un punct de plecare valid, apoi validează pagina cu Rich Results Test de la Google.

Cum faci un site Next.js suficient de rapid pentru Core Web Vitals?

Next.js include componentele care tratează cauzele obișnuite ale unor Core Web Vitals slabe:

  • next/image: redimensionează imaginile, servește formate moderne, încarcă leneș implicit și cere dimensiuni, ceea ce previne deplasările de layout. Marchează imaginea principală din zona vizibilă ca prioritară, ca să nu fie încărcată leneș (de obicei este elementul Largest Contentful Paint).
  • next/font: găzduiește fonturile local și evită deplasarea provocată de schimbările târzii de font.
  • next/script: încarcă scripturile terțe cu o strategie (afterInteractive, lazyOnload) în loc să blocheze pagina.
  • Mai puțin JavaScript în client: fiecare limită 'use client' adaugă cod de descărcat și de hidratat, ceea ce apasă pe Interaction to Next Paint de pe mobil.

Măsoară datele de teren, nu doar scorul de laborator: ghidul nostru despre PageSpeed Insights arată cum citești ambele.

Cum rulezi un blog pe Next.js care se clasează?

Un blog Next.js ia de obicei una din trei forme: fișiere MDX sau Markdown în depozit (simplu, dar fiecare articol cere un commit și un deploy), un CMS headless (Sanity, Contentful, Strapi, Payload) adus în Server Components sau un webhook de publicare care primește articole dintr-un instrument extern. În toate cele trei cazuri, modelul SEO este același: o rută dinamică app/blog/[slug] cu generateStaticParams, generateMetadata, ISR, sitemap-ul alimentat din aceeași sursă și o pagină index care leagă fiecare articol.

Modelul cu webhook scoate publicarea din ciclul de deploy. Un Route Handler primește articolul, îl salvează, apoi reîmprospătează paginile afectate:

// app/api/publish/route.ts
import { revalidatePath } from 'next/cache'

export async function POST(request) {
  if (request.headers.get('authorization') !== `Bearer ${process.env.PUBLISH_SECRET}`) {
    return new Response('Unauthorized', { status: 401 })
  }
  const article = await request.json()
  await savePost(article)
  revalidatePath('/blog')
  revalidatePath(`/blog/${article.slug}`)
  return Response.json({ ok: true })
}

Atenție

Protejează endpoint-ul cu un secret și reîmprospătează exact adresa publică. Documentația ISR avertizează că, cu mai multe instanțe de server și cache-ul implicit pe fișiere, reîmprospătarea la cerere curăță doar instanța care primește apelul; folosește un handler de cache partajat.

Cum te ajută SEO Next.js să fii citat de asistenții AI?

Randarea pe server este prima condiție pentru GEO (optimizarea pentru motoarele generative). Analiza Vercel din decembrie 2024, Ascensiunea crawlerului AI, a constatat că „niciunul dintre principalii crawleri AI nu randează în prezent JavaScript”, numind GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot și PerplexityBot, și a numărat 569 de milioane de accesări GPTBot și 370 de milioane de accesări Claude pe rețeaua sa, într-o singură lună. O pagină Next.js care pre-randează textul, titlurile și JSON-LD este citibilă de toți; o pagină randată pe client nu este.

A doua condiție este conținutul care merită citat: articole care răspund la o întrebare pe secțiune, cu surse, cifre și definiții clare, publicate regulat. Asta este partea pe care Sorank, produsul nostru, o automatizează. Sorank este un software SEO și GEO în regim autopilot: găsește cuvintele tale cheie, iar generatorul de articole pentru blog scrie 20, 60 sau 120 de articole pe lună, cu surse, linkuri interne și imagini. Pe un site Next.js, se conectează prin webhook-ul personalizat descris pe pagina de instalare: Route Handler-ul tău primește fiecare articol, îl salvează și reîmprospătează blogul. Urmărirea mențiunilor AI verifică apoi în fiecare lună dacă ChatGPT, Claude și Gemini îți citează brandul.

Formularul generatorului de articole pentru blog Sorank care creează un articol SEO dintr-un cuvânt cheie țintă

Pe scurt: pre-randează fiecare pagină pe care vrei să fie găsită, definește metadatele pe server și alimentează sitemap-ul din aceeași sursă ca și conținutul. Next.js îți oferă uneltele; clasările și citările AI vin din ce publici cu ele. Ca să alimentezi un blog Next.js cu articole, vezi planurile Sorank, de la 49 de dolari pe lună, cu o perioadă de probă gratuită de 3 zile.

Întrebări frecvente

Este Next.js mai bun decât React pentru SEO?

Next.js este construit pe React, deci comparația este între abordările de randare. O aplicație React implicită cu o singură pagină se randează în browser și trimite un HTML aproape gol, în timp ce Next.js pre-randează paginile pe server sau la build. Crawlerele, inclusiv boții AI care nu rulează JavaScript, primesc de la Next.js conținut complet, fără configurare suplimentară.

Generează Next.js automat un sitemap?

Nu de la sine. În App Router adaugi un fișier sitemap.ts în dosarul app, care returnează adresele tale, iar Next.js îl servește la /sitemap.xml. Pentru site-urile mari, generateSitemaps împarte lista în mai multe fișiere, deoarece Google acceptă până la 50.000 de adrese pe sitemap.

Ar trebui să folosesc App Router sau Pages Router pentru SEO?

Amândouă se pot clasa bine, pentru că amândouă pre-randează HTML-ul. App Router este alegerea recomandată pentru proiectele noi: Server Components reduc JavaScript-ul din client, iar Metadata API, sitemap.ts și robots.ts gestionează nativ fișierele SEO. Pe un site existent cu Pages Router, migrarea merită rar doar pentru SEO.

Audit SEO și GEO gratuit

Primește gratuit planul tău de conținut pe 30 de zile

Analizăm concurenții, site-ul tău și vizibilitatea ta în AI pentru a crea gratuit un plan de conținut personalizat.

Instrumentele noastre SEO gratuite

Vezi toate instrumentele noastre gratuite

Primește un audit gratuit al site-ului tău

AU ÎNCERCAT SORANK ÎNAINTEA TA

Mărturii de la fondatori ambițioși

Creștere organicăE-commerce

de la 0 la 10000 de vizitatori în 5 luni

Celio Fabianomonrobotlavevitre.fr
Creștere organicăSoftware

de la 0 la 5000 de clienți în 8 luni

Thibault BMsorank.com
Creștere organicăAgrement și aviație

de la 0 la 1104 clicuri în 4 luni

Dominiqueflight-sensations-idf.com
Creștere organicăGenerare de lead-uri pentru instalatori

x98 clicuri în 2 luni

LeadBolt Agencyleadbolt.online
Creștere organicăSoftware pentru muzică

x55 clicuri în 5 luni

Valentin Cordiertiger-sounds.com