Тема

FastOG SDK — Загрузка и использование

Один файл на язык, ноль зависимостей, менеджер пакетов не требуется. Скачайте его ниже (или curl с нашего CDN) и скопируйте в свой проект (только на стороне сервера). Поддерживается как v1 прямо здесь — при изменении контракта мы обновляем эту страницу и загружаемые файлы вместе. Полный контракт подписи и реализации, написанные вручную на любом языке, см. в разделе Интеграция с агентами и LLM.

Загрузки

Выберите язык и нажмите скачать (или кликните правой кнопкой мыши → «Сохранить как»):

Язык Скачать
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

Эти ссылки ведут на /sdk/<file>, который отдает файл как загрузку — или используйте curl -O https://fastog.com/sdk/<file>, если предпочитаете командную строку.

Vue, Next.js, Astro и Express работают на Node — они используют одни и те же проверенные файлы подписи (CommonJS для Express, ESM для остальных); отличается только документация по использованию. В sdk/<name>/README.md каждого фреймворка показана точная интеграция.

Каждый файл — это полный SDK. Скопируйте его в свой проект, require/import его, и готово.

Использование

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 (в +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) — импортируйте функцию подписи (signer), вызовите ogImageUrl(params, { key, secret }) в серверном коде и выведите URL в разделе head. См. sdk/<name>/README.md для каждой платформы.

Добавьте url в <meta property="og:image">. Краулеры получают его через GET — кэширование на границе сети, один рендер на уникальное изображение.

Версионирование

Это v1, и она поддерживается на месте. Когда контракт меняется, мы обновляем файлы и эту страницу вместе (v2, v3, …) — вы обновляетесь, повторно скачивая файлы. Никакого реестра пакетов для синхронизации, никаких формальностей semver, никакого расхождения между пакетами.

Как это работает

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))
  • Любое изменение параметра делает подпись недействительной → 401, без рендеринга, без учёта квоты.
  • Идентичные параметры → идентичный URL → кэшируется на периферии (edge) навсегда.
  • Массивные параметры (features) передаются как key[]= / key[0]=, чтобы сервер корректно их декодировал.
  • Отзыв доступа выполняется путём ротации секрета ключа.

Проверка

Все SDK тестируются на одном и том же эталонном векторе (golden vector), созданном сервером FastOG:

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

Если ваша реализация генерирует такую же подпись для этих параметров, сервер примет ваши URL.

Безопасность

  • secret предназначен только для серверной стороны — никогда не используйте его в браузере или в публичном CDN-скрипте.
  • key является публичным (он отображается в URL) — это нормально.
  • Подписывайте на своём сервере; встраивается именно URL FastOG, а не секрет.

Попробуйте бесплатно — регистрация не требуется

Предпросмотр и тестирование динамических OG-изображений за секунды.

Открыть бесплатный тестер OG-изображений

A BeCaSimulations site