FastOG SDK – Ladda ner och använda
En fil per språk, noll beroenden, ingen pakethanterare krävs. Ladda ner den nedan (eller curl den från vår CDN) och kopiera in den i ditt projekt (endast server-sidan). Underhålls som v1 här – när kontraktet ändras uppdaterar vi denna sida och de nedladdningsbara filerna tillsammans. För hela signeringskontraktet + handskrivna implementationer på vilket språk som helst, se Agent- och LLM-integration.
Nedladdningar
Välj ett språk och klicka på ladda ner (eller högerklicka → Spara som):
| Språk | Nedladdning |
|---|---|
| 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 |
Dessa länkar går till
/sdk/<file>, som levererar filen som en nedladdning — eller användcurl -O https://fastog.com/sdk/<file>om du föredrar kommandoraden.
Vue, Next.js, Astro och Express körs på Node — de delar samma testade signeringsfiler (CommonJS för Express, ESM för övriga); endast användning/README skiljer sig. Varje ramverks sdk/<name>/README.md visar den exakta integrationen.
Varje fil är hela SDK:n. Kopiera den till ditt projekt, require/import den, klart.
Användning
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) — importera signeraren, anropa ogImageUrl(params, { key, secret }) i din serverkod, rendera URL:en i head. Se varje ramverks sdk/<name>/README.md.
Lägg in url i <meta property="og:image">. Crawlers hämtar den — edge-cachad, en rendering per unik bild.
Versionshantering
Detta är v1 och det underhålls på plats. När kontraktet ändras uppdaterar vi filerna och denna sida tillsammans (v2, v3, …) — du uppdaterar genom att ladda ner igen. Inget paketregister att synkronisera, ingen semver-ceremoni, ingen drift mellan flera paket.
Så här fungerar 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))
- Alla ändringar av en parameter ogiltigförklarar signaturen →
401, ingen rendering, ingen kvoträkning. - Identiska parametrar → identisk URL → cachbar i utkanten för alltid.
- Array-parametrar (
features) skickas somkey[]=/key[0]=så att servern avkodar dem korrekt. - Återkalla genom att rotera nyckelns hemlighet.
Verifiering
Alla SDK:er testas mot samma gyllene vektor som genereras av FastOG-servern:
canonical = features=30-day%20returns&features=Free%20shipping&key=sk_test123&template=blog&title=Hello%20World
signature = a79232b15b45002aee76174f542e0a661b37cb1259df01e263c952ca4052a54d
Om din kopia producerar den signaturen för dessa parametrar kommer servern att acceptera dina URL:er.
Säkerhet
secretär endast server-side — aldrig i webbläsaren, aldrig i ett offentligt CDN-skript.keyär offentlig (den visas i webbadresser) — det är förväntat.- Signera på din server; FastOG-URL:en är det du bäddar in, inte hemligheten.