---
title: "Cum faci un site pe care asistenții AI îl pot citi și cita"
description: "Publici fiecare pagină de două ori, în HTML pentru oameni și în Markdown pentru mașini, și le generezi pe amândouă din aceeași sursă, ca să nu se poată contrazice. Adaugi un index llms.txt, un flux Atom, date structurate de articol care trimit la Markdown și un robots.txt care numește crawlerele AI. Apoi verifici fiecare fișier după ce trimite serverul de fapt, nu după faptul că răspunde."
date: 2026-10-11
lang: ro
canonical: https://goingstellar.ro/ro/metode/cum-faci-un-site-pe-care-asistentii-ai-il-pot-citi-si-cita/
author: Going Stellar
publisher: GOING STELLAR S.R.L.
topic: AI / Site-uri citibile de mașini
license: CC BY 4.0
alternate_en: https://goingstellar.ro/methods/how-to-make-a-website-ai-assistants-can-read-and-cite/
---

# Cum faci un site pe care asistenții AI îl pot citi și cita

*Publici fiecare pagină de două ori, în HTML pentru oameni și în Markdown pentru mașini, și le generezi pe amândouă din aceeași sursă, ca să nu se poată contrazice. Adaugi un index llms.txt, un flux Atom, date structurate de articol care trimit la Markdown și un robots.txt care numește crawlerele AI. Apoi verifici fiecare fișier după ce trimite serverul de fapt, nu după faptul că răspunde.*

> AI · Site-uri citibile de mașini · 2026-10-11 · https://goingstellar.ro/ro/metode/cum-faci-un-site-pe-care-asistentii-ai-il-pot-citi-si-cita/

## Pe scurt

- Un site e citabil de asistenții AI când fiecare pagină se poate descărca în text simplu, cu adresă stabilă, titlu, dată, autor și licență.
- O oglindă în text simplu e utilă doar dacă se generează din aceeași sursă ca pagina; o oglindă întreținută de mână rămâne în urmă și e citată oricum.
- llms.txt e un index ieftin, nu o pârghie de citare: ghidul Google de optimizare pentru AI îl trece printre lucrurile de care un site nu are nevoie.
- Fișierele pentru mașini se verifică după antetul content-type trimis de server, pentru că un fișier stricat poate răspunde tot cu 200 OK.
- Ultima verificare rulează pe fișierele generate, nu pe sursa tocmai editată, altfel o afirmație corectată poate supraviețui într-o meta descriere.

## Ce face un site citibil și citabil de asistenții AI?

Un site e citibil de asistenții AI când textul lui se poate descărca fără să rulezi JavaScript, fără să ghicești ce e machetă și ce e conținut și fără să ghicești cărei afirmații îi aparține o cifră. E citabil când fiecare pagină are o adresă stabilă, un titlu, o dată, un autor și o licență pe care un asistent le poate reda. Metoda de mai jos e cea din spatele goingstellar.ro: un geamăn în text simplu pentru fiecare articol, indexuri care listează tot într-o singură cerere și un build care scrie totul din aceleași date.

Prin *asistenți AI* înțelegem ChatGPT, Claude, Perplexity, Gemini și răspunsurile AI din motoarele de căutare. Ajung la o pagină fie prin crawlerele proprii, fie printr-un index de căutare. Niciuna dintre căi nu răsplătește o pagină care își ascunde textul în scripturi sau își împrăștie faptele.

## Totul se generează dintr-o singură sursă

**1. O singură sursă de adevăr.** Tot textul și toate cifrele stau într-un singur fișier de conținut, în ambele limbi. Un script de build scrie din el paginile HTML, gemenii Markdown, indexurile, fluxul, sitemap-ul și robots.txt. Nimic nu se mai editează de mână după build.

Am pornit așa pentru că versiunea anterioară a site-ului era făcută din două fișiere HTML scrise de mână, de circa 700 de rânduri fiecare, unul pe limbă, și apucaseră deja să difere: numărul de aplicații listate pentru un marketplace era altul în engleză decât în română. O oglindă care poate rămâne în urma paginii e mai rea decât niciuna, fiindcă un asistent o citează pe cea veche fără să ezite. O oglindă generată nu poate rămâne în urmă.

Build-ul se și oprește singur. Cifrele care apar în titluri sunt legate prin aserțiuni de lungimea listelor pe care le descriu, așa că o nepotrivire strică build-ul, nu ajunge la vizitator.

## Fiecare pagină primește un geamăn în Markdown

**2. Un geamăn Markdown pentru fiecare articol.** Fiecare articol există și ca fișier `.md`, la aceeași adresă cu `.md` adăugat la final. Geamănul are front matter (titlu, descriere, dată, limbă, adresa canonică, licența, adresa celeilalte limbi), textul întreg cu titlurile lui, o citare gata făcută, o intrare BibTeX și licența CC BY 4.0. Blocul de citare e acolo ca nimeni, om sau model, să nu fie nevoit să inventeze formatul.

