Menú de la documentación

Desarrolladores

Recibir el contenido en tu web

Guía paso a paso para llevar los artículos de Blogenia a tu propia web: leer con la API, reaccionar a un webhook o dejar que Blogenia publique en tu API.

Ver como Markdown

Hay tres formas de que los artículos de tu blog aparezcan en tu propia web. Elige según quién debe tomar la iniciativa.

OpciónQuién iniciaÚsala cuando…Necesitas
A. Leer con la APITu web pide los artículosQuieres mostrar el blog con tu diseño y te basta con refrescarlo cada pocos minutos.Una clave de API. Starter o Pro.
B. Webhook + APIBlogenia avisa y tu web pide el artículoQuieres enterarte al momento de cada publicación para guardarlo, avisar o regenerar páginas.Un webhook, una clave de API y una URL https en tu servidor. Starter o Pro.
C. Publicar en tu APIBlogenia envía el artículo a tu APITu web ya tiene una API para crear artículos y quieres que Blogenia los publique allí, incluidas las ediciones y los borrados.Implementar el contrato en tu servidor.

A. Leer con la API

  1. En el panel, abre API y pulsa Crear clave. Copia la clave: solo se muestra una vez.
  2. Guárdala en tu servidor como variable de entorno BLOGENIA_API_KEY. Guarda también el ID del blog en BLOGENIA_BLOG_ID.
  3. Pide los artículos desde el servidor y guárdalos en caché unos minutos, para no gastar tu límite en cada visita.
  4. Para el contenido de un artículo, pide GET /articles/{id} (Artículos).
Lista con caché de 5 minutos
const BASE = 'https://api.blogelia.com/v1';
const TTL_MS = 5 * 60 * 1000;
let cache = { at: 0, data: null };

export async function latestArticles() {
  if (cache.data && Date.now() - cache.at < TTL_MS) return cache.data;
  const res = await fetch(
    BASE + '/blogs/' + process.env.BLOGENIA_BLOG_ID + '/articles?limit=10',
    { headers: { Authorization: 'Bearer ' + process.env.BLOGENIA_API_KEY } },
  );
  if (!res.ok) {
    if (cache.data) return cache.data; // si falla, sirve lo último que tenías
    throw new Error('HTTP ' + res.status);
  }
  const body = await res.json();
  cache = { at: Date.now(), data: body.data };
  return cache.data;
}

B. Webhook y lectura del artículo

  1. Crea una clave de API como en la opción A.
  2. Expón en tu servidor una URL https que reciba POST (por ejemplo /webhooks/blogenia).
  3. En el panel, en Webhooks, pulsa Añadir webhook, pega la URL y copia el secreto (whsec_…). Solo se muestra una vez.
  4. Guarda el secreto como variable de entorno BLOGENIA_WEBHOOK_SECRET.
  5. Pulsa Enviar prueba y comprueba que tu servidor responde 200.
  6. En cada article.published, verifica la firma, responde 200 y pide el artículo completo con su id.

El código completo de isValid está en Webhooks, con Node, Python y PHP.

Al recibir article.published
// isValid(rawBody, headers): ver "Verificar la firma" en Webhooks
app.post('/webhooks/blogenia', express.raw({ type: 'application/json' }), (req, res) => {
  const rawBody = req.body.toString('utf8');
  if (!isValid(rawBody, req.headers)) return res.sendStatus(400);
  res.sendStatus(200); // responde ya; trabaja después

  const event = JSON.parse(rawBody);
  if (event.event !== 'article.published') return;
  const id = event.data.article.id;
  fetch('https://api.blogelia.com/v1/articles/' + id, {
    headers: { Authorization: 'Bearer ' + process.env.BLOGENIA_API_KEY },
  })
    .then((r) => r.json())
    .then((article) => saveInYourDatabase(article)) // tu código
    .catch((err) => console.error(err));
});

C. Publicar en tu propia API

  1. Implementa en tu servidor las rutas del contrato: comprobar, crear, actualizar y borrar. Parte del receptor de ejemplo.
  2. Crea una clave secreta para Blogenia y guárdala en tu servidor como variable de entorno BLOGENIA_TOKEN.
  3. En el panel, abre Blog y la pestaña Publicación. Elige API propia, escribe la dirección de tu web, pega la clave como Clave de acceso y guarda.
  4. Comprueba la conexión. Si va bien, cada artículo que se publique se enviará a tu API.

Para una prueba rápida, arranca el receptor de ejemplo de Publicar en tu propia API detrás de un túnel https.