Saltar al contenidoNuevoBásico 19 €, Crecimiento 49 €, Empresa 89 €, con artículos · anual: 2 meses gratis
Integraciones

Conéctalo una vez, publica siempre.

Conecta tu blog una sola vez. A partir de ahí, cada artículo llega como borrador a tu plataforma, o se publica solo si activas la publicación automática, con sus salvaguardas. Aquí tienes exactamente qué hacemos en cada una.

Los nombres y logos de producto son marcas de sus propietarios y no implican respaldo.

WordPress

WordPress en tu propio alojamiento: entradas por la API REST con una contraseña de aplicación.

Qué se publica

Llega como borrador. Sólo se publica si activas la publicación automática. Para retirarla, pásala a borrador en WordPress.

Se despublica desde tu plataforma

Campos que rellenamos

  • Título y slug
  • Cuerpo en HTML, con tablas e índice
  • Extracto
  • Imagen destacada (se sube a tu mediateca)
  • Etiquetas (se crean si no existen)
  • Fecha de publicación
  • Imágenes del artículo (gráficos, esquemas): se suben a tu mediateca

Qué necesitas

  • WordPress 5.6 o posterior, accesible desde internet
  • Un usuario con rol de Autor o superior
  • Una contraseña de aplicación de ese usuario

Algunos alojamientos quitan la cabecera Authorization (Apache sin CGIPassAuth). Si la prueba da 401 con la contraseña correcta, pregunta a tu alojamiento.

Guía de contraseñas de aplicación

Visibilidad en IA para webs de WordPress

WordPress.com

Próximamente

Webs alojadas en WordPress.com, en cualquier plan: entras con WordPress.com y eliges el sitio.

El conector está hecho; estamos terminando el alta de la app con la plataforma. Aparecerá en el producto en cuanto esté activado.

Qué se publica

Llega como borrador salvo que actives la publicación automática. Puedes despublicarla desde Citable durante 7 días (vuelve a borrador).

Despublicar en un clic desde Citable

Campos que rellenamos

  • Título y slug
  • Cuerpo en HTML, con tablas
  • Extracto
  • Imagen destacada (WordPress.com la descarga)
  • Etiquetas
  • Fecha de publicación
  • Imágenes del artículo (gráficos, esquemas): WordPress.com las copia a tu mediateca

Qué necesitas

  • Una cuenta de WordPress.com con rol de Autor o superior en el sitio
  • Nada que instalar: apruebas el acceso en WordPress.com y guardamos un token cifrado sólo para ese sitio

WordPress.com no es lo mismo que WordPress autoalojado: usa la API y el inicio de sesión de WordPress.com, así que funciona en todos los planes. Para WordPress en tu propio alojamiento (o WordPress.com Business con plugins), usa el conector de WordPress con contraseña de aplicación.

OAuth2 de WordPress.com

Visibilidad en IA para webs de WordPress.com

Webflow

Elementos de tu colección del CMS por la Data API v2, con autorización de Webflow.

Qué se publica

Llega como borrador (elemento sin publicar) salvo que actives la publicación automática. Puedes despublicarlo desde Citable durante 7 días.

Despublicar en un clic desde Citable

Campos que rellenamos

  • Los campos que tenga tu colección, mapeados una vez: nombre, slug, cuerpo enriquecido, resumen, imagen principal, texto alternativo, autor, fecha, etiquetas, idioma
  • Imágenes del artículo (gráficos, esquemas): dentro del cuerpo enriquecido, enlazadas desde el almacenamiento de imágenes de Citable (público, de sólo lectura)

Qué necesitas

  • Un sitio de Webflow con una colección del CMS para el blog
  • Permiso para autorizar apps en ese sitio

Visibilidad en IA para webs de Webflow

Framer

Elementos de una colección del CMS de Framer por la Server API de Framer.

Qué se publica

Llega como borrador salvo que actives la publicación automática. Puedes despublicarlo desde Citable durante 7 días.

Despublicar en un clic desde Citable

Campos que rellenamos

  • Los campos que tenga tu colección, mapeados una vez: título, cuerpo con formato, resumen, imagen, fecha, autor, etiquetas
  • Imágenes del artículo (gráficos, esquemas): dentro del cuerpo con formato, enlazadas desde el almacenamiento de imágenes de Citable (público, de sólo lectura)

