Convert X/Twitter tweets to PNG images. Deployable on Cloudflare Workers or Deno Deploy.
- Runtime: Cloudflare Workers / Deno Deploy / Bun
- Framework: Hono
- Font: Maple Mono CN (via GitHub Releases CDN)
- Rendering: Satori + resvg-wasm
bun installnpx wrangler kv:namespace create FONT_KV # first time only, copy id into wrangler.jsonc
npx wrangler secret put API_TOKEN # optional
npx wrangler deploydeployctl deploy --project=x-to-img --entrypoint src/index.tsDeno Deploy uses built-in Deno KV for font caching (no setup needed).
bun run bun:dev # Bun
npx wrangler dev # CF Workers emulator
deno task dev # Deno (requires --unstable-kv)Font files are downloaded from GitHub Releases on first cold start and cached:
| Platform | Cache |
|---|---|
| Cloudflare Workers | KV namespace (FONT_KV) |
| Deno Deploy | Deno KV (automatic) |
| Bun | In-memory only (per process) |
If API_TOKEN is set, all /api/* routes require:
Authorization: Bearer <your-secret-token>
GET /api/convert?url=<tweet_url>&theme=light|dim|dark
POST /api/convert
{
"url": "https://x.com/user/status/123",
"theme": "dark"
}Returns image/png.
GET /health