FastOG SDK — 다운로드 및 사용
언어별 단일 파일, 의존성 제로, 패키지 매니저 불필요. 아래에서 다운로드하거나(또는 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
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 내)
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) — 서명자(signer)를 가져와 서버 코드에서 ogImageUrl(params, { key, secret })을 호출하고, head에 URL을 렌더링합니다. 각 프레임워크의 sdk/<name>/README.md을 참조하세요.
url을 <meta property="og:image">에 넣으세요. 크롤러가 GET 요청을 보내며, 엣지 캐시(edge-cache)로 처리되어 고유 이미지당 한 번만 렌더링됩니다.
버전 관리
이 문서는 v1이며 현재 위치에서 유지 관리됩니다. 계약(contract)이 변경되면 파일과 이 페이지를 함께 업데이트합니다(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, 렌더링 없음, 할당량(quota) 차감 없음. - 동일한 파라미터 → 동일한 URL → 엣지(edge)에서 영구적으로 캐시 가능.
- 배열 파라미터(
features)는key[]=/key[0]=로 전송되어 서버가 올바르게 디코딩합니다. - 키의 시크릿(secret)을 회전시켜 서명을 폐기할 수 있습니다.
검증
모든 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이며, 비밀 키가 아닙니다.