Qué necesitas

  • Un proyecto de Framer con una colección del CMS
  • La URL del proyecto y una clave de API (Site settings → General)

Visibilidad en IA para webs de Framer

Shopify

Artículos en el blog de tu tienda por la Admin API de Shopify.

Qué se publica

Llega oculto (sin publicar) salvo que actives la publicación automática. Para retirarlo, ocúltalo en Shopify.

Se despublica desde tu plataforma

Campos que rellenamos

  • Título y handle
  • Cuerpo en HTML
  • Resumen
  • Imagen
  • Etiquetas
  • Autor
  • Imágenes del artículo (gráficos, esquemas): en el cuerpo, enlazadas desde el almacenamiento de imágenes de Citable (público, de sólo lectura)

Qué necesitas

  • Una app personalizada en tu tienda con el permiso write_content
  • Su token de acceso de la Admin API (shpat_…)
  • Un blog en la tienda (te dejamos elegir si hay varios)

Visibilidad en IA para webs de Shopify

Ghost

Posts por la Admin API de Ghost con la clave de una integración personalizada.

Qué se publica

Llega como borrador salvo que actives la publicación automática. Para retirarlo, pásalo a borrador en Ghost.

Se despublica desde tu plataforma

Campos que rellenamos

  • Título y slug
  • Cuerpo (Ghost convierte el HTML a su editor)
  • Extracto y meta description
  • Imagen destacada (por URL)
  • Etiquetas
  • Fecha de publicación
  • Imágenes del artículo (gráficos, esquemas): se suben a Ghost

Qué necesitas

  • Ghost 5 o posterior
  • Una integración personalizada y su clave de la Admin API (id:secreto)

Visibilidad en IA para webs de Ghost

Notion

Páginas en una base de datos de Notion, con sus propiedades rellenas y el artículo en bloques nativos.

Qué se publica

Llega como borrador si tu base de datos tiene una propiedad Status o Select (Draft / Published) o una casilla Published; sólo se marca como publicada con la publicación automática. Puedes despublicarla desde Citable durante 7 días. Sin propiedad de estado, Notion no distingue borrador de publicado: lo decide tu web.

Despublicar en un clic desde Citable

Campos que rellenamos

  • Título (la propiedad Name de la base de datos)
  • Slug, Resumen, Estado, Fecha, Etiquetas, Idioma, Autor e Imagen, si tu base de datos las tiene (nombres en inglés o en español)
  • Cuerpo en bloques de Notion: encabezados, párrafos con negrita, cursiva y enlaces, listas, citas, tablas, imágenes y código
  • Imagen de portada (enlazada por URL)
  • Imágenes del artículo (gráficos, esquemas): bloques de imagen enlazados desde el almacenamiento de imágenes de Citable (público, de sólo lectura)

Qué necesitas

  • Una conexión interna en el portal de desarrolladores de Notion con permisos de leer, actualizar e insertar contenido
  • La base de datos del blog compartida con esa conexión
  • Recomendado: una propiedad Status con las opciones Draft y Published

Notion: conexiones internas

Visibilidad en IA para webs de Notion

Wix

Próximamente

Posts en tu Wix Blog, con la app de Citable para Wix.

El conector está hecho; estamos terminando el alta de la app con la plataforma. Aparecerá en el producto en cuanto esté activado.

Qué se publica

Llega como borrador salvo que actives la publicación automática. Para retirarlo, hazlo en Wix (la API no lo permite).

Se despublica desde tu plataforma

Campos que rellenamos

  • Título y slug SEO
  • Cuerpo convertido al contenido enriquecido de Wix
  • Extracto
  • Imagen de portada (se importa a tu Media Manager)
  • Hashtags
  • Idioma
  • Autor (un miembro de tu sitio que eliges)
  • Imágenes del artículo (gráficos, esquemas): se importan a tu Media Manager

Qué necesitas

  • Un sitio Wix con la app Wix Blog
  • Ser propietario del sitio: instalas la app de Citable y la abres desde tu panel de Wix, que es como Wix demuestra que el sitio es tuyo
  • Un sitio Wix sólo puede estar vinculado a una web de Citable a la vez