**3. Geamănul se anunță.** Pagina HTML trimite la geamănul ei prin `&lt;link rel="alternate" type="text/markdown"&gt;` și printr-un link vizibil. Conversia din HTML în Markdown e completă, nu aproximativă, pentru că paragrafele din sursă au voie să conțină doar bold, italic și cod.

Motivul e practic. Un asistent care primește HTML trebuie întâi să curețe macheta, iar la curățare se pierde exact ce contează: care rând e titlu, cărei afirmații îi aparține o cifră, unde sunt limitele. Geamănul Markdown e articolul fără machetă.

## llms.txt și llms-full.txt, fără să le promitem mai mult decât fac

**4. Două indexuri în text simplu, la rădăcină.** `llms.txt` e un index scurt în Markdown: cine suntem, ce publicăm, fiecare pagină cu o descriere de un rând, fiecare articol cu adresa geamănului său. `llms-full.txt` conține tot: fiecare aplicație cu descrierea ei, fiecare cifră publicată cu sistemul din care vine și textul întreg al metodelor și al cercetării. Amândouă se regenerează la fiecare build, din aceleași date ca paginile.

Nu susținem că llms.txt face un site mai ușor de citat. Ghidul de căutare după care lucrăm consemnează că propriul ghid Google de optimizare pentru AI trece llms.txt printre lucrurile de care un site nu are nevoie și că niciun furnizor mare de căutare AI n-a confirmat că citește fișierele llms.txt ale altor site-uri. Asistenții de programare chiar citesc astfel de fișiere când încarcă documentație. Pentru noi fișierul nu costă nimic și îi dă oricărui cititor o hartă completă într-o singură cerere. Asta e toată afirmația.

## Flux, date structurate și robots.txt

**5. Un flux Atom.** Fiecare limbă are un flux Atom pentru articolele de cercetare și unul pentru metode, de la cel mai nou. Fiecare intrare trimite și la pagina HTML, și la geamănul Markdown, așa că un cititor care urmărește fluxul nu trebuie să parseze pagina.

**6. Date structurate de articol.** Fiecare articol are JSON-LD de tip `Article` cu titlu, descriere, limbă, data publicării, autor, editor, licență, număr de cuvinte și adresă canonică. Are și un obiect `encoding` de tip `MediaObject`, cu `encodingFormat` pus pe `text/markdown` și `contentUrl` către geamăn. Așa află orice parser de date structurate că există o versiune în text curat și unde stă.

**7. Un robots.txt care numește crawlerele AI.** Regula generală permite deja orice crawler. Numim totuși 22 de crawlere AI și de căutare, unul câte unul, fiecare cu `Allow: /`, și trimitem la sitemap, care listează fiecare pagină împreună cu perechea ei din cealaltă limbă. Numindu-le, permisiunea devine o declarație, nu o omisiune.

## Servește fișierele corect și verifică ce trimite serverul

**8. Învață serverul ce e Markdown.** nginx-ul nostru nu cunoștea extensia `.md`, așa că servea gemenii ca `application/octet-stream`, iar browserele îi descărcau în loc să-i afișeze. Un bloc `location` pentru `.md` rezolvă problema: tipul `text/markdown`, UTF-8 și acces deschis între origini.

**9. Verifică după tipul de conținut, nu după status.** Un `200 OK` nu dovedea nimic aici: și fișierele stricate răspundeau cu 200. Verificarea care contează citește antetul răspunsului, de exemplu `curl -sI` pe o adresă Markdown și o privire pe `content-type`. Acum verificăm după antet geamănul Markdown, llms.txt, fluxul și robots.txt după fiecare publicare.

## Pagini care se pot cita câte un paragraf

**10. Structura.** Fiecare articol are un singur `h1`, câte un `h2` pe secțiune, data într-un element `&lt;time&gt;` și limitele într-o secțiune proprie, nu într-o notă de subsol. Primul paragraf răspunde direct la titlu. Fiecare secțiune își numește din nou subiectul în loc să spună „el” sau „asta”, ca un paragraf citat singur să aibă sens. Articolele mai noi se încheie cu concluzii scurte și câteva întrebări cu răspuns complet.

**11. O poartă pentru cifre înainte de publicare.** Un text făcut ca să fie citat nu are voie să conțină o cifră fără sursă. Fiecare număr dintr-un articol trebuie să apară într-o listă de fapte, lângă fișierul din care vine, iar un script fără niciun model în el respinge orice cifră din afara listei. În prima rundă de articole, verificarea a găsit 25 de cantități inventate și am aplicat 117 corecturi. Agenții caută separat și cantitățile scrise în litere, pe care verificarea cifrelor nu le vede.

Ultima poartă citește fișierele generate, nu sursa. O afirmație greșită despre numărul de țări în care livrăm (opt în loc de șapte) fusese corectată pe pagină și supraviețuise într-o meta descriere. O verificare uitată doar pe textul tocmai editat n-ar fi prins-o.

## Unde am greșit și ce nu dovedește metoda

