Panoramica e casi d’uso dell’automazione su LinkedIn con n8n
Automatizzare la pubblicazione dei post su LinkedIn tramite n8n non significa solo risparmiare tempo, ma anche creare una strategia di content marketing più coerente, scalabile e meno soggetta a errori manuali. Centralizzando la gestione dei contenuti, si ottiene una maggiore coerenza editoriale, fondamentale per costruire un’immagine autorevole sul social network professionale per eccellenza.

I casi d’uso pratici sono molteplici e adatti a diverse esigenze:
- Automazione da Google Sheets: È lo scenario più comune per automatizzare post su LinkedIn. Si può configurare un workflow che, tramite il nodo
Cron, si avvia a intervalli regolari (es. ogni giorno). Questo trigger attiva un nodoGoogle Sheetsche legge le righe di un foglio di calcolo dove sono preparati i post. Utilizzando un nodoIF, il flusso procede solo per i post contrassegnati con uno stato “Pronto per la pubblicazione” e la cui data corrisponde a quella odierna, inviando poi il contenuto al nodoLinkedIn. - Trigger da feed RSS o CMS Headless: Per chi gestisce un blog o un sito di news, il nodo
RSS Feed Triggerpuò avviare automaticamente il workflow ogni volta che viene pubblicato un nuovo articolo, condividendolo su LinkedIn. - Gestione di campagne e team: L’automazione facilita il coordinamento di campagne a tema e permette a team distribuiti in diversi fusi orari di collaborare su un unico calendario editoriale centralizzato.
È cruciale, tuttavia, approcciare l’automazione in modo responsabile. La priorità deve restare la qualità del contenuto. Abusare delle API con post di bassa qualità o troppo frequenti può portare a una scarsa visibilità dei contenuti o, nei casi peggiori, a incorrere in rate limiting da parte di LinkedIn. Per questo, è fondamentale implementare un buon error handling nel workflow n8n per gestire eventuali fallimenti nelle chiamate API e rispettare sempre le policy della piattaforma.
Prerequisiti tecnici e conformità
Prima di poter costruire il workflow per automatizzare i post su LinkedIn, è indispensabile configurare correttamente l’ambiente di sviluppo e ottenere le autorizzazioni necessarie. Questo processo garantisce che le nostre interazioni con la piattaforma siano sicure, autorizzate e conformi alle policy di LinkedIn.
1. Creare un’applicazione sul portale sviluppatori LinkedIn
Il primo passo per qualsiasi integrazione API LinkedIn è registrare un’applicazione sul portale LinkedIn for Developers. Ecco la procedura:
- Crea una nuova App: Accedi con il tuo account LinkedIn e crea una nuova applicazione. Dovrai associarla a una pagina aziendale LinkedIn di cui sei amministratore.
- Verifica la Pagina: LinkedIn richiederà una verifica della pagina aziendale per abilitare l’app. Questo passaggio è obbligatorio.
- Richiedi i permessi (Products): Nella sezione “Products” della tua app, dovrai richiedere l’accesso ai prodotti API necessari. Per la pubblicazione di post, il prodotto fondamentale è “Share on LinkedIn“. In passato si usava
w_member_social, ma per le nuove app occorre usarew_organization_social_feedper postare sulle pagine aziendali. La richiesta sarà soggetta a revisione da parte di LinkedIn.
2. Gestire l’autenticazione OAuth 2.0
L’interazione con le API di LinkedIn avviene tramite il protocollo OAuth 2.0, un flusso standard per l’autorizzazione delegata. n8n semplifica enormemente questo processo gestendo il refresh dei token in background.
Per configurarlo:
- Configura il Redirect URI: Nella dashboard della tua app LinkedIn, vai su “Auth” e aggiungi un “Authorized redirect URL for your app”.
- Crea le credenziali in n8n: Nel tuo pannello n8n, vai su Credentials > Add credential. Cerca e seleziona “LinkedIn OAuth2 API”.
- Copia e Incolla: n8n ti fornirà un URL di reindirizzamento (OAuth Redirect URL). Copia questo URL e incollalo nel campo configurato al punto 1 nelle impostazioni della tua app LinkedIn.
- Inserisci Client ID e Secret: Copia il “Client ID” e il “Client Secret” dalla tua app LinkedIn e inseriscili nei campi corrispondenti in n8n.
- Connetti il tuo account: Clicca su “Connect my account” per avviare il flusso di autorizzazione. Accedi a LinkedIn e consenti all’applicazione di accedere ai permessi richiesti. Una volta completato, le credenziali saranno salvate e pronte all’uso nei tuoi nodi
HTTP Request.
3. Limiti e quote delle API
LinkedIn impone rigidi limiti per prevenire abusi e garantire la qualità della piattaforma. Ignorarli può comportare il blocco temporaneo o permanente dell’applicazione. I principali limiti da considerare sono:
- Rate Limiting: Le API hanno limiti sul numero di chiamate che un utente o un’applicazione possono effettuare in un dato periodo. Per la pubblicazione tramite l’endpoint
ugcPosts, il limite è tipicamente basso. È fondamentale implementare una logica dierror handlingper gestire risposte429 Too Many Requests. - Dimensione del Payload: Il testo di un post non può superare i 3000 caratteri. Quando si vogliono caricare immagini su LinkedIn con n8n, bisogna prima effettuare una chiamata di registrazione dell’asset e poi usare l’URN restituito nella chiamata a
ugcPosts, rispettando i limiti di dimensione del file (solitamente 5MB per le immagini).
Progettare l’architettura del workflow in n8n
Una volta completati i prerequisiti, possiamo passare alla progettazione del flusso di lavoro. Un’architettura robusta in n8n non si limita a inviare un post, ma gestisce la pianificazione, la logica condizionale, la preparazione dei dati e il monitoraggio.

1. Pianificazione e Trigger: Il Nodo Cron
Il punto di partenza per la maggior parte delle automazioni programmate è lo scheduler Cron. Questo nodo permette di avviare il workflow a intervalli precisi. Per una pubblicazione giornaliera, è sufficiente configurarlo per essere eseguito una volta al giorno a un orario specifico.
Configurazione di esempio:
- Mode:
Every Day - Hour:
8(per avviare il flusso alle 8:00 del mattino) - Timezone: Selezionare il proprio fuso orario è fondamentale per garantire che i post vengano pubblicati all’ora desiderata, indipendentemente da dove è ospitata l’istanza n8n.
2. Logica di Orchestrazione e Selezione dei Contenuti
Dopo il trigger, il workflow deve recuperare e selezionare il contenuto da pubblicare. Se usiamo Google Sheets come fonte, la sequenza sarà:
Google Sheets(Read): Legge l’intero foglio di calcolo contenente i post.Split In Batches: Suddivide l’elenco in singoli item (un item per ogni riga del foglio), permettendo al workflow di processare un post alla volta.IF: Implementa la logica di controllo. Qui verifichiamo se un post è pronto per la pubblicazione. Ad esempio, la condizione può controllare due colonne:{{ $json.status }}è uguale a “Ready” E{{ $json.publish_date }}corrisponde alla data odierna.Set: Utile per mappare i dati dal foglio di calcolo a variabili pulite (es.postText,imageUrl) che verranno usate nel nodo successivo. Se sono necessarie trasformazioni complesse (es. ripulire l’HTML o aggiungere hashtag dinamicamente), si può inserire un nodoFunctionper scrivere logica in JavaScript.
3. Interazione con l’API di LinkedIn: il HTTP Request Node n8n
Questo è il cuore del workflow, dove avviene la chiamata all’API di LinkedIn.
-
Authentication: Selezionare
Generic Credential Type, e come tipoLinkedIn OAuth2 API, scegliendo le credenziali create in precedenza. -
Request Method:
POST -
URL:
https://api.linkedin.com/v2/ugcPosts -
Body Content Type:
JSON -
Body: Qui si costruisce il payload JSON per l’endpoint
ugcPosts, usando le espressioni di n8n per inserire dinamicamente il contenuto. L’URN (Uniform Resource Name) della vostra pagina aziendale, ottenuto durante la configurazione dell’app, va inserito nel campoauthor. Di seguito un esempio di body:{
“author”: “urn:li:organization:YOURPAGEID”,
“lifecycleState”: “PUBLISHED”,
“specificContent”: {
“com.linkedin.ugc.ShareContent”: {
“shareCommentary”: {
“text”: “{{ $json.postText }}”
},
“shareMediaCategory”: “NONE”
}
},
“visibility”: {
“com.linkedin.ugc.MemberNetworkVisibility”: “PUBLIC”
}
}Per caricare immagini su LinkedIn con n8n, il processo richiede più passaggi: prima si registra l’asset con una chiamata all’endpoint
/assets?action=registerUpload, poi si carica il file binario all’URL restituito, e infine si include l’URN dell’asset nel corpo della chiamata augcPosts.
4. Persistenza e Logging
Dopo aver pubblicato un post, è cruciale aggiornare il suo stato per evitare doppie pubblicazioni. Subito dopo il nodo HTTP Request, si aggiunge un altro nodo Google Sheets con l’operazione Update, che userà l’ID della riga per modificare la colonna “status” in “Published”. In alternativa, per un logging più semplice, si può usare il nodo Data Store nativo di n8n per tenere traccia degli ID dei post già pubblicati.
Implementazione passo–passo del flusso n8n
Con i prerequisiti completati e l’architettura delineata, passiamo all’azione. Costruiremo il workflow nodo per nodo, concentrandoci sulla configurazione pratica per automatizzare la pubblicazione su LinkedIn da Google Sheets con n8n.
1. Il Trigger: Cron per la pianificazione
Il workflow deve avviarsi in autonomia. Il nodo Cron è il nostro scheduler.
- Aggiungi il nodo
Cron: Impostalo per l’esecuzione giornaliera. - Configurazione:
- Mode:
Every Day - Hour:
9(per pubblicare alle 9 del mattino). - Timezone: Imposta il tuo fuso orario (es.
Europe/Rome). Questo è un passaggio cruciale per evitare discrepanze tra l’ora locale e l’ora del server su cui gira n8n (spesso UTC). La corretta gestione dei fusi orari assicura che i post escano sempre all’orario desiderato per il tuo pubblico.
- Mode:

2. Lettura dei dati da Google Sheets
Ora il workflow deve recuperare i post preparati nel foglio di calcolo.
- Aggiungi il nodo
Google Sheets: Seleziona le credenziali precedentemente create. - Configurazione:
- Operation:
Read - Sheet ID: Incolla l’ID del tuo foglio Google.
- Range:
Sheet1(o il nome del tuo foglio) per leggere tutte le righe con dati.
- Operation:
- Aggiungi il nodo
Split In Batches: Collega il nodoGoogle Sheetsa questo. Lascia la configurazione di default. Suddividerà la lista di righe in singoli item, permettendo al workflow di processarle una per una, un passaggio fondamentale per la logica successiva.
3. Logica condizionale con il nodo IF
Il nodo IF agisce da filtro, assicurando che solo il post giusto venga elaborato.
- Aggiungi un nodo
IF: Imposta le condizioni per procedere. - Configurazione Condizioni (esempio):
{{ $json.body.Status }}—String—Equals—Ready{{ DateTime.fromISO($json.body.Publish_Date).toISODate() }}—String—Equals—{{ DateTime.now().toISODate() }}
La seconda condizione usa un’espressione per confrontare la data di pubblicazione (dal foglio Sheets) con la data odierna, ignorando l’orario. Solo se entrambe le condizioni sono vere, l’esecuzione prosegue.
4. La chiamata API con HTTP Request Node n8n
Questo è il cuore tecnico del processo. Qui avviene la comunicazione con l’integrazione API LinkedIn.
- Aggiungi il nodo
HTTP Requeste configuralo come segue:- Authentication:
Generic Credential Type - Generic Credential Type:
LinkedIn OAuth2 API(seleziona le credenziali create) - Request Method:
POST - URL:
https://api.linkedin.com/v2/ugcPosts - Send Body:
true - Body Content Type:
JSON - Body:
- Authentication:
Per creare il corpo della richiesta, è necessario specificare l’autore. Questo cambia a seconda che si pubblichi su un profilo personale o una pagina aziendale.
- Per una pagina aziendale:
"author": "urn:li:organization:YOUR_PAGE_ID". L’ID è numerico e si trova nell’URL della pagina. - Per un profilo personale: L’URN va prima recuperato con una chiamata
GETall’endpointhttps://api.linkedin.com/v2/me. Il risultato conterrà un campoidsimile aurn:li:person:XXXXXXXX. Salva questo valore.
Esempio di corpo JSON per un post testuale su una pagina:
{
“author”: “urn:li:organization:YOURPAGEID”,
“lifecycleState”: “PUBLISHED”,
“specificContent”: {
“com.linkedin.ugc.ShareContent”: {
“shareCommentary”: {
“text”: “{{ $json.body.Text }}”
},
“shareMediaCategory”: “NONE”
}
},
“visibility”: {
“com.linkedin.ugc.MemberNetworkVisibility”: “PUBLIC”
}
}
Usa le espressioni ({{...}}) per inserire dinamicamente il testo del post e altri campi mappati da Google Sheets.
5. Gestire gli Allegati Media (Immagini)
Per caricare immagini su LinkedIn con n8n, il processo richiede tre chiamate API in sequenza:
-
Registra l’Asset: Aggiungi un primo
HTTP Request Nodeper informare LinkedIn che stai per caricare un file.- Method:
POST, URL:https://api.linkedin.com/v2/assets?action=registerUpload - Body:
{"registerUploadRequest": {"owner": "urn:li:organization:YOUR_PAGE_ID", "recipes": ["urn:li:digitalmediaRecipe:feedshare-image"], "serviceRelationships": [{"identifier": "urn:li:userGeneratedContent", "relationshipType": "OWNER"}]}} - Questa chiamata restituisce un
uploadUrle l’URN dell’asset (urn:li:digitalmediaAsset:...).
- Method:
-
Carica il File: Aggiungi un secondo
HTTP Request Node.- Method:
PUT, URL:{{ $json.value.uploadUrl }}(usa l’URL dal nodo precedente). - Body Content Type:
Binary Data. Il file deve essere disponibile in formato binario per n8n, ad esempio scaricandolo da un URL con un nodoHTTP Requestprecedente che usaResponse Format: File.
- Method:
-
Pubblica il Post con l’Immagine: Usa un terzo
HTTP Request Node(simile a quello del punto 4), ma modifica ilBodyper includere il riferimento all’asset caricato.
Esempio di corpo JSON per un post con immagine:
{
“author”: “urn:li:organization:YOURPAGEID”,
“lifecycleState”: “PUBLISHED”,
“specificContent”: {
“com.linkedin.ugc.ShareContent”: {
“shareCommentary”: {
“text”: “{{ $json.body.Text }}”
},
“shareMediaCategory”: “IMAGE”,
“media”: [
{
“status”: “READY”,
“media”: “{{ $node[“Register Asset”].json.value.asset }}”
}
]
}
},
“visibility”: {
“com.linkedin.ugc.MemberNetworkVisibility”: “PUBLIC”
}
}
6. Aggiornamento dello stato (Logging)
Come ultimo passo, dopo la pubblicazione, aggiorna il Google Sheet per evitare post duplicati. Aggiungi un nodo Google Sheets configurato con:
- Operation:
Update - Sheet ID: Lo stesso ID di prima.
- Key: La colonna da usare come identificatore univoco (es.
Row Number) - Row Number:
{{ $json.body.rowIndex }}(l’indice della riga originale) - Status:
Published.
Varianti avanzate e scenari comuni
Oltre alla pubblicazione base, un workflow n8n può essere arricchito per gestire scenari più complessi e aumentare l’affidabilità del processo. Dalla distinzione tra profili e pagine alla gestione delle code, vediamo come rendere la nostra automazione più intelligente.
Pubblicazione su Pagine vs. Profili Personali
L’integrazione API LinkedIn prevede una distinzione netta tra la pubblicazione su una pagina aziendale e un profilo personale. La differenza risiede unicamente nel valore del campo author nel body della richiesta POST all’endpoint ugcPosts.
-
Pagina Aziendale: L’URN è
urn:li:organization:ID_PAGINA.{
“author”: “urn:li:organization:12345678”,
…
} -
Profilo Personale: L’URN va recuperato tramite una chiamata
GETall’endpointhttps://api.linkedin.com/v2/me, che restituirà l’ID del profilo autenticato.{
“author”: “urn:li:person:AbCDefG123”,
…
}
Assicurati che i permessi richiesti sull’app LinkedIn (w_organization_social_feed per le pagine, w_member_social per i profili) siano coerenti con il target della pubblicazione.
Tecniche Avanzate: Primo Commento e Flussi di Approvazione
Per aumentare l’engagement, è comune aggiungere un primo commento al post con hashtag o informazioni aggiuntive. Questo si ottiene con una seconda chiamata API subito dopo la pubblicazione:
- Pubblica il Post: Il nodo
HTTP Requestche effettua laPOSTa/ugcPostsrestituisce uniddel post appena creato (es.urn:li:share:1234567890). - Aggiungi un secondo
HTTP Request Node:- Method:
POST - URL:
https://api.linkedin.com/v2/socialActions/{{$node["HTTP Request"].json.id}}/comments(usa un’espressione per inserire l’ID dal nodo precedente). - Body:
{"actor": "urn:li:organization:YOUR_PAGE_ID", "message": {"text": "Ecco gli hashtag di approfondimento: #n8n #automation #linkedin"}}
- Method:
Un’altra variante potente è implementare un flusso di approvazione. Invece di un Cron, il workflow può essere avviato da un Webhook node. Un team member prepara i post in un tool come Airtable o Notion; quando sposta un post nella colonna “Approvato”, un’automazione esterna chiama il webhook di n8n, che riceve i dati e procede alla pubblicazione immediata.
Generazione di Testi con AI e A/B Testing
Per ottimizzare la qualità del copy, possiamo integrare un modello linguistico. Dopo il nodo IF, inserisci un nodo OpenAI (o un altro provider LLM).
- Configurazione: Usa il modello Chat e fornisci un prompt per migliorare o variare il testo proveniente dal Google Sheet. Esempio:
Riscrivi questo post per LinkedIn in uno stile più ingaggiante, aggiungendo 3 emoji pertinenti. Testo originale: "{{ $json.body.Text }}" - Il risultato generato dall’AI verrà poi mappato nel campo
shareCommentary.textdel nodoHTTP Requestfinale. Questo apre le porte a facili A/B test: basta creare due versioni del testo e programmarle in giorni diversi per misurarne la performance.
Aumentare la Robustezza: Code, Retry e Deduplicazione
Per un workflow a prova di errore, è cruciale implementare una buona logica di error handling.
- Gestione delle Code: Il nodo
Split In Batchesgià serializza le operazioni, processando un post alla volta e prevenendo il superamento del rate limiting. Per maggiore sicurezza, si può aggiungere un nodoWaitdi pochi secondi tra un’esecuzione e l’altra del loop. - Logica di Retry: Nel
HTTP Request node n8n, vai nella tab Settings > Add Option > Retry on Fail. Attivando questa opzione, n8n ritenterà automaticamente la chiamata in caso di fallimento (es. un errore temporaneo del server di LinkedIn). È buona norma impostare un intervallo di qualche minuto tra i tentativi. - Deduplicazione: Il meccanismo di logging che aggiorna lo stato del post su Google Sheets a “Published” è il sistema di deduplicazione più importante, garantendo che un post, anche in caso di esecuzioni parzialmente fallite, non venga mai pubblicato due volte.
Monitoraggio, metriche e gestione degli errori
Un workflow di automazione non è completo senza un solido sistema di monitoraggio e error handling. Sapere se un post è stato pubblicato correttamente e capire cosa fare in caso di fallimento è fondamentale per l’affidabilità del processo. Ecco come implementare queste funzionalità in n8n.
1. Tracciamento degli esiti e notifiche di errore
Ogni esecuzione del workflow deve avere un esito chiaro. Dopo il nodo HTTP Request che pubblica il post, possiamo usare un nodo IF per controllare se l’operazione è andata a buon fine. La chiamata API a LinkedIn, in caso di successo, restituisce uno status 201 Created.
- Aggiungi un nodo
IFsubito dopo il nodo di pubblicazione. Nella sua configurazione, aggiungi una condizioneNumbere verifica se{{ $node["HTTP Request"].statusCode }}—Equals—201. - Collega il nodo
Google Sheets(quello che imposta lo stato su “Published”) all’outputtruedell’IF. - Collega un nodo
SlackoSend Emailall’outputfalse. Questo creerà un alert immediato. Configuralo per inviare un messaggio contenente i dettagli dell’errore, recuperabili con espressioni come{{ $json.error.message }}o{{ JSON.stringify($json) }}per avere il contesto completo.
2. Raccolta delle metriche di performance
Per misurare l’efficacia della strategia, è utile raccogliere periodicamente le performance dei post. Questo si può fare con un workflow separato che gira, ad esempio, una volta a settimana.
- Trigger
Cron: Imposta un nodoCronper l’esecuzione settimanale. Google Sheets(Read): Leggi i post marcati come “Published” che non hanno ancora metriche associate.HTTP Request Node n8n(GET): Per ogni post, effettua una chiamataGETall’endpoint di analisi di LinkedIn, ad esempiohttps://api.linkedin.com/v2/organizationalEntityShareStatistics. L’URL dovrà includere l’URN dell’organizzazione e un filtro per l’URN del post (shares[0]). L’ID del post è stato restituito nella chiamata di pubblicazione originale e andrebbe salvato sul Google Sheet.Google Sheets(Update): Aggiorna la riga del post con i dati ricevuti, comelikeCount,commentCounteshareCount.
3. Troubleshooting degli errori comuni
Quando un alert scatta, è importante riconoscere l’errore per risolverlo rapidamente.
- Errore 401/403 (Unauthorized/Forbidden): Quasi sempre legato alle credenziali o ai permessi. Controlla che le credenziali OAuth 2.0 in n8n siano valide e non scadute. Verifica sul portale sviluppatori di LinkedIn che la tua app abbia i permessi approvati (
w_organization_social_feedow_member_social). - Errore 429 (Too Many Requests): Hai superato il rate limiting. La soluzione migliore è preventiva: attiva l’opzione Settings > Retry on Fail nel
HTTP Request node n8nper far sì che n8n ritenti la chiamata dopo un intervallo. Se l’errore persiste, aumenta il tempo di attesa tra un post e l’altro con un nodoWait. - Errore 400/422 (Bad Request/Unprocessable Entity): Indica un problema nel payload inviato. Controlla meticolosamente il corpo JSON della tua richiesta: un errore di sintassi, un URN autore errato, un testo che supera i 3000 caratteri o un formato immagine non supportato sono le cause più comuni.
Best practice editoriali e operative
Per trasformare questo workflow da un semplice script a un asset strategico, è fondamentale adottare best practice che ne garantiscano l’affidabilità e l’efficacia nel tempo. Queste pratiche uniscono la pianificazione editoriale alla manutenzione tecnica.
Calendario Editoriale e Timing: Utilizza il tuo Google Sheet come un calendario editoriale avanzato. Analizza le metriche di LinkedIn per individuare le fasce orarie con il maggior engagement e adatta di conseguenza la configurazione temporale del nodo Cron. Aggiungere una colonna per il time-slot (es. “9 AM”, “5 PM”) e un nodo IF aggiuntivo nel workflow può permetterti di gestire più pubblicazioni giornaliere mirate.
Governance e Revisione: Per i team, è cruciale istituire una chiara governance. Aggiungi nel Google Sheet una colonna “Approved by” e includi una condizione nel nodo IF per controllare che non sia vuota. In caso di problemi, il piano di roll-back più rapido è disattivare il workflow direttamente dal pannello di n8n. Per una sicurezza maggiore, imposta una variabile di ambiente in n8n che possa agire da “interruttore di emergenza”, da leggere all’inizio di ogni esecuzione.
Manutenzione Tecnica del Workflow:
- Versioning: Prima di ogni modifica, usa la funzione di versioning di n8n salvando lo stato attuale. Questo ti permette di tornare a una versione funzionante in caso di errori.
- Ambienti Separati: Clona il tuo workflow per creare un ambiente di test. Configura questo clone con un foglio Google di prova e, se possibile, una pagina LinkedIn di test. Sostituisci le credenziali e gli ID per sperimentare senza rischi.
- Rotazione delle Credenziali: Anche se n8n gestisce il refresh dei token OAuth, le autorizzazioni possono essere revocate. Se inizi a riscontrare errori 401/403, la prima azione da compiere è ri-autenticare le credenziali LinkedIn all’interno di n8n per ristabilire la connessione.
Adottare queste pratiche per l’integrazione API LinkedIn la rende uno strumento di content marketing scalabile e robusto.
Se desideri implementare logiche su misura come l’A/B testing automatico dei post o integrare flussi di approvazione complessi, contattaci. Il team di AI Automation Italia offre consulenza specializzata e template n8n pronti all’uso per ottimizzare la tua strategia digitale.
Scopri la consulenza →