Visibilidad en IA para webs de Wix

Webhook

Un POST firmado a cualquier URL: Zapier, Make, n8n o tu propio endpoint.

Qué se publica

Enviamos «publicar: false» salvo que actives la publicación automática; tu receptor decide qué hacer y responde con el id (y la URL si queda publicado).

Se despublica desde tu plataforma

Campos que rellenamos

  • Título, slug y resumen
  • HTML y markdown
  • JSON-LD (Article, FAQPage)
  • Imágenes y fuentes
  • Idioma, etiquetas y fecha
  • Imágenes del artículo con su texto alternativo, enlazadas desde el almacenamiento de imágenes de Citable (público, de sólo lectura)

Qué necesitas

  • Una URL https pública que responda en menos de 10 segundos
  • Verificar la cabecera X-Citable-Signature con el secreto que te enseñamos una vez

Next.js

Tu propio blog en Next.js (o en cualquier stack): webhook firmado o nuestra API REST, con un ejemplo listo.

Qué se publica

Igual que el webhook: borrador salvo publicación automática. O trae tú los artículos desde la API v1 cuando quieras.

Se despublica desde tu plataforma

Campos que rellenamos

  • Markdown y HTML del artículo
  • Título, slug, resumen, JSON-LD, imágenes y fuentes

Qué necesitas

  • Una ruta de tu app que reciba un POST y verifique la firma (ejemplo abajo)
  • O una clave de API (página Desarrolladores) para leer los artículos con GET /api/v1

Visibilidad en IA para webs de Next.js

Receptor mínimo (route handler de Next.js)

Verifica la firma, guarda el markdown y responde con el id y la URL.

// app/api/citable/route.ts
import { createHmac, timingSafeEqual } from "node:crypto";
import { mkdir, writeFile } from "node:fs/promises";

export async function POST(req: Request) {
  const cuerpo = await req.text(); // sin parsear: la firma es del texto exacto
  const firma = req.headers.get("x-citable-signature") ?? "";
  const partes = Object.fromEntries(firma.split(",").map((p) => p.split("=")));
  const t = Number(partes.t);
  const esperada = createHmac("sha256", process.env.CITABLE_WEBHOOK_SECRET!).update(`${t}.${cuerpo}`).digest();
  const recibida = Buffer.from(partes.v1 ?? "", "hex");
  const reciente = Math.abs(Date.now() / 1000 - t) <= 300;
  if (!reciente || recibida.length !== esperada.length || !timingSafeEqual(recibida, esperada)) {
    return new Response("firma no válida", { status: 400 });
  }

  const { evento, articulo, publicar } = JSON.parse(cuerpo);
  if (evento === "ping") return Response.json({ id: "ping" });

  // Guarda el markdown (`publicar: false` = borrador). En Vercel el disco no persiste:
  // ahí, guárdalo en tu base de datos o haz commit en tu repositorio.
  const slug = String(articulo.slug).replace(/[^a-z0-9-]/gi, "");
  await mkdir("content/blog", { recursive: true });
  const frontmatter = `---\ntitle: ${JSON.stringify(articulo.titulo)}\ndraft: ${!publicar}\n---\n\n`;
  await writeFile(`content/blog/${slug}.md`, frontmatter + (articulo.markdown ?? ""));

  return Response.json({ id: slug, estado: publicar ? "publicado" : "borrador", url: `https://tuweb.com/blog/${slug}` });
}

También en el repositorio, en docs/ejemplos/nextjs-webhook.ts, con la carga completa en docs/API.md.

¿Prefieres ir a buscarlos? Lee los artículos (markdown, HTML, fuentes, FAQ) con la API REST v1 y una clave de la página Desarrolladores.

HubSpot CMS

Próximamente

Entradas en tu blog de HubSpot por la Blog Posts API, con autorización de HubSpot.

El conector está hecho; estamos terminando el alta de la app con la plataforma. Aparecerá en el producto en cuanto esté activado.

Qué se publica

Llega como borrador salvo que actives la publicación automática (entonces se marca como publicada, para lo que hace falta el autor que elijas aquí). Para retirarla, hazlo en HubSpot.

Se despublica desde tu plataforma

