Social media posting automatico con n8n
Pubblica automaticamente su LinkedIn, Instagram e Twitter/X partendo da un calendario editoriale su Google Sheets con gestione delle immagini
Panoramica
Pubblicare manualmente sui social media è un'attività ripetitiva che toglie tempo alla creazione dei contenuti. Con n8n puoi costruire un sistema che legge i post programmati da un Google Sheets, gestisce le immagini allegate e pubblica automaticamente su LinkedIn, Instagram e Twitter/X all'orario stabilito. Questa guida ti accompagna passo dopo passo nella creazione di questo workflow.
Prerequisiti
- Istanza n8n funzionante (self-hosted o cloud)
- Account Google con accesso a Google Sheets
- Account sviluppatore per le piattaforme social desiderate:
- LinkedIn: app creata su LinkedIn Developer Portal con permesso w_member_social
- Twitter/X: account Developer con accesso alle API v2 e credenziali OAuth 1.0a
- Instagram: account Business collegato a una Facebook Page, con token di accesso Graph API
- Google Drive o altro spazio per le immagini dei post
Step 1: Creare il calendario editoriale su Google Sheets
Crea un foglio Google Sheets con queste colonne:
- Data pubblicazione (formato YYYY-MM-DD)
- Ora (formato HH:MM)
- Piattaforma (linkedin, twitter, instagram, oppure "tutte")
- Testo post (il contenuto testuale)
- URL immagine (link diretto all'immagine su Google Drive o URL pubblico)
- Hashtag (separati da virgola)
- Stato (programmato, pubblicato, errore)
Compila il foglio con i post della settimana. Per le immagini su Google Drive, assicurati che il link di condivisione sia impostato su "Chiunque abbia il link" e usa il formato di download diretto.
Step 2: Leggere i post programmati
Nel tuo workflow n8n, inizia con un nodo Schedule Trigger impostato per eseguire ogni 15 minuti. Questo controlla regolarmente se ci sono post da pubblicare.
Aggiungi un nodo Google Sheets con l'operazione "Read Rows" per leggere tutti i post. Collega le credenziali Google e seleziona il foglio di calcolo.
Dopo il nodo Google Sheets, aggiungi un nodo Filter (o IF) che seleziona solo i post con:
- Stato uguale a "programmato"
- Data e ora di pubblicazione entro i prossimi 15 minuti rispetto al momento attuale
Usa un nodo Code per il confronto delle date. Confronta il timestamp del post con l'ora corrente usando moment.js o le funzioni native di JavaScript.
Step 3: Gestire le immagini
Per i post con immagini, aggiungi un nodo HTTP Request che scarica l'immagine dall'URL specificato nel foglio. Imposta il tipo di risposta su "File" per ottenere i dati binari.
Se l'immagine proviene da Google Drive, trasforma l'URL di condivisione nel formato di download diretto. Un nodo Code può gestire questa conversione.
Per Instagram, le immagini devono essere accessibili tramite un URL pubblico. Se usi Google Drive, valuta di caricare le immagini su un bucket S3 o su Cloudflare R2 con un nodo dedicato, ottenendo un URL diretto stabile.
Step 4: Pubblicare sulle piattaforme
Usa un nodo Switch per instradare i post verso la piattaforma corretta in base alla colonna "Piattaforma" del foglio.
LinkedIn: aggiungi un nodo LinkedIn con l'operazione "Create Post". Inserisci il testo dal campo del foglio e, se presente un'immagine, caricala come media allegato. LinkedIn supporta immagini fino a 10 MB.
Twitter/X: usa il nodo Twitter con l'operazione "Create Tweet". Per i tweet con immagini, prima carica il media con l'endpoint di upload e poi includi il media_id nel tweet. Ricorda il limite di 280 caratteri per il testo.
Instagram: usa il nodo HTTP Request per chiamare la Graph API di Facebook. Il processo richiede due chiamate: prima crei un container con l'URL dell'immagine e il caption, poi pubblichi il container. Aggiungi un nodo Wait di 30 secondi tra le due chiamate per permettere a Instagram di elaborare l'immagine.
Se la colonna piattaforma contiene "tutte", il nodo Switch deve instradare verso tutti e tre i rami.
Step 5: Aggiornare lo stato del post
Dopo la pubblicazione, aggiorna il foglio Google Sheets per segnare il post come "pubblicato". Aggiungi un nodo Google Sheets con l'operazione "Update Row" che modifica la colonna Stato.
In caso di errore durante la pubblicazione, cattura l'eccezione con un nodo Error Trigger collegato a ogni ramo di pubblicazione. Imposta lo stato su "errore" e aggiungi una nota con il messaggio di errore nella cella.
Step 6: Notifiche e monitoraggio
Aggiungi un ramo di notifica per restare aggiornato:
- Pubblicazione riuscita: invia un messaggio su un canale Slack o un gruppo Telegram con il link al post pubblicato
- Errore di pubblicazione: invia un alert con i dettagli dell'errore per intervenire rapidamente
- Riepilogo giornaliero: aggiungi un secondo workflow con Schedule Trigger alle 20:00 che legge il foglio e invia un riepilogo dei post pubblicati nella giornata
Per il riepilogo, conta i post per piattaforma e stato, e formatta il messaggio in modo leggibile. Un nodo Code è perfetto per aggregare questi dati e generare un testo di riepilogo.
Consigli pratici
- Orari ottimali: programma i post negli orari di maggiore engagement. LinkedIn funziona meglio tra le 8:00 e le 10:00 nei giorni lavorativi, Instagram tra le 11:00 e le 13:00, Twitter/X ha picchi frequenti durante la giornata
- Immagini: prepara le immagini nelle dimensioni corrette per ogni piattaforma. LinkedIn preferisce 1200x627px, Instagram 1080x1080px, Twitter/X 1200x675px
- Rate limiting: le API social hanno limiti di chiamate. Non programmare più di 5-10 post al giorno per piattaforma per evitare blocchi
- Contenuto adattato: anche se pubblichi lo stesso concetto su tutte le piattaforme, adatta il tono e la lunghezza al contesto di ciascuna
Con questo workflow attivo, il tuo calendario editoriale si trasforma in una macchina di pubblicazione automatica che lavora senza intervento manuale.