Postiz
Programmi i post di tutti i social in un posto, e l'AI li scrive per te
Incasso mensile: 330.353 USD (fonte indicata nella scheda)
Cosa fa
Strumento per pianificare, scrivere con l'AI e pubblicare in automatico i post su più social. È anche open source: il codice è pubblico e chiunque può installarlo.
Come guadagna
Abbonamenti da 29 $ al mese con 7 giorni di prova. Quasi 9.700 abbonati. Nato a luglio 2024. Incassi verificati con Stripe.
Rendilo tuo
- Solo per attività locali italiane: ristoranti, parrucchieri, palestre, con idee di post per le feste italiane.
- Calendario editoriale già pronto per settore.
- Approvazione dei post da parte del cliente, per chi gestisce i social di altri.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Postino Social": un programmatore di post per Instagram, Facebook, LinkedIn e TikTok pensato per le attività locali: l'AI propone e scrive i post, l'utente approva, l'app pubblica all'ora giusta. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con un calendario d'esempio e i prezzi
2. Registrazione e collegamento degli account social
3. Calendario della settimana e del mese con i post programmati
4. Nuovo post: testo, foto, social su cui pubblicare, data e ora
5. Idee: l'AI propone i post della settimana per l'attività
Stile: allegro e ordinato: sfondo #FAFAFA, viola #7C3AED, corallo #FB7185, carattere "Poppins", calendario a schede colorate per social. 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:
- "account_social": tipo di social, nome dell'account, token di accesso cifrato, scadenza
- "post": testo, immagini, social scelti, data e ora di pubblicazione, stato (bozza, programmato, pubblicato, errore)
- "attivita": tipo di attività, città, tono di voce, per le idee dell'AI
Regole di sicurezza obbligatorie:
- ogni utente vede solo i suoi account e i suoi post
- i token dei social non tornano mai al browser: si usano solo nelle Edge Function
- il piano non si modifica 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. Pubblicazione automatica all'ora giusta
Ogni minuto un cron di Supabase cerca i post "programmati" con l'ora già passata e chiama la Edge Function "pubblica", che li manda ai social con le API ufficiali (Meta Graph API per Instagram e Facebook, LinkedIn API, TikTok Content Posting API). Esito salvato sul post: pubblicato con il link, oppure errore con il motivo in italiano.
Collegamento degli account con il login ufficiale di ogni social (OAuth): l'utente non dà mai la password all'app. I token si salvano cifrati e si rinnovano prima della scadenza.
Nota: per pubblicare su Instagram e TikTok le app devono passare la revisione di Meta e TikTok. Inizia con Facebook e LinkedIn, che sono più rapidi.
4. Le idee della settimana
Ogni lunedì l'AI propone 5 post per l'attività: tipo di attività, città, tono di voce, ricorrenze della settimana (festa del papà, inizio dei saldi, ponte del 2 giugno). L'utente li modifica, sceglie le foto e li mette in calendario trascinandoli.
Statistiche semplici per ogni post pubblicato (mi piace, commenti, visualizzazioni) lette dalle API dei social.
5. Pagamenti con Stripe
Aggiungi un abbonamento a 14,99 € al mese, 7 giorni di prova. Gratis l'utente ha: 2 account social e 10 post al mese. Con il piano Pro sblocca: account e post illimitati, idee dell'AI ogni settimana e statistiche.
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. Pubblicazione: programma un post di prova su una pagina Facebook fra 2 minuti e controlla che esca all'ora giusta e che lo stato diventi "pubblicato".
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Post programmati e cron
La tabella dei post e il cron che ogni minuto avvia la pubblicazione di quelli arrivati all'ora giusta.
create table post (
id uuid primary key default gen_random_uuid(),
utente_id uuid not null references auth.users(id) on delete cascade,
testo text not null,
immagini text[] not null default '{}',
social text[] not null, -- es. {facebook, linkedin}
quando timestamptz not null,
stato text not null default 'programmato' check (stato in ('bozza', 'programmato', 'in_corso', 'pubblicato', 'errore')),
esito jsonb
);
create index on post (stato, quando);
alter table post enable row level security;
create policy "le mie righe" on post
for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);
-- Ogni minuto: chiama la Edge Function "pubblica" (che prende i post con stato = 'programmato' e quando <= now())
select cron.schedule('pubblica-post', '* * * * *', $
select net.http_post(
url := 'https://TUO-PROGETTO.supabase.co/functions/v1/pubblica',
headers := jsonb_build_object('Authorization', 'Bearer ' || (select decrypted_secret from vault.decrypted_secrets where name = 'chiave_cron'))
);
$);Pubblicare su una pagina Facebook
Dentro la Edge Function "pubblica": manda il post alla pagina con la Graph API ufficiale, usando il token della pagina salvato in modo sicuro.
export async function pubblicaFacebook(paginaId: string, tokenPagina: string, testo: string, foto?: string) {
const base = "https://graph.facebook.com/v21.0/" + paginaId;
const corpo = new URLSearchParams({ access_token: tokenPagina });
let indirizzo = base + "/feed";
if (foto) { indirizzo = base + "/photos"; corpo.set("url", foto); corpo.set("caption", testo); }
else corpo.set("message", testo);
const r = await fetch(indirizzo, { method: "POST", body: corpo });
const dati = await r.json();
if (!r.ok) throw new Error(dati.error?.message ?? "Facebook non ha accettato il post");
return dati.post_id ?? dati.id; // salvato nell'esito del post
}
Pezzi comuni a tutti i progetti
Glossario
- Cron
- Un'operazione programmata che parte da sola a orari fissi, per esempio ogni lunedì mattina.
- OAuth
- Il login ufficiale di un servizio (es. "Accedi con Facebook") che dà all'app un permesso limitato senza farle conoscere la password.
- Open source
- Software con il codice pubblico: chiunque può leggerlo e installarlo, spesso si guadagna con la versione già pronta online.
