Salvate solo come hash
Il valore completo della chiave è visibile una sola volta, al momento della creazione. Nel database resta un hash: anche un accesso indesiderato non espone la credenziale.
Porta contenuti ottimizzati, riassunti AI e dati di visibilità dentro i tuoi strumenti. API versionate, chiavi con scope, webhook firmati e risposte condizionali: l'infrastruttura per integrare la GEO in qualsiasi flusso di lavoro.
Un sito ottimizzato per le AI non serve a niente se i dati restano chiusi nell'admin. L'API espone contenuti, riassunti e segnali GEO in formati che CMS headless, data warehouse, agenti e pipeline di contenuto possono consumare subito.
GET /wp-json/geo-pro/v1/content/{id} restituisce Markdown puro con metadata, contenuto e riassunto AI. È il formato ideale per ingestion, ricerca semantica e pipeline RAG.
curl -s \
-H "Authorization: Bearer $GOP_API_KEY" \
"https://example.com/wp-json/geo-pro/v1/content/123"
# Risposta: text/markdown
---
title: Guida alla GEO
slug: guida-alla-geo
language: it
ai_summary: Come strutturare i contenuti
per essere citati dalle AI.
---
## Perché la GEO conta
Le AI non ordinano dieci link:
scelgono poche fonti affidabili.
La v2 separa il contenuto dal wrapper: niente JSON obbligatorio, niente campi da scavare. Scegli il formato con l'header Accept e ricevi esattamente ciò che hai chiesto, con il content type corretto.
Accept: text/markdown per testo puro e citabileAccept: text/html per markup pronto al rendering# Markdown puro
curl -s \
-H "Authorization: Bearer $GOP_API_KEY" \
-H "Accept: text/markdown" \
"https://example.com/wp-json/geo-pro/v2/content/123"
# HTML grezzo
curl -s \
-H "Authorization: Bearer $GOP_API_KEY" \
-H "Accept: text/html" \
"https://example.com/wp-json/geo-pro/v2/content/123"
# Risposta 200 con Content-Type
Content-Type: text/markdown; charset=utf-8
Una chiave API è una credenziale, non un identificativo. Per questo viene generata una sola volta, salvata solo come hash e limitata agli scope che le assegni.
| Scope | Permette | Non permette |
|---|---|---|
content:read |
Leggere contenuti, metadata e riassunti AI | Modificare contenuti o impostazioni |
analytics:read |
Leggere hit dei bot, citazioni e referral | Accedere ai dati di altri siti |
reports:read |
Elencare e scaricare i report generati | Configurare branding o destinatari |
webhooks:manage |
Creare, attivare e ruotare gli endpoint | Leggere il secret in chiaro dopo la creazione |
Il valore completo della chiave è visibile una sola volta, al momento della creazione. Nel database resta un hash: anche un accesso indesiderato non espone la credenziale.
La chiave viaggia nell'header Authorization: Bearer, viene estratta dal middleware dedicato e non finisce nei log degli accessi come parametro URL.
Disattivare una chiave la invalida alla richiesta successiva. Puoi ruotare le credenziali senza toccare il codice e tenere una chiave separata per ogni strumento.
Quando succede qualcosa di importante, GEO Optimizer Pro chiama il tuo endpoint con una firma HMAC-SHA256. Tu verifichi, elabori e rispondi 2xx: il resto è gestito dalla coda.
content.optimized — un contenuto ha completato l'ottimizzazionereport.generated — report HTML o PDF prontovisibility.alert — soglia di visibilità o citazioni superatacitation.detected — nuova citazione rilevata su un motore AIjob.failed — un job asincrono ha esaurito i tentativiissue.created — nuovo problema aperto nell'Issue Center# Header ricevuti
X-GEO-Signature: sha256=6f2c...
X-GEO-Timestamp: 1761177600
# Verifica lato ricevente
expected=$(printf '%s' "$body" \
| openssl dgst -sha256 -hmac "$GOP_WEBHOOK_SECRET" \
| awk '{print $2}')
[ "sha256=$expected" = "$HTTP_X_GEO_SIGNATURE" ] \
|| exit 1
# Poi elabora il payload e rispondi 2xx
Ogni endpoint ha un interruttore attivo o disattivo, una coda di retry con backoff esponenziale e la cronologia delle ultime consegne.
Le integrazioni non devono costare più del valore che portano. ETag, Last-Modified e 304 evitano di riscaricare contenuti identici; i limiti proteggono il sito e rendono prevedibile l'uso delle chiavi.
curl -s -o /dev/null -w "%{http_code}\n" \
-H "Authorization: Bearer $GOP_API_KEY" \
-H 'If-None-Match: "b7e4c1"' \
"https://example.com/wp-json/geo-pro/v2/content/123"
# 304 se il contenuto non è cambiato
# 200 con nuovo ETag se è stato aggiornato
# Rate limit per chiave
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
Retry-After: 30 (solo su 429)
| Risorsa | Limite predefinito | Comportamento |
|---|---|---|
| REST v1 contenuti | 60 richieste al minuto per chiave | 429 con Retry-After, nessun blocco dell'admin |
| REST v2 contenuti | 120 richieste al minuto per chiave | Header di quota su ogni risposta |
| Webhook in uscita | 5 tentativi con backoff esponenziale | Endpoint disattivato dopo errori ripetuti, con avviso |
Endpoint pubblico /ask |
20 richieste al minuto per IP | Nonce, same-origin e limite dedicato |
I limiti sono configurabili in base al carico del sito. I valori predefiniti sono prudenti e separano il traffico API da quello degli utenti.
Un solo pannello per connessioni, scope e stato. Dal Marketplace alle API proprietarie, ogni integrazione dichiara cosa può fare e si revoca con un clic.
Vista unica di tutte le connessioni attive: provider AI, Search Console, analytics, webhook e strumenti di terze parti. Ogni voce mostra scope, stato e ultima attività.
Connessioni con partner e strumenti selezionati: CRM, piattaforme di reporting, automazioni e data pipeline. Installazione guidata e permessi espliciti, senza incollare credenziali ovunque.
Collega Search Console con OAuth 2.0 e scope di sola lettura. Nessuna password condivisa, token cifrati con AES-256-GCM e revoca dal pannello o direttamente dall'account Google.
La documentazione parte da esempi copiabili e arriva alla gestione degli errori. Non serve un SDK: bastano HTTP, JSON e una chiave con lo scope giusto.
Assegna solo gli scope necessari allo strumento. Salva il valore in un secret manager: dopo la creazione non sarà più visibile.
Usa Bearer nell'header Authorization e scegli il formato con Accept. Parti dalla v1 per il documento completo o dalla v2 per il contenuto grezzo.
Rispetta ETag e Last-Modified, interpreta 304 come conferma, gestisci 429 con Retry-After e registra il request id delle risposte non 2xx.
Configura un webhook per gli eventi che ti interessano, verifica la firma HMAC e rispondi rapidamente. La coda ritenta gli errori temporanei.
La v1 restituisce Markdown puro con metadata e riassunto AI in un unico documento. La v2 separa il contenuto grezzo e negozia Markdown o HTML tramite header Accept, senza wrapper JSON.
Ogni chiave è mostrata una sola volta, viene salvata solo come hash e possiede scope espliciti. Viaggia nell'header Authorization come Bearer token e può essere revocata in qualsiasi momento.
Ogni consegna include una firma HMAC-SHA256 calcolata sul payload e un timestamp. Il ricevente ricalcola la firma con il proprio secret e rifiuta le richieste non valide o troppo vecchie.
La consegna viene ritentata con backoff esponenziale e ogni endpoint ha un interruttore attivo o disattivo. Gli errori restano visibili nel pannello senza bloccare la coda principale.
Permettono al client di chiedere il contenuto solo se è cambiato. Se i dati sono identici, l'API risponde 304 senza corpo: meno banda, meno token e sincronizzazioni più rapide.
No. Il collegamento usa Google OAuth con scope di sola lettura. I token vengono cifrati e puoi revocare l'accesso dal pannello Integration Hub in qualsiasi momento.
30 giorni di prova gratis, 14 giorni money back e tutte le funzioni Pro incluse: REST v1 e v2, chiavi con scope, webhook firmati, Integration Hub e OAuth Google. Collega il sito e porta i dati dove lavori.
30 giorni di prova gratuita · 14 giorni money back · tutte le funzioni Pro incluse