FastOG SDK — Nedlasting og bruk
Én fil per språk, null avhengigheter, ingen pakkebehandler nødvendig. Last den ned nedenfor (eller curl den fra CDN-en vår) og kopier den inn i prosjektet ditt (kun server-side). Vedlikeholdes som v1 akkurat her — når kontrakten endres, oppdaterer vi denne siden og de nedlastbare filene sammen. For hele signeringskontrakten + håndskrevne implementasjoner på hvilket som helst språk, se Agent- og LLM-integrasjon.
Nedlastinger
Velg et språk og trykk på last ned (eller høyreklikk → Lagre som):
| Språk | Nedlasting |
|---|---|
| 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 |
Disse lenkene går til
/sdk/<file>, som leverer filen som en nedlasting — eller brukcurl -O https://fastog.com/sdk/<file>hvis du foretrekker kommandolinjen.
Vue, Next.js, Astro og Express kjører på Node — de deler de samme testede signer-filene (CommonJS for Express, ESM for de øvrige); kun bruksanvisningen/README-en er forskjellig. Hvert rammeverks sdk/<name>/README.md viser den nøyaktige integrasjonen.
Hver fil er hele SDK-en. Kopier den inn i prosjektet ditt, require/import den, ferdig.
Bruk
Node.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 (i +page.server.js / +layout.server.js)
import { ogImageUrl } from "$lib/fastog.js";
const url = ogImageUrl(params, {
key: process.env.FASTOG_API_KEY,
secret: process.env.FASTOG_HMAC_SECRET,
});
PHP
use FastOg\FastOg;
$url = FastOg::signedUrl($params, getenv('FASTOG_API_KEY'), getenv('FASTOG_HMAC_SECRET'));
Ruby / Rails
url = FastOg.signed_url(params, ENV.fetch("FASTOG_API_KEY"), ENV.fetch("FASTOG_HMAC_SECRET"))
Python (Django / FastAPI / Flask)
import fastog
url = fastog.signed_url(params, os.environ["FASTOG_API_KEY"], os.environ["FASTOG_HMAC_SECRET"])
Go
url := fastog.SignedURL(params, os.Getenv("FASTOG_API_KEY"), os.Getenv("FASTOG_HMAC_SECRET"))
Express / Next.js / Astro / Vue (Node) — importer signer-funksjonen, kall ogImageUrl(params, { key, secret }) i serverkoden din, og render URL-en i head-seksjonen. Se hvert rammeverks sdk/<name>/README.md.
Legg url inn i <meta property="og:image">. Crawlere henter den via GET — edge-cachet, én rendering per unikt bilde.
Versjonering
Dette er v1, og den vedlikeholdes på samme sted. Når kontrakten endres, oppdaterer vi filene og denne siden sammen (v2, v3, …) — du oppdaterer ved å laste ned på nytt. Ingen pakkeregister å synkronisere, ingen semver-seremonier, ingen flerpakke-avdrift.
Slik fungerer det
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))
- Enhver endring i en parameter ugyldiggjør signaturen →
401, ingen rendering, ingen kvotetelling. - Identiske parametere → identisk URL → kan bufres i kanten for alltid.
- Array-parametere (
features) sendes somkey[]=/key[0]=slik at serveren dekoder dem korrekt. - Tilbakekall ved å rotere nøkkelens hemmelighet.
Verifisering
Alle SDK-er testes mot den samme gullvektoren (golden vector) som produseres av FastOG-serveren:
canonical = features=30-day%20returns&features=Free%20shipping&key=sk_test123&template=blog&title=Hello%20World
signature = a79232b15b45002aee76174f542e0a661b37cb1259df01e263c952ca4052a54d
Hvis din kopi produserer den signaturen for disse parameterne, vil serveren akseptere URL-ene dine.
Sikkerhet
secreter kun server-side — aldri i nettleseren, aldri i et offentlig CDN-skript.keyer offentlig (den vises i URL-er) — det er forventet.- Signer på serveren din; FastOG-URL-en er det du embedder, ikke hemmeligheten.