
Security News
/Company News
Securing the Financial Frontier: How Capital One Uses Socket for Open Source Security
Capital One is partnering with Socket to proactively secure its open source supply chain.
bulktemplates
Advanced tools
Social media image generation API for AI agents, LLMs, and developers. Browse 80+ templates, render PNGs, and run batch jobs programmatically.
The official BulkTemplates SDK for Node.js — programmatic image generation API and MCP server in one package. Browse 80+ social media templates, render PNGs, and run batch jobs from your code or AI agent.
| Programmatic SDK | MCP Server | |
|---|---|---|
| Use case | Scripts, apps, agents via code | Claude Desktop, Cursor, any MCP client |
| Import | import { BulkTemplates } from 'bulktemplates' | npx bulktemplates-mcp |
npm install bulktemplates
import { BulkTemplates } from 'bulktemplates';
const bt = new BulkTemplates({ apiKey: 'bk_...' });
// Browse all templates (lightweight)
const list = await bt.templates.list({ summary: true });
// Filter by IDs
const picked = await bt.templates.list({ ids: 'quote-card,tweet-style' });
// Full template definition — shows field names needed for rendering
const tpl = await bt.templates.get('quote-card');
// Returns a Buffer containing the PNG
const png = await bt.images.image('quote-card', {
quote: 'Ship it.',
author: 'Ada Lovelace',
});
// Save to disk
import { writeFileSync } from 'fs';
writeFileSync('out.png', png);
// Override font
const png2 = await bt.images.image('quote-card', data, {
fontFamily: 'playfair-display',
});
// Start a batch (max 1,000 rows)
const job = await bt.batch.create('announcement', [
{ headline: 'Product launch', date: 'May 1' },
{ headline: 'Webinar', date: 'May 8' },
]);
// Poll until done
let status = await bt.batch.poll(job.id);
while (status.status !== 'done') {
await new Promise(r => setTimeout(r, 2000));
status = await bt.batch.poll(job.id);
}
console.log(status.files); // paths to rendered PNGs
const fonts = await bt.fonts.list();
// [{ id: 'inter', name: 'Inter' }, { id: 'playfair-display', name: 'Playfair Display' }, ...]
import { BulkTemplates, AuthenticationError, NotFoundError, RateLimitError } from 'bulktemplates';
try {
const png = await bt.images.image('quote-card', data);
} catch (err) {
if (err instanceof AuthenticationError) console.error('Bad API key');
if (err instanceof NotFoundError) console.error('Template not found');
if (err instanceof RateLimitError) console.error('Slow down');
}
Use with Claude Desktop, Cursor, or any MCP-compatible client. The server exposes 6 tools: list_templates, get_template, render_image, list_fonts, create_batch_job, poll_batch_job.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"bulktemplates": {
"command": "npx",
"args": ["-y", "bulktemplates"],
"env": {
"BULKTEMPLATES_API_KEY": "bk_YOUR_KEY_HERE"
}
}
}
}
{
"mcpServers": {
"bulktemplates": {
"command": "npx",
"args": ["-y", "bulktemplates"],
"env": {
"BULKTEMPLATES_API_KEY": "bk_YOUR_KEY_HERE"
}
}
}
}
BULKTEMPLATES_API_KEY=bk_... npx bulktemplates-mcp
BulkTemplates(config)| Option | Type | Required | Default |
|---|---|---|---|
apiKey | string | Yes | — |
baseUrl | string | No | https://bulktemplates.com |
| Resource | Method | Description |
|---|---|---|
bt.templates | list(opts?) | List templates. opts.summary for lightweight, opts.ids to filter |
bt.templates | get(id) | Full template definition with field names |
bt.images | image(templateId, data, opts?) | Render PNG → Buffer. opts.fontFamily to override font |
bt.batch | create(templateId, rows) | Start async batch job (max 1,000 rows) |
bt.batch | poll(id) | Check job status; files array available when status === 'done' |
bt.fonts | list() | All available font IDs |
| Class | HTTP status | When thrown |
|---|---|---|
BulkTemplatesError | any | Base class |
AuthenticationError | 401 | Invalid or missing API key |
NotFoundError | 404 | Template or job not found |
RateLimitError | 429 | Too many requests |
ValidationError | 422 | Bad request payload |
| Variable | Required | Default | Description |
|---|---|---|---|
BULKTEMPLATES_API_KEY | Yes | — | Your API key |
BULKTEMPLATES_API_BASE | No | https://bulktemplates.com | Override base URL |
80+ templates across social media, B2B, editorial, lifestyle, fitness, commerce, and events. Aspect ratios: 1:1 · 4:5 · 9:16 · 16:9 · 3:1
Example IDs: quote-card, tweet-style, event-card, testimonial, product-launch, podcast-episode, linkedin-banner, youtube-thumb, breaking-news-red, magazine-cover and many more.
MIT
FAQs
Social media image generation API for AI agents, LLMs, and developers. Browse 80+ templates, render PNGs, and run batch jobs programmatically.
The npm package bulktemplates receives a total of 4 weekly downloads. As such, bulktemplates popularity was classified as not popular.
We found that bulktemplates demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
/Company News
Capital One is partnering with Socket to proactively secure its open source supply chain.

Security News
Socket CTO Ahmad Nassri discusses how to keep AI agents from bypassing package blocks, limit credential access, and monitor their actions.

Security News
GPT-6 Astra tried to plant malicious code in simulated open source projects using fake GitHub accounts and deceptive PRs during an assigned CTF challenge.