Tema

FastOG SDK — Descarga y uso

Un archivo por lenguaje, cero dependencias, sin necesidad de gestor de paquetes. Descárgalo a continuación (o curl desde nuestro CDN) y cópialo en tu proyecto (solo en el lado del servidor). Se mantiene como v1 aquí mismo — cuando el contrato cambie, actualizamos esta página y los archivos descargables juntos. Para el contrato de firma completo e implementaciones hechas a mano en cualquier lenguaje, consulta Integración con Agent y LLM.

Descargas

Elige un lenguaje y pulsa descargar (o clic derecho → Guardar como):

Lenguaje Descarga
Node.js (CommonJS) ⬇ fastog.js
Svelte / SvelteKit (ESM) ⬇ fastog.js
PHP ⬇ FastOg.php
Ruby / Rails ⬇ fastog.rb
Python (Django / FastAPI / Flask) ⬇ fastog.py
Go ⬇ fastog.go
Express (Node) ⬇ fastog.js
Next.js (App Router) ⬇ fastog.js
Astro ⬇ fastog.js
Vue / Nuxt ⬇ fastog.js

Estos enlaces apuntan a /sdk/<file>, que sirve el archivo como descarga — o usa curl -O https://fastog.com/sdk/<file> si prefieres la línea de comandos.

Vue, Next.js, Astro y Express se ejecutan en Node — comparten los mismos archivos de firma probados (CommonJS para Express, ESM para el resto); solo cambia el uso/README. El sdk/<name>/README.md de cada framework muestra la integración exacta.

Cada archivo es el SDK completo. Cópialo en tu proyecto, require/import, y listo.

Uso

Node.js

js
const { ogImageUrl } = require("./fastog.js");
const url = ogImageUrl(
    {
        template: "blog",
        title: "Hello World",
        features: ["Free shipping", "30-day returns"],
    },
    { key: process.env.FASTOG_API_KEY, secret: process.env.FASTOG_HMAC_SECRET },
);

SvelteKit (en +page.server.js / +layout.server.js)

js
import { ogImageUrl } from "$lib/fastog.js";
const url = ogImageUrl(params, {
    key: process.env.FASTOG_API_KEY,
    secret: process.env.FASTOG_HMAC_SECRET,
});

PHP

php
use FastOg\FastOg;
$url = FastOg::signedUrl($params, getenv('FASTOG_API_KEY'), getenv('FASTOG_HMAC_SECRET'));

Ruby / Rails

ruby
url = FastOg.signed_url(params, ENV.fetch("FASTOG_API_KEY"), ENV.fetch("FASTOG_HMAC_SECRET"))

Python (Django / FastAPI / Flask)

python
import fastog
url = fastog.signed_url(params, os.environ["FASTOG_API_KEY"], os.environ["FASTOG_HMAC_SECRET"])

Go

go
url := fastog.SignedURL(params, os.Getenv("FASTOG_API_KEY"), os.Getenv("FASTOG_HMAC_SECRET"))

Express / Next.js / Astro / Vue (Node) — importa el firmante (signer), llama a ogImageUrl(params, { key, secret }) en tu código de servidor y renderiza la URL en el <head>. Consulta la sdk/<name>/README.md de cada framework.

Coloca url en <meta property="og:image">. Los rastreadores (crawlers) hacen GET de esa URL: se cachea en el edge y se genera un solo render por imagen única.

Control de versiones

Esta es la v1 y se mantiene en su lugar. Cuando el contrato cambia, actualizamos los archivos y esta página juntos (v2, v3, …): tú actualizas volviendo a descargarlos. No hay registro de paquetes que sincronizar, ni ceremonia de semver, ni desviación entre múltiples paquetes.

Cómo funciona

canonical = sorted enc(key)=enc(value) pairs of every param except `s`, including `key`
message   = "GET/api/v1/og" + "\n" + canonical
signature = hex(HMAC-SHA256(message, secret))
  • Cualquier cambio en un parámetro invalida la firma → 401, sin renderizado, sin consumo de cuota.
  • Parámetros idénticos → URL idéntica → almacenable en caché en el edge para siempre.
  • Los parámetros de tipo array (features) se emiten como key[]= / key[0]= para que el servidor los decodifique correctamente.
  • Revocación rotando el secreto de la clave.

Verificación

Todos los SDK se prueban contra el mismo vector dorado generado por el servidor de FastOG:

canonical = features=30-day%20returns&features=Free%20shipping&key=sk_test123&template=blog&title=Hello%20World
signature = a79232b15b45002aee76174f542e0a661b37cb1259df01e263c952ca4052a54d

Si tu copia produce esa firma para esos parámetros, el servidor aceptará tus URLs.

Seguridad

  • secret es solo del lado del servidor — nunca en el navegador, nunca en un script público de CDN.
  • key es público (aparece en las URLs) — eso es lo esperado.
  • Firma en tu servidor; la URL de FastOG es lo que incrustas, no el secreto.

Pruébalo gratis: no se requiere registro

Previsualiza y prueba imágenes OG dinámicas en segundos.

Abrir el probador gratuito de imágenes OG

A BeCaSimulations site