← Tutte le idee Strumenti online

AI Toolbox

Tanti piccoli strumenti AI su un sito costruito per farsi trovare su Google

Incasso mensile: 1300 USD (fonte indicata nella scheda)

Cosa fa

Un sito con molti strumenti AI semplici, ognuno con la sua pagina, pensato fin dall'inizio per arrivare su Google. Profittevole ogni mese da quasi due anni, con costi molto bassi.

Come guadagna

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

Rendilo tuo

  • Strumenti in italiano per esigenze italiane: scrivere una PEC, un reclamo, un annuncio di vendita.
  • Ogni strumento risponde a una ricerca precisa che la gente fa su Google.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Attrezzi AI": un sito con tanti piccoli strumenti AI gratuiti (generatore di nomi, riassunto, email formale, correttore, slogan...), ognuno con la sua pagina pensata per farsi trovare su Google. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Pagina iniziale con gli strumenti per categoria e ricerca
2. Pagina di ogni strumento /strumenti/:slug con il modulo, il risultato e una guida sotto
3. Pagina Pro con i vantaggi
4. Registrazione e accesso
5. Pannello amministratori per aggiungere strumenti

Stile: semplice e veloce: sfondo bianco, blu #2563EB, testo #111827, carattere "Inter", pagine leggerissime che si caricano in meno di un secondo. 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:
- "strumenti": slug, nome, categoria, descrizione per Google, campi del modulo in JSON, istruzioni per l'AI, testo della guida
- "utilizzi": quante volte al giorno ogni visitatore ha usato gli strumenti (con l'indirizzo cifrato, mai in chiaro)

Regole di sicurezza obbligatorie:
- gli strumenti sono pubblici
- le istruzioni per l'AI restano sul server
- solo gli amministratori aggiungono o modificano strumenti

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. Uno strumento, una pagina

Ogni strumento è una riga della tabella "strumenti": aggiungere uno strumento nuovo non richiede codice, solo compilare il pannello amministratori (campi del modulo, istruzioni per l'AI, guida).

La pagina /strumenti/:slug ha: titolo e descrizione per Google, il modulo, il risultato con il pulsante Copia, e sotto una guida di 600–1.000 parole utile davvero (come usarlo, esempi, domande frequenti) con i dati strutturati FAQ.

Un'unica Edge Function "usa" esegue qualsiasi strumento: legge le istruzioni dal database e chiama Claude. Senza account si possono fare 5 usi al giorno (limite nei Dettagli tecnici).

4. Pubblicità e Pro

Spazi pubblicitari che non spostano il contenuto, mostrati solo dopo il consenso ai cookie, e mai sopra il risultato.

Gli utenti Pro (registrati e abbonati) hanno usi illimitati, nessuna pubblicità, testi più lunghi e la cronologia dei risultati. Sitemap automatica con tutti gli strumenti e collegamenti tra strumenti simili in fondo a ogni pagina.

5. Pagamenti con Stripe

Aggiungi un abbonamento a 4,99 € al mese. Gratis l'utente ha: 5 usi al giorno con pubblicità. Con il piano Pro sblocca: usi illimitati, nessuna pubblicità, testi più lunghi e cronologia.

A pagamento riuscito il webhook porta l'utente al piano Pro; se l'abbonamento viene disdetto o non rinnovato lo riporta al piano gratuito.

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. Limiti: fai 6 usi senza account (anche cancellando i cookie): il sesto deve essere bloccato con l'invito a passare a Pro.
2. Qualità: ogni pagina deve avere una guida originale e utile, non testo ripetuto tra strumenti: Google penalizza le pagine fatte in serie.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Strumenti e limite giornaliero

Gli strumenti stanno nel database; la funzione conta gli usi del visitatore di oggi e dice se può continuare.

create table strumenti (
  slug text primary key,
  nome text not null,
  categoria text not null,
  descrizione_seo text not null check (length(descrizione_seo) <= 155),
  campi jsonb not null,          -- [{ id, etichetta, tipo, massimo }]
  istruzioni text not null,      -- per l'AI: non va mai al browser
  guida text not null,
  attivo boolean not null default true
);
alter table strumenti enable row level security;
-- Nessuna regola di lettura: il sito legge da una vista senza le istruzioni
create view strumenti_pubblici as
  select slug, nome, categoria, descrizione_seo, campi, guida from strumenti where attivo;
grant select on strumenti_pubblici to anon, authenticated;

create table utilizzi (
  chi text not null,                   -- id utente o indirizzo cifrato
  giorno date not null default current_date,
  volte int not null default 0,
  primary key (chi, giorno)
);
alter table utilizzi enable row level security;

-- Aggiunge un uso e dice se è ancora entro il limite
create function conta_uso(chi_usa text, limite int) returns boolean
language sql security definer set search_path = public as $
  insert into utilizzi (chi, volte) values (chi_usa, 1)
  on conflict (chi, giorno) do update set volte = utilizzi.volte + 1
  returning volte <= limite;
$;
revoke execute on function conta_uso(text, int) from public, anon, authenticated;
grant execute on function conta_uso(text, int) to service_role;

Una funzione per tutti gli strumenti

La Edge Function legge lo strumento dal database, controlla il limite e chiama Claude con le sue istruzioni.

// Parte centrale della Edge Function "usa" (hash = SHA-256 con sale segreto, come nei moduli di contatto)
const { slug, dati } = await req.json();
const { data: strumento } = await admin.from("strumenti").select("*").eq("slug", slug).eq("attivo", true).single();
if (!strumento) return new Response("Strumento non trovato", { status: 404, headers: cors });

// Utente Pro? Altrimenti limite di 5 usi al giorno per indirizzo (cifrato)
const pro = user ? (await admin.from("profili").select("piano").eq("id", user.id).single()).data?.piano === "pro" : false;
if (!pro) {
  const chi = user?.id ?? (await hash(req.headers.get("x-forwarded-for") ?? "sconosciuto"));
  const { data: ok } = await admin.rpc("conta_uso", { chi_usa: chi, limite: 5 });
  if (!ok) return new Response("Limite giornaliero raggiunto", { status: 429, headers: cors });
}

// I campi accettati sono solo quelli dello strumento, con la loro lunghezza massima
const testo = strumento.campi
  .map((c: { id: string; etichetta: string; massimo: number }) =>
    c.etichetta + ": " + String(dati[c.id] ?? "").slice(0, pro ? c.massimo * 4 : c.massimo))
  .join("\n");

const risposta = await claude.beta.messages.create({
  model: "claude-opus-5",
  max_tokens: pro ? 4000 : 1000,
  betas: ["server-side-fallback-2026-07-01"],
  fallbacks: "default",
  system: strumento.istruzioni,
  messages: [{ role: "user", content: testo }],
});

Pezzi comuni a tutti i progetti

Glossario

Slug
La parte finale e leggibile dell'indirizzo di una pagina, es. /pizzeria-da-mario.
SEO
Il lavoro per far comparire le pagine di un sito tra i primi risultati di Google.