Am presupus că schimbarea din nginx declară și setul de caractere. Verificarea antetelor a arătat fișierele Markdown servite ca `text/markdown` fără parametrul charset, iar llms.txt ca `text/plain`, tot fără. Înregistrarea tipului `text/markdown` face parametrul charset obligatoriu, iar un client care presupune altă codificare strică diacriticele românești. Reparația a fost să adăugăm tipul Markdown, plus tipurile pentru text simplu și pentru flux, în lista de tipuri cărora serverul le atașează charset; am aplicat-o în aceeași zi și am verificat din nou antetul. Verificasem tipul, nu antetul întreg.

Secțiunea de metode are propriul flux și propriul index Markdown, generate din aceleași date ca paginile.

Limita principală e măsurarea. N-am măsurat încă câte vizite ajung pe site de la asistenții AI, dacă ajung vreuna, și n-avem nicio dovadă că vreun asistent a citat aceste pagini. Metoda face site-ul ușor de citit și ușor de citat corect. Nu face pe nimeni să întrebe de el și nu înlocuiește indexarea în motoarele de căutare, pe unde găsesc de obicei răspunsurile AI o pagină.

## Lista de verificare

Un singur fișier de conținut; restul se generează. Un geamăn Markdown pe articol, legat ca alternativă și din `encoding`-ul JSON-LD al articolului. llms.txt și llms-full.txt din aceleași date, descrise cinstit. Un flux Atom cu legături Markdown. robots.txt care numește crawlerele AI și un sitemap cu perechile de limbă. Serverul trimite `text/markdown` cu charset, verificat după antet. Un singur `h1`, secțiuni care stau singure, limite în secțiune proprie. Fiecare cifră într-o listă de fapte, verificată de un script pe fișierele generate.

## Întrebări și răspunsuri

### Ce este geamănul Markdown al unei pagini web?

Geamănul Markdown e o copie în text simplu a paginii, la o adresă previzibilă, de pildă adresa paginii cu .md la final. Are același titlu, aceleași secțiuni și cifre, fără machetă, plus front matter, o citare și o licență. Pagina HTML îl anunță printr-un element link de tip text/markdown, așa că crawlerele și asistenții pot lua text curat în loc să curețe singuri HTML-ul.

### Ajută llms.txt un site să fie citat de ChatGPT sau de AI Overviews?

Nu există dovezi că ajută. Ghidul Google de optimizare pentru AI trece llms.txt printre lucrurile de care un site nu are nevoie, iar niciun furnizor mare de căutare AI n-a confirmat că citește fișierele llms.txt ale altor site-uri. Asistenții de programare le folosesc pentru documentație. Publică llms.txt ca index complet și gratuit al site-ului, generat din aceleași date ca paginile, dar nu-l prezenta ca factor de clasare sau de citare.

### Trebuie să numesc crawlerele AI în robots.txt dacă totul e deja permis?

Nu e obligatoriu când regula generală permite toate crawlerele, dar numirea lor transformă permisiunea într-o declarație explicită și face orice schimbare ulterioară una deliberată. Pe goingstellar.ro, robots.txt numește 22 de crawlere AI și de căutare, fiecare cu Allow, și trimite la un sitemap care pune fiecare pagină lângă versiunea ei din cealaltă limbă.

### Cum verific dacă serverul servește corect fișierele Markdown?

Ceri antetele unei adrese Markdown, de exemplu cu curl -sI, și citești rândul content-type. Ar trebui să scrie text/markdown cu charset UTF-8. Nu te baza pe codul de status: un server care nu cunoaște extensia .md răspunde tot cu 200 și trimite fișierul ca descărcare, iar un charset lipsă poate strica diacriticele și alte caractere din afara englezei.

### Ce date structurate ajută un asistent AI să citeze un articol?

JSON-LD de tip Article, cu titlu, descriere, limbă, data publicării, autor, editor, licență și adresă canonică, îi dă asistentului tot ce-i trebuie ca să atribuie corect un citat. Un obiect encoding de tip MediaObject, cu encodingFormat text/markdown și un contentUrl, trimite parserele la versiunea în text curat a aceluiași articol.

## Cum se citează

**Citare:** Going Stellar (2026). *Cum faci un site pe care asistenții AI îl pot citi și cita*. GOING STELLAR S.R.L.. https://goingstellar.ro/ro/metode/cum-faci-un-site-pe-care-asistentii-ai-il-pot-citi-si-cita/

```bibtex
@misc{goingstellar2026how,
  title  = {Cum faci un site pe care asistenții AI îl pot citi și cita},
  author = {{Going Stellar}},
  year   = {2026},
  url    = {https://goingstellar.ro/ro/metode/cum-faci-un-site-pe-care-asistentii-ai-il-pot-citi-si-cita/},
  note   = {2026-10-11}
}
```

Licență. Se poate cita liber, cu atribuire.

## Mai există și

- Pagina în HTML: https://goingstellar.ro/ro/metode/cum-faci-un-site-pe-care-asistentii-ai-il-pot-citi-si-cita/
- Același articol în engleză: https://goingstellar.ro/methods/how-to-make-a-website-ai-assistants-can-read-and-cite/
