トピック

FastOG SDK — ダウンロードと使用方法

言語ごとに1ファイル、依存関係ゼロ、パッケージマネージャー不要です。以下からダウンロードするか(またはCDNからcurl)、プロジェクトにコピーしてください(サーバーサイドのみ)。現在はv1としてここでメンテナンスされています。契約が変更された場合は、このページとダウンロード可能なファイルを一緒に更新します。完全な署名契約と、任意の言語での手動実装については、Agent & 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 上で動作するため、同じテスト済みの署名ファイルを共有します(Express は CommonJS、それ以外は ESM)。使用方法や README のみが異なります。各フレームワークの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 }) を呼び出し、head 内で URL をレンダリングします。各フレームワークの sdk/<name>/README.md を参照してください。

url を <meta property="og:image"> に配置します。クローラーが GET リクエストで取得します。エッジキャッシュされ、一意の画像ごとに 1 回だけレンダリングされます。

バージョニング

これは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 → エッジで無期限にキャッシュ可能。
  • 配列パラメータ(features)はkey[]=/key[0]=として出力されるため、サーバー側で正しくデコードされます。
  • キーのシークレットをローテーションすることで失効させられます。

検証

すべてのSDKは、FastOGサーバーが生成する同じゴールデンベクター(golden vector)に対してテストされています。

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

お使いの実装が、それらのパラメータに対してその署名を生成する場合、サーバーはお客様のURLを受け入れます。

セキュリティ

  • secretはサーバーサイド専用です。ブラウザや公開CDNスクリプトには絶対に含めないでください。
  • keyは公開情報です(URLに含まれます)。これは想定どおりです。
  • サーバー上で署名してください。埋め込むのはFastOGのURLであり、シークレットではありません。

無料で試す — サインアップ不要

動的OG画像を数秒でプレビューおよびテスト。

無料のOG画像テスターを開く

A BeCaSimulations site