Campos que rellenamos

  • Título y slug
  • Cuerpo en HTML, con tablas
  • Meta description y resumen
  • Imagen destacada (se sube a tu File Manager)
  • Etiquetas (se crean si no existen)
  • Autor (un autor del blog que eliges)
  • Imágenes del artículo (gráficos, esquemas): se suben a tu File Manager

Qué necesitas

  • Una cuenta de HubSpot con Content Hub (un blog)
  • Un usuario que pueda aprobar apps en esa cuenta
  • Sólo pedimos los permisos de contenido y archivos

Esto es el blog de HubSpot (CMS). Sincronizar contactos con el CRM de HubSpot es otra integración.

Blog Posts API de HubSpot

Contentful

Entradas del tipo de contenido que elijas, con tus campos mapeados, por la Content Management API.

Qué se publica

Llega como entrada en borrador salvo que actives la publicación automática. Los cambios en una entrada publicada quedan pendientes hasta que los publiques. Puedes despublicarla desde Citable durante 7 días.

Despublicar en un clic desde Citable

Campos que rellenamos

  • Los campos que tenga tu tipo de contenido, mapeados una vez: título, slug, cuerpo, resumen, imagen, texto alternativo, autor, fecha, etiquetas, idioma
  • Cuerpo en Rich Text (encabezados, listas, enlaces, citas, tablas e imágenes como assets) o en Markdown si el campo es de texto largo
  • Imágenes (destacada y del artículo): se suben como assets, se procesan y se publican
  • El locale del artículo si tu espacio lo tiene (es → es-ES); si no, el de por defecto

Qué necesitas

  • Un espacio de Contentful y un tipo de contenido para el blog
  • Un token de acceso personal (CFPAT-…) de un usuario que pueda editar y publicar en ese espacio
  • El id del espacio y el entorno (normalmente master)

Content Management API de Contentful

Sanity

Documentos del tipo que elijas, con el cuerpo en Portable Text, por la HTTP API de Sanity.

Qué se publica

Llega como borrador (un documento drafts., como en el Studio) salvo que actives la publicación automática. Si hay borrador, las actualizaciones van a él. Puedes despublicarlo desde Citable durante 7 días.

Despublicar en un clic desde Citable

Campos que rellenamos

  • Los campos que tenga tu tipo de documento, mapeados una vez (los detectamos de tus documentos; un tipo sin documentos recibe los campos de la plantilla de blog de Sanity)
  • Cuerpo en Portable Text: encabezados, negrita, cursiva, enlaces, listas, citas e imágenes; las tablas pasan a listas (Sanity no tiene un tipo de tabla estándar)
  • Slug como campo slug
  • Imágenes (principal y del artículo): se suben como assets de imagen

Qué necesitas

  • Un proyecto de Sanity, su projectId y el dataset
  • Un token de API con rol Editor (permiso de escritura)

HTTP API de Sanity

Strapi

Entradas en tu colección de Strapi (v4 o v5, autoalojado o Cloud) por la API REST.

Qué se publica

Llega como borrador (Draft & Publish) salvo que actives la publicación automática. Las actualizaciones conservan el estado. Para retirarla, hazlo en Strapi.

Se despublica desde tu plataforma

Campos que rellenamos

  • Los campos que tenga tu colección, mapeados una vez: título, slug (UID), cuerpo, resumen, imagen, autor, fecha, etiquetas, idioma
  • Cuerpo en Blocks (el editor enriquecido de Strapi 5) o en Markdown, según el campo
  • Imágenes (destacada y del artículo): se suben a tu Media Library

Qué necesitas

  • Strapi 4 o 5 en una URL https pública
  • Un API token (Settings → API Tokens) con create, update y find en la colección, upload y lectura del Content-Type Builder
  • Draft & Publish activado en la colección si quieres borradores

Strapi 5 publica al crear salvo que se le diga lo contrario: siempre enviamos el estado de borrador de forma explícita.

API REST de Strapi

Storyblok

Historias con el componente de contenido que elijas, por la Management API.

Qué se publica

Llega como historia en borrador salvo que actives la publicación automática. Los cambios en una historia publicada quedan pendientes hasta que los publiques. Puedes despublicarla desde Citable durante 7 días.

Despublicar en un clic desde Citable

