SeoPrimo · SEO per Google e per le AI · presenza garantita, o rimborso della quota di attivazione · Audit gratuito del tuo sito
SeoPrimo · SEO per Google e per le AI · presenza garantita, o rimborso della quota di attivazione · Audit gratuito del tuo sito
seoprimo
— Sviluppatori · n8n

SeoPrimo in n8n.

Tre modi per collegare SeoPrimo ai tuoi flussi di lavoro: il nodo HTTP Request, il nodo MCP Client in un AI Agent e un Webhook con verifica della firma. In più, tre workflow pronti da scaricare.

HTTP
nodo HTTP Request
MCP
nodo MCP Client Tool
3
workflow da scaricare
— Prima di cominciare

Una sola credenziale.

Il nodo HTTP e il nodo MCP usano la stessa credenziale. In n8n apri Credentials, crea una credenziale di tipo Header Auth e chiamala SeoPrimo API:

Credenziale Header Auth in n8n
CampoValore
NameAuthorization
ValueBearer sp_live_…

La chiave si crea dal pannello, in Integrazioni, Chiavi API, con gli scope read e write. Per i workflow di sola lettura basta read.

I workflow scaricabili non contengono segreti: citano le credenziali per nome. Dopo l'importazione scegli la tua credenziale in ogni nodo che la usa.

— Modo 1

Nodo HTTP Request.

Il modo più diretto: ogni endpoint dell'API REST è una chiamata HTTP.

Nodo HTTP Request per l'audit rapido
ImpostazioneValore
MethodPOST
URLhttps://seoprimo.it/api/v1/sites/{{ $json.site_id }}/audits
AuthenticationGeneric Credential Type, Header Auth, «SeoPrimo API»
BodyJSON, dove l'endpoint lo chiede (l'audit rapido non ha corpo)

Importare gli endpoint

n8n non legge un file OpenAPI da solo. Il modo rapido è il pulsante Import cURL del nodo HTTP Request: incolla la chiamata curl di un endpoint (la mostra la documentazione interattiva con «Try it out», e la trovi negli esempi della guida all'API) e il nodo si compila con metodo, indirizzo e corpo. Poi scegli la credenziale. Il file /api/v1/openapi.json è il contratto completo, utile se vuoi generare nodi o client con un generatore OpenAPI.

Aspettare un lavoro lungo

L'audit rapido si segue con un ciclo: Wait, poi GET /sites/{id}/audits e cerca l'audit per id, poi un IF che torna al Wait finché lo stato non è done o failed. I lavori lunghi (audit completo, controllo posizioni) si seguono allo stesso modo con GET /runs/{id}. Il primo workflow scaricabile fa esattamente questo, con un limite di circa 20 minuti.

Se il tuo n8n è raggiungibile da internet, i webhook evitano il ciclo: SeoPrimo ti avvisa quando il lavoro è finito.

— Modo 2

Nodo MCP Client Tool.

Per far usare SeoPrimo a un agente: gli undici tool del server MCP diventano strumenti del suo AI Agent.

  1. Aggiungi un nodo AI Agent e collegagli un modello di chat.
  2. Nel connettore Tool dell'agente aggiungi MCP Client Tool.
  3. Endpoint: https://seoprimo.it/mcp. Server Transport: HTTP Streamable.
  4. Authentication: Header Auth, credenziale «SeoPrimo API».
  5. Tools to Include: tutti, oppure solo quelli che servono (con una chiave di sola lettura l'agente può usare soltanto seoprimo_score, seoprimo_report, seoprimo_credits e le azioni di lettura degli altri).
  6. Nelle istruzioni dell'agente (System Message) scrivi di chiamare dry_run prima di ogni tool a crediti e di partire da seoprimo_sites per avere il site_id.

Prova con un messaggio come: «controlla il saldo dei crediti, poi fai un audit rapido di https://www.acmescarpe.it e dimmi lo Score». Se il nodo non è nella tua versione di n8n, aggiornala: il nodo MCP Client Tool fa parte delle versioni recenti.

— Modo 3

Webhook con verifica della firma.

Per reagire a un evento (Score cambiato, crediti bassi, report pronto) senza interrogare l'API. Il webhook di SeoPrimo firma ogni consegna: il tuo workflow deve controllare la firma sul corpo grezzo.

  1. Nodo Webhook: Method POST, un Path a tua scelta, Respond = «Using 'Respond to Webhook' Node». Nelle Options attiva Raw Body.
  2. Nodo Code con il codice qui sotto: ricalcola l'HMAC sul corpo grezzo e restituisce valid.
  3. Nodo IF su valid: il ramo vero risponde 200 e continua, il ramo falso risponde 401 con Respond to Webhook.
  4. Sul server n8n imposta la variabile d'ambiente NODE_FUNCTION_ALLOW_BUILTIN=crypto: il nodo Code può caricare il modulo crypto solo se è permesso.
  5. Attiva il workflow, copia il Production URL del nodo Webhook e aggiungilo in Integrazioni, Webhook scegliendo gli eventi. Il segreto whsec_… si vede una sola volta: incollalo nel nodo Code.
  6. Premi «Invia prova» sul webhook: arriva un evento test.
n8n Code node (JavaScript)
// Verify X-SeoPrimo-Signature on the RAW body (Webhook node: option "Raw Body" ON).
// Needs the env var NODE_FUNCTION_ALLOW_BUILTIN=crypto on the n8n server (or '*').
const crypto = require('crypto');

// Paste the endpoint secret (whsec_...) here, or expose it as the env var SEOPRIMO_WEBHOOK_SECRET.
let secret = 'whsec_REPLACE_WITH_YOUR_SECRET';
try { if ($env.SEOPRIMO_WEBHOOK_SECRET) secret = $env.SEOPRIMO_WEBHOOK_SECRET; } catch (e) { /* env access blocked */ }
const TOLERANCE_SECONDS = 300;

const item = $input.first();
const header = String(item.json.headers['x-seoprimo-signature'] || '');
const raw = await this.helpers.getBinaryDataBuffer(0, 'data'); // the bytes exactly as received

let valid = false;
try {
  const parts = Object.fromEntries(header.split(',').map((p) => p.split('=', 2)));
  const t = parseInt(parts.t, 10);
  const received = String(parts.v1 || '');
  const expected = crypto.createHmac('sha256', secret).update(`${t}.`).update(raw).digest('hex');
  const fresh = Math.abs(Date.now() / 1000 - t) <= TOLERANCE_SECONDS;
  valid = fresh
    && received.length === expected.length
    && crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(received));
} catch (e) {
  valid = false;
}

const event = valid ? JSON.parse(raw.toString('utf8')) : {};
return [{ json: { valid, id: event.id, type: event.type, created: event.created, data: event.data || {} } }];

Il valore whsec_REPLACE_WITH_YOUR_SECRET è un esempio di segnaposto: sostituiscilo con il segreto del tuo endpoint o leggilo da $env.SEOPRIMO_WEBHOOK_SECRET. Il codice è lo stesso della verifica Node della guida ai webhook.

— Workflow pronti

Scarica, importa, attiva.

Innesco: Schedule Trigger

Audit rapido settimanale per email

Ogni lunedì avvia l'audit rapido di un sito, aspetta che finisca, legge lo Score completo e ti manda una email con il risultato.

Scarica il workflow seoprimo-weekly-audit-email.json
Innesco: Webhook

Score cambiato: avviso su Telegram o Slack

Riceve il webhook score.changed, verifica la firma in un nodo Code e manda un messaggio su Telegram (Slack come alternativa, disattivata).

Scarica il workflow seoprimo-score-changed-telegram.json
Innesco: Webhook

Crediti in esaurimento: avviso via email

Riceve il webhook credits.low, verifica la firma e ti scrive una email con il saldo e la soglia.

Scarica il workflow seoprimo-credits-low-email.json
  1. Scarica il file JSON.
  2. In n8n: Workflows, menu «…», Import from File.
  3. Scegli le tue credenziali nei nodi (SeoPrimo API, SMTP, Telegram) e sostituisci i segnaposto: REPLACE_WITH_SITE_ID, you@example.com, REPLACE_WITH_CHAT_ID, whsec_REPLACE_WITH_YOUR_SECRET.
  4. Prova il workflow con Execute workflow (quelli a webhook, con «Invia prova» dal pannello) e poi attivalo.

Il primo workflow spende 10 crediti a ogni esecuzione (l'audit rapido): impostane la frequenza con criterio. I segnaposto sp_live_… e whsec_… sono parole d'esempio, non segreti.

Automatizza

Meno clic,
più risultati.

Crea la chiave, scarica un workflow e fatti scrivere quando lo Score cambia.

Cosa trovi nella guida
HTTP
Qualunque endpoint
Import cURL e credenziale
MCP
Un agente in n8n
undici tool
3
Workflow pronti
JSON senza segreti