← Tutte le idee Marketing e social

AEO Checker

Controlla se il tuo sito è pronto per comparire nelle risposte delle AI

Incasso mensile: 1100 USD (fonte indicata nella scheda)

Cosa fa

Uno strumento che analizza un sito e dice quanto è adatto a essere citato da assistenti come ChatGPT e Perplexity, con i punti da migliorare.

Come guadagna

Ha entrate ricorrenti ogni mese, verificate su TrustMRR. Prezzi e piani esatti sono indicati sul sito del progetto.

Rendilo tuo

  • Analisi in italiano per piccole aziende locali, con consigli pratici.
  • Controllo gratuito di base, report completo a pagamento.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Pronto per l'AI": analizza una pagina web e dice quanto è pronta per essere letta e citata da ChatGPT, Perplexity e gli altri assistenti, con l'elenco dei punti da sistemare. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Pagina iniziale con il campo per l'indirizzo e un esempio di report
2. Report con punteggio, controlli superati e da sistemare
3. Registrazione e accesso
4. I miei siti con lo storico dei controlli
5. Guida: cosa significa ogni controllo

Stile: chiaro e tecnico: sfondo bianco, verde #16A34A per i controlli superati, arancione #EA580C per gli avvisi, rosso #DC2626 per gli errori, carattere "Inter", punteggio grande in un cerchio. Nessuna immagine generica di stock.

Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.

2. Database, account e sicurezza

Collega il progetto a Supabase e attiva la registrazione con email e password.

Crea queste tabelle:
- "controlli": indirizzo, punteggio, risultato di ogni verifica in JSON, data, collegati all'utente

Regole di sicurezza obbligatorie:
- ogni utente vede solo i suoi controlli
- i crediti non si modificano dal browser

Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.

3. I controlli sulla pagina

La Edge Function "analizza" scarica la pagina indicata e il suo robots.txt, e fa controlli concreti (codice nei Dettagli tecnici):
- i robot degli assistenti AI (GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot, Google-Extended) possono leggere il sito?
- il testo principale è nell'HTML o compare solo dopo JavaScript?
- c'è un solo titolo H1 e titoletti ordinati?
- ci sono dati strutturati (Organization, FAQ, Product, Article)?
- c'è un file llms.txt? data di aggiornamento? autore?
- domande e risposte chiare nel testo?

Ogni controllo ha stato (ok, avviso, errore), spiegazione semplice e come sistemarlo.

4. Report e consigli

Il report mostra il punteggio da 0 a 100, i controlli raggruppati per importanza, e per ogni problema il pezzo di codice da aggiungere (es. il blocco robots.txt o i dati strutturati FAQ già compilati).

Pulsante "Consigli sul testo" (un credito): Claude legge il testo della pagina e suggerisce 5 domande frequenti con risposte brevi da aggiungere, scritte usando solo le informazioni già presenti nella pagina. Storico dei controlli per vedere i miglioramenti.

Nota onesta in fondo: "Questi controlli aiutano gli assistenti a leggere il sito, ma non garantiscono di essere citati".

5. Pagamenti con Stripe

Aggiungi pacchetti di crediti: 10 analisi a 9 €, 50 analisi a 29 €. Ogni nuovo utente riceve 2 crediti gratis. Ogni analisi completa o richiesta di consigli costa un credito. Mostra sempre in alto quanti crediti restano e, quando finiscono, un riquadro per comprarne altri.

A pagamento riuscito il webhook aggiunge i crediti del pacchetto con la funzione aggiungi_crediti.

Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.

6. Controlli specifici di questo progetto

Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Sicurezza: la funzione che scarica le pagine deve rifiutare indirizzi interni (localhost, 127.0.0.1, 10.x, 192.168.x) e file più grandi di 5 MB.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Controllo di robots.txt per i robot AI

Legge il robots.txt del sito e dice, per ogni robot degli assistenti AI, se può leggere la pagina. Versione semplificata: guarda le regole "Disallow" del gruppo del robot o di quello generale.

const ROBOT_AI = ["GPTBot", "OAI-SearchBot", "ChatGPT-User", "PerplexityBot", "ClaudeBot", "Google-Extended"];

function gruppi(robots: string): Map<string, string[]> {
  const mappa = new Map<string, string[]>();
  let correnti: string[] = [];
  let ultimoEraAgente = false;
  for (const riga of robots.split(/\r?\n/)) {
    const [chiave, ...resto] = riga.split("#")[0].split(":");
    const valore = resto.join(":").trim();
    const k = chiave.trim().toLowerCase();
    if (k === "user-agent") {
      if (!ultimoEraAgente) correnti = [];
      correnti.push(valore.toLowerCase());
      mappa.set(valore.toLowerCase(), mappa.get(valore.toLowerCase()) ?? []);
      ultimoEraAgente = true;
    } else if (k === "disallow") {
      for (const a of correnti) mappa.get(a)!.push(valore);
      ultimoEraAgente = false;
    } else ultimoEraAgente = false;
  }
  return mappa;
}

export function robotAiBloccati(robots: string, percorso: string) {
  const g = gruppi(robots);
  return ROBOT_AI.map((robot) => {
    const regole = g.get(robot.toLowerCase()) ?? g.get("*") ?? [];
    const bloccato = regole.some((r) => r !== "" && percorso.startsWith(r));
    return { robot, bloccato };
  });
}

Controlli sulla pagina

Controlli semplici sull'HTML scaricato: titoli, dati strutturati, testo leggibile senza JavaScript.

export function controllaPagina(html: string) {
  const testoVisibile = html
    .replace(/<script[\s\S]*?<\/script>/gi, "")
    .replace(/<style[\s\S]*?<\/style>/gi, "")
    .replace(/<[^>]+>/g, " ")
    .replace(/\s+/g, " ")
    .trim();

  const h1 = (html.match(/<h1[\s>]/gi) ?? []).length;
  const tipiDati = [...html.matchAll(/"@type"\s*:\s*"([^"]+)"/g)].map((m) => m[1]);

  return [
    { controllo: "Testo leggibile senza JavaScript", ok: testoVisibile.split(" ").length > 300 },
    { controllo: "Un solo titolo H1", ok: h1 === 1 },
    { controllo: "Dati strutturati presenti", ok: tipiDati.length > 0, dettagli: tipiDati },
    { controllo: "Domande frequenti marcate (FAQPage)", ok: tipiDati.includes("FAQPage") },
    { controllo: "Data di aggiornamento", ok: /dateModified|article:modified_time/.test(html) },
  ];
}

Pezzi comuni a tutti i progetti

Glossario

robots.txt
Un file nella radice del sito che dice ai robot dei motori di ricerca e dell'AI quali pagine possono leggere.
Dati strutturati
Informazioni nascoste nella pagina, in un formato standard, che spiegano alle macchine cosa contiene (un prodotto, un'azienda, delle FAQ).