Questo sito utilizza cookie tecnici necessari per il funzionamento e cookie di analisi per migliorare l'esperienza utente. Informativa sulla Privacy

Agenti AI

Parlare con AI tramite il tuo sito web: guida a llms.txt

Un'AI che visita un sito web vede qualcosa di molto diverso da quello che vede un essere umano. Vede tag <nav>, <header>, cookie banner, script di analytics, menu ripetuti su ogni pagina, footer con link legali, e — da qualche parte in mezzo — il contenuto che interessava davvero.

Un essere umano filtra tutto questo automaticamente. Un'AI deve processarlo, pesarlo, capire cosa è segnale e cosa è struttura della pagina. Per un agente AI che deve rispondere a "cosa fa questa azienda?", leggere la homepage di un sito ottimizzato per la conversione richiede lo stesso lavoro di leggere un documento con il 90% di testo ridondante.

Il problema non è teorico. È il motivo per cui le AI descrivono spesso le aziende in modo generico, confondono servizi simili, o non riescono a rispondere a domande specifiche su un prodotto anche quando le risposte sono pubblicamente disponibili sul sito.

llms.txt è la soluzione.

Cos'è llms.txt

llms.txt è un file di testo in formato Markdown posizionato nella root di un sito web — raggiungibile all'URL /llms.txt. Contiene una descrizione strutturata del sito pensata specificamente per essere consumata da sistemi AI.

È stato proposto da Jeremy Howard (fast.ai) nel 2024, e il principio è semplice: invece di chiedere alle AI di estrarre il segnale dal rumore di un sito ottimizzato per umani, dai loro direttamente il segnale.

Il formato è volutamente minimalista:

# Nome dell'organizzazione

> Descrizione densa: cosa fa, per chi, quale valore specifico.

## Servizi

- [Servizio A](URL): Cosa è, per chi, output concreto.

## Blog

- [Titolo articolo](URL): L'insight principale in una riga.

## Contatti

- [Demo](URL): Come iniziare.

Niente HTML. Niente CSS. Niente struttura di navigazione. Solo contenuto.

I tre file dell'ecosistema

llms.txt non è un file singolo — è il nome di un sistema composto da tre livelli, ognuno pensato per un caso d'uso diverso.

llms.txt — l'indice navigabile

Il file principale. Contiene link con descrizioni, organizzati in sezioni tematiche. Un'AI che legge solo llms.txt deve poter rispondere a: cosa fa questa organizzazione, a chi si rivolge, quali servizi offre, come contattarla. Se non riesce senza visitare altri URL, il file è incompleto. Dimensione tipica: 5–50 KB.

llms-full.txt — il contenuto completo

Dove llms.txt dice "questo articolo parla di X (vedi URL)", llms-full.txt include direttamente il testo dell'articolo. È la versione per sistemi che vogliono consumare tutto il sito in una singola richiesta senza fare crawling pagina per pagina.

Il caso d'uso principale è nei sistemi RAG aziendali: invece di configurare un crawler per indicizzare 50 pagine, carichi llms-full.txt come documento unico e il tuo knowledge base ha subito il contenuto di tutto il sito. Dimensione tipica: 100 KB–5 MB.

Versioni per lingua

Un sito multilingua può avere versioni localizzate — /it/llms.txt, /de/llms.txt — che reindirizzano solo ai contenuti nella lingua corretta. Un agente AI interrogato in italiano viene così guidato verso i contenuti italiani, non verso la versione inglese di default.

Chi legge questi file — e quando

Questa è la parte più importante, e quella che viene capita meno.

ClaudeBot — il crawler di training di Anthropic

Anthropic ha un web crawler che si identifica con lo User-Agent ClaudeBot/1.0. Crawla il web per raccogliere dati di training. Rispetta robots.txt, quindi puoi controllarlo:

# robots.txt
User-agent: ClaudeBot
Allow: /

# Per escludere sezioni specifiche:
User-agent: ClaudeBot
Disallow: /admin/

ClaudeBot legge il sito come qualsiasi altra pagina web. llms.txt contribuisce al training come qualsiasi documento di qualità sul sito. Il suo valore principale qui è la chiarezza del contenuto, non il formato.

Agenti AI con browsing runtime

Quando un utente chiede a Claude o ChatGPT di "andare su un sito e spiegare cosa fa", l'AI visita il sito in tempo reale con un tool di browsing. Qui llms.txt ha valore diretto: un agente ben configurato legge /llms.txt come primo passo, ottiene subito una mappa strutturata, e può rispondere con molto più contesto.

Crawler semantici — Perplexity, You.com, Bing AI

I motori di ricerca basati su AI leggono llms.txt attivamente come punto di partenza del crawling. Lo usano come mappa per decidere quali pagine indicizzare con priorità. Essere listati in directory come llmstxt.site amplifica questa visibilità.

Pipeline RAG aziendali

Un'organizzazione che costruisce un assistente AI interno può configurarlo per leggere llms-full.txt come fonte di conoscenza. Il file viene caricato nel vector store del sistema RAG al posto di fare crawling dell'intero sito.

SistemaLegge llms.txt?Legge llms-full.txt?
AI in chat (senza browsing)NoNo
AI con browsingRaramenteNo
ClaudeBot (training)Come qualsiasi paginaCome qualsiasi pagina
Crawler semanticiSì, come prioritàNo
Agenti customSe configurato
Pipeline RAGSolo se inclusoSì, è fatto per questo

Come implementarlo: quattro approcci

Approccio 1: file statico

Il modo più semplice. Crei un file llms.txt nella root del sito e lo aggiorni manualmente. Limite: si desincronizza dal blog a ogni nuovo articolo.

Approccio 2: Next.js App Router

In Next.js, crei una route handler in app/llms.txt/route.ts. Next.js la serve come risposta HTTP a /llms.txt.

// app/llms.txt/route.ts
import { getAllPosts } from '@/lib/posts';

export const dynamic = 'force-static';

export async function GET() {
  const posts = await getAllPosts('en');

  const lines = [
    '# Nome Organizzazione\n',
    '> Descrizione.\n',
    '## Blog\n',
    ...posts.map(p => `- [${p.title}](${p.url}): ${p.excerpt}`)
  ];

  return new Response(lines.join('\n'), {
    headers: { 'Content-Type': 'text/plain; charset=utf-8' },
  });
}

Con force-static, il file viene generato a build time — aggiornato a ogni deploy senza overhead runtime.

Approccio 3: build-time script — Vite, React, PHP/MySQL

Per stack senza server Node.js in produzione, il file si genera prima del deploy con uno script Node.js che chiama l'API e scrive il file nel filesystem:

// scripts/generate-llms.js
import { writeFileSync } from 'fs';

async function fetchAllPosts(lang) {
  const res = await fetch(
    `${API_BASE}/blog/get-posts.php?status=published&lang=${lang}&limit=50`
  );
  const data = await res.json();
  return data.posts ?? [];
}

// genera il contenuto e scrive llms.txt
writeFileSync('llms.txt', content, 'utf8');
writeFileSync('dist/llms.txt', content, 'utf8');
// package.json
{
  "scripts": {
    "generate-llms": "node scripts/generate-llms.js",
    "build:full": "node scripts/generate-llms.js && vite build"
  }
}

Approccio 4: PHP dinamico

Per siti PHP puri, si crea un file che genera il contenuto e si usa .htaccess per servire /llms.txt attraverso quel file:

# .htaccess
RewriteRule ^llms\.txt$ /llms-dynamic.php [L]
<?php
header('Content-Type: text/plain; charset=utf-8');
header('Cache-Control: public, max-age=3600');

$posts = $pdo->query("
  SELECT slug, title_en, excerpt_en
  FROM blog_posts WHERE status = 'published'
  ORDER BY published_at DESC
")->fetchAll();

echo "# Nome Organizzazione\n\n";
foreach ($posts as $p) {
  echo "- [{$p['title_en']}](https://example.com/en/blog/{$p['slug']}): {$p['excerpt_en']}\n";
}

La struttura che un'AI si aspetta

Il contenuto conta quanto il formato. Sezioni obbligatorie:

  • H1 + Blockquote — identità primaria e descrizione densa
  • Servizi/Prodotti — con descrizioni reali, non copy di marketing
  • Blog/Risorse — ogni articolo con l'insight principale in una riga
  • Contatti — come iniziare

Sezioni che aumentano il valore:

  • Target & Differenziatori — per chi, cosa distingue dalla concorrenza
  • Key Facts — 5-6 domande frequenti con risposta diretta nel file
  • Stack/Integrazioni — tecnologie e piattaforme supportate

Dove registrare il file

Una volta pubblicato:

  • llmstxt.site — la directory principale, consultata da developer e crawler AI
  • robots.txt — aggiungi # llms.txt: /llms.txt come commento informativo
  • Sitemap XML — alcune implementazioni includono llms.txt per assicurarne l'indicizzazione

Il momento giusto per iniziare

llms.txt è in una fase di adozione precoce. I siti che lo implementano adesso hanno un vantaggio competitivo reale: vengono rappresentati meglio dalle AI rispetto ai competitor che non l'hanno ancora fatto.

Il costo di implementazione è basso — un file statico si crea in un'ora, una route dinamica in mezza giornata. Il vantaggio è diretto: chiunque usi un agente AI per fare ricerca sui propri fornitori troverà la tua organizzazione descritta con precisione, e i competitor descritti con approssimazione.

I sistemi AI sono diventati parte del percorso di ricerca enterprise. llms.txt è il modo per assicurarsi che quando un CTO chiede a un agente AI "quali aziende fanno AI automation governance?", la risposta includa la tua.

AGORÀ

Decisioni basate su dati affidabili.

Supervisione continua. Scelte mirate.

© 2018-2026 AGORÀ. All rights reserved.

Advanced technology for intelligent automation.