Campos que rellenamos

  • Los campos que tenga tu componente, mapeados una vez: título, cuerpo, resumen, imagen, autor, fecha, etiquetas, idioma
  • Cuerpo en Rich Text de Storyblok (encabezados, listas, enlaces, citas e imágenes; las tablas pasan a listas) o en Markdown
  • Imágenes (destacada y del artículo): se suben como assets
  • Opcional: la carpeta donde se crean las historias

Qué necesitas

  • Un espacio de Storyblok y un componente de contenido para los artículos
  • Un token de acceso personal (My account → Personal access tokens)
  • El id del espacio y su región

Management API de Storyblok

Medium

Una copia del artículo en Medium, con el enlace canónico apuntando a tu web. Sólo si ya tienes un token de integración.

Qué se publica

Llega como borrador salvo que actives la publicación automática (entonces es público). La API de Medium no permite editar ni despublicar: hazlo en Medium.

Se despublica desde tu plataforma

Campos que rellenamos

  • Título y cuerpo en HTML (Medium importa las imágenes)
  • URL canónica: la URL de tu blog + el slug del artículo, para que los buscadores atribuyan el original a tu web
  • Hasta 3 etiquetas (el límite de Medium)

Qué necesitas

  • Un token de integración de Medium creado antes de que Medium dejara de emitirlos
  • La URL de tu blog, donde está publicado el original

Medium ya no emite tokens de integración nuevos ni admite integraciones nuevas; los que ya existen siguen funcionando. Sin uno, Medium no se puede conectar desde ninguna herramienta. Medium es una copia: publica antes el original en tu web.

Medium: importación por API

Zapier

Lanza un Zap cuando un artículo está listo o publicado: nuestro webhook firmado como Catch Hook, o un disparador instantáneo con nuestra API REST.

Qué se publica

Enviamos «publicar: false» salvo que actives la publicación automática: tu Zap decide qué hacer (guardarlo en Google Docs, avisar en Slack, publicarlo en otro sitio…).

Se despublica desde tu plataforma

Campos que rellenamos

  • El artículo entero (título, slug, resumen, HTML, markdown, JSON-LD, imágenes, fuentes) con el webhook
  • O eventos (article.ready, article.published…) con el id para traer el artículo desde la API

Qué necesitas

  • Un plan de Zapier con Webhooks by Zapier (es una app premium)
  • O, para el REST hook, una clave de API con alcance de escritura (página Desarrolladores)

Citable no tiene una app pública en el directorio de Zapier. Los endpoints de REST hook (POST /api/v1/hooks) siguen el patrón REST Hook de Zapier, así que una integración privada de Zapier puede usarlos como disparador instantáneo.

Webhooks by Zapier

Lo que enviamos (article.create)

Responde 2xx en menos de 10 segundos con {"id": "…"} (y "url" si quedó publicado) para que Citable sepa dónde ha acabado el artículo.

{
  "evento": "article.create",
  "publicar": false,
  "articulo": {
    "titulo": "How much does a Webflow redesign cost?",
    "slug": "webflow-redesign-cost",
    "resumen": "Real price ranges from 12 agencies, what drives the cost and how to budget.",
    "html": "<h2>Short answer</h2><p>…</p>",
    "markdown": "## Short answer\n\n…",
    "jsonLd": [{ "@type": "Article", "headline": "…" }],
    "imagenes": [{ "url": "https://…/cover.png", "alt": "…", "destacada": true }],
    "autor": null,
    "fechaPublicacion": "2026-10-05T09:00:00.000Z",
    "idioma": "en",
    "etiquetas": ["webflow", "pricing"],
    "fuentes": [{ "url": "https://…", "titulo": "…" }]
  },
  "enviado": "2026-10-05T09:00:01.000Z"
}

Cabeceras

X-Citable-Signature: t=1780650001,v1=5f2c…(hex)
X-Citable-Event: article.create
X-Citable-Delivery: 3b1e8f0a-…
Verifica la firma

Cada entrega lleva X-Citable-Signature: t=<hora unix>,v1=<HMAC-SHA256 en hex de «t.cuerpo» con tu secreto>. Calcúlala sobre el cuerpo en bruto (antes de parsearlo), compárala y rechaza lo que tenga más de 5 minutos.

Usa el disparador Catch Raw Hook (Catch Hook parsea el cuerpo y la firma deja de coincidir). Después, un paso Code by Zapier:

// Code by Zapier → Run JavaScript
// Input Data: body = Raw Body · signature = Headers Http X Citable Signature · secret = your whsec_… secret
const crypto = require("crypto");
const parts = Object.fromEntries(inputData.signature.split(",").map((p) => p.split("=")));
const expected = crypto.createHmac("sha256", inputData.secret).update(`${parts.t}.${inputData.body}`).digest("hex");
const fresh = Math.abs(Date.now() / 1000 - Number(parts.t)) <= 300;
if (!fresh || expected !== parts.v1) throw new Error("Invalid Citable signature");
return JSON.parse(inputData.body);
Disparador instantáneo con la API REST

¿Montas una integración privada de Zapier (Zapier Platform, sin publicarla)? Usa un disparador REST Hook: Zapier se suscribe al activar el Zap y se da de baja al apagarlo. Cada suscripción es un webhook firmado de tu espacio (aparece en Desarrolladores y cuenta para el límite de 10 endpoints).

# Subscribe (Zap on). Needs an API key with the write scope.
curl -X POST https://get-citable.com/api/v1/hooks \
  -H "Authorization: Bearer cit_live_…" -H "Content-Type: application/json" \
  -d '{"target_url": "{{bundle.targetUrl}}", "event": "article.published"}'
# → 201 {"data": {"id": "…", "event": "article.published", "secret": "whsec_…"}}

# Unsubscribe (Zap off)
curl -X DELETE https://get-citable.com/api/v1/hooks/{id} -H "Authorization: Bearer cit_live_…"

# Sample data (perform list)
curl https://get-citable.com/api/v1/hooks/sample?event=article.published -H "Authorization: Bearer cit_live_…"

Eventos: article.ready, article.published, article.failed, gap.opened, measurement.completed, audit.completed, digest.sent, lead.created. Llevan los ids; el artículo completo se trae con GET /api/v1/sites/{id}/articles/{aid}. Van firmados con la cabecera Citable-Signature (mismo formato) y salen de nuestra cola cada 5 minutos: cuenta con hasta 5 minutos de retraso.

Make

Lanza un escenario de Make con nuestro webhook firmado (módulo Custom webhook) y manda el artículo donde quieras.

Qué se publica

Enviamos «publicar: false» salvo que actives la publicación automática: tu escenario decide qué hacer y puede responder con el id y la URL.

Se despublica desde tu plataforma

Campos que rellenamos

  • El artículo entero (título, slug, resumen, HTML, markdown, JSON-LD, imágenes, fuentes)
  • Cabeceras con el evento, el id de entrega y la firma

Qué necesitas

  • Un escenario de Make con el disparador Webhooks → Custom webhook
  • Activa «Get request headers» en el webhook para leer la firma

Make: webhooks

Lo que enviamos (article.create)

Responde 2xx en menos de 10 segundos con {"id": "…"} (y "url" si quedó publicado) para que Citable sepa dónde ha acabado el artículo.

{
  "evento": "article.create",
  "publicar": false,
  "articulo": {
    "titulo": "How much does a Webflow redesign cost?",
    "slug": "webflow-redesign-cost",
    "resumen": "Real price ranges from 12 agencies, what drives the cost and how to budget.",
    "html": "<h2>Short answer</h2><p>…</p>",
    "markdown": "## Short answer\n\n…",
    "jsonLd": [{ "@type": "Article", "headline": "…" }],
    "imagenes": [{ "url": "https://…/cover.png", "alt": "…", "destacada": true }],
    "autor": null,
    "fechaPublicacion": "2026-10-05T09:00:00.000Z",
    "idioma": "en",
    "etiquetas": ["webflow", "pricing"],
    "fuentes": [{ "url": "https://…", "titulo": "…" }]
  },
  "enviado": "2026-10-05T09:00:01.000Z"
}

Cabeceras

X-Citable-Signature: t=1780650001,v1=5f2c…(hex)
X-Citable-Event: article.create
X-Citable-Delivery: 3b1e8f0a-…
Verifica la firma

Cada entrega lleva X-Citable-Signature: t=<hora unix>,v1=<HMAC-SHA256 en hex de «t.cuerpo» con tu secreto>. Calcúlala sobre el cuerpo en bruto (antes de parsearlo), compárala y rechaza lo que tenga más de 5 minutos.

En el Custom webhook, activa JSON pass-through y Get request headers para tener el cuerpo en bruto y la firma. Después:

// Custom webhook → Show advanced settings: JSON pass-through ON · Get request headers ON
// 1. Tools → Set variable "parts": split(X-Citable-Signature header; ",")  → t=…  and  v1=…
// 2. Tools → Set variable "expected", with Make's sha256(text; encoding; key):
//      text = the t value, a dot, then the raw body (value)
//      encoding = hex · key = your whsec_… secret
// 3. Filter: expected = v1  AND  the t value is less than 300 s old
// 4. Webhooks → Webhook response: {"id": "…", "url": "…"}

Las herramientas con las que trabajas

Más allá de publicar: arregla problemas técnicos con un pull request, recibe los avisos en Slack, exporta a Google Sheets y Docs, lleva los contactos a HubSpot y añade tus propios datos de Semrush o Ahrefs. Cada una pide sólo lo que necesita, sus tokens se guardan cifrados y la desconectas cuando quieras.

GitHub

Requiere activación

Arregla problemas técnicos con un pull request en el repositorio de tu web: llms.txt, robots.txt para los bots de IA y JSON-LD.

Está hecha, pero aún no está activada en esta instalación (hay que registrar la app en el proveedor). Aparecerá en el producto en cuanto lo esté.

Qué hace

  • Instalas la GitHub App de Citable sólo en los repositorios que elijas y vinculas uno a cada web.
  • «Arreglar con un PR» en la auditoría técnica crea una rama nueva, escribe o actualiza los archivos y abre un pull request con su descripción.
  • Primeros usos: tu llms.txt, un robots.txt que deja pasar a los bots de búsqueda y de respuesta de IA sin tocar el resto de tus reglas, y los datos estructurados de Organization / LocalBusiness y FAQPage.
  • Detectamos dónde van los archivos públicos (public/ en Next.js, Vite o Astro; la raíz en webs estáticas) y puedes cambiarlo.
  • Te enseñamos si el pull request está abierto, fusionado o cerrado.

Permisos

  • contents: write
  • pull_requests: write
  • metadata: read

Qué enviamos

Los archivos del pull request (generados con tu auditoría y los datos de tu marca) y su descripción. Leemos la rama principal y los archivos que vamos a cambiar.

Lo que nunca hace

  • Nunca fusiona ni escribe en tu rama principal: sólo ramas nuevas y pull requests.
  • Nunca borra archivos ni ramas de tu repositorio.

GitHub: instalar una GitHub App

Slack

Requiere activación

Los avisos que ya recibes por email, en el canal de Slack que elijas.

Está hecha, pero aún no está activada en esta instalación (hay que registrar la app en el proveedor). Aparecerá en el producto en cuanto lo esté.

Qué hace

  • Eliges el canal al añadir Citable a Slack.
  • Avisos: caída de visibilidad, menciones nuevas conseguidas en otras webs, artículo publicado y resumen semanal, cada uno activable por separado.
  • En el idioma de la cuenta, con enlaces de vuelta a Citable.

Permisos

  • incoming-webhook

Qué enviamos

El texto de cada aviso: nombre de la web, tasas con su intervalo, títulos y URL de artículos, dominios de las páginas que te mencionan.

Lo que nunca hace

  • Nunca lee tus canales ni tus mensajes: sólo puede publicar en el canal que elegiste.

Google Sheets · Docs

Requiere activación

Exporta las tablas de visibilidad y las menciones a una hoja de cálculo (al día cada semana si quieres), y un artículo o un informe a un Google Doc.

Está hecha, pero aún no está activada en esta instalación (hay que registrar la app en el proveedor). Aparecerá en el producto en cuanto lo esté.

Qué hace

  • Hoja con pestañas: por pregunta, por IA, competidores y menciones, con las tasas y su intervalo al 90 %.
  • Actualización semanal opcional de la misma hoja tras cada medición.
  • Google Doc con el informe para clientes de las últimas cuatro semanas o con un artículo.

Permisos

  • https://www.googleapis.com/auth/drive.file

Qué enviamos

Las tablas, el informe o el artículo que exportes. Con drive.file sólo vemos los archivos que crea Citable, no el resto de tu Drive.

Lo que nunca hace

  • Nunca lee ni cambia archivos que no haya creado Citable.
  • Aparte de la conexión de Search Console: acceso distinto, se revoca por separado.

HubSpot

Requiere activación

Las personas a las que escribes por las menciones, como contactos de HubSpot con una nota por cada paso (enviado, respondió, aceptado).

Está hecha, pero aún no está activada en esta instalación (hay que registrar la app en el proveedor). Aparecerá en el producto en cuanto lo esté.

Qué hace

  • Cuando marcas un correo de contacto como enviado, respondido o sin respuesta, o se consigue la mención, el destinatario se crea o se actualiza como contacto con su web.
  • Cada cambio añade una nota al contacto con la página, la pregunta y el estado.
  • Opcional: una tarea de seguimiento cuando alguien responde.

Permisos

  • crm.objects.contacts.read
  • crm.objects.contacts.write
  • oauth

Qué enviamos

Email del destinatario, la web de la página, el estado del correo, la página citada y la pregunta. No el cuerpo del correo.

Lo que nunca hace

  • Nunca borra contactos ni sobrescribe el estado de lead de un contacto que ya existía.

Semrush

Con tu propia clave

Con tu propia clave de API de Semrush: volumen de búsqueda y dificultad de las preguntas descubiertas y de las consultas de Search Console, y Authority Score de las webs de Menciones.

Funciona con tu propia clave de API de tu cuenta en el proveedor. Nunca usamos la nuestra.

Qué hace

  • Los resultados se guardan 30 días: la misma palabra o dominio no se paga dos veces en ese tiempo.
  • Antes de cada consulta te enseñamos las unidades de API que gastará y paramos en el tope mensual que pongas.

Permisos

  • API key

Qué enviamos

Las palabras (preguntas y consultas) y los dominios que se consultan. Tu clave se guarda cifrada.

Lo que nunca hace

  • Nunca usa una clave de Citable: sin la tuya, no cambia nada.

API de Semrush

Ahrefs

Con tu propia clave

Con tu propia clave de API de Ahrefs: volumen y Keyword Difficulty, y Domain Rating de las webs de Menciones.

Funciona con tu propia clave de API de tu cuenta en el proveedor. Nunca usamos la nuestra.

Qué hace

  • La misma caché (30 días) y el mismo tope mensual de unidades que Semrush.
  • Ahrefs cobra un mínimo de unidades por petición: agrupamos las palabras para gastar lo menos posible.

Permisos

  • API key (API v3)

Qué enviamos

Las palabras y los dominios que se consultan. Tu clave se guarda cifrada.

Lo que nunca hace

  • Nunca usa una clave de Citable: sin la tuya, no cambia nada.

API v3 de Ahrefs

Google Search Console

Requiere activación

Sólo lectura: tus clics y consultas de Google alimentan las mejoras de páginas y las preguntas descubiertas.

Está hecha, pero aún no está activada en esta instalación (hay que registrar la app en el proveedor). Aparecerá en el producto en cuanto lo esté.

Qué hace

  • Sincronización semanal de páginas y consultas (28 días).
  • Se conecta desde Artículos → Mejoras.

Permisos

  • https://www.googleapis.com/auth/webmasters.readonly

Qué enviamos

Nada: sólo lee.

Lo que nunca hace

  • Nunca cambia nada en Search Console.

Google Analytics 4

Requiere activación

Sólo lectura: visitas y conversiones desde asistentes de IA sin instalar nuestro script.

Está hecha, pero aún no está activada en esta instalación (hay que registrar la app en el proveedor). Aparecerá en el producto en cuanto lo esté.

Qué hace

  • Recuentos diarios agregados por página de aterrizaje (sin datos personales).
  • Se conecta desde Tráfico desde IA.

Permisos

  • https://www.googleapis.com/auth/analytics.readonly

Qué enviamos

Nada: sólo lee.

Lo que nunca hace

  • Nunca cambia nada en Google Analytics.

Mira qué dice la IA de ti antes de conectar nada.

Pedir el informe gratis

Precios · Metodología