From ideogram-pack
Generates images from text prompts using Ideogram API, specializing in legible text rendering for graphics, banners, mockups, posters. Includes TS client code and param guidance.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin ideogram-packThis skill is limited to using the following tools:
Primary workflow for Ideogram: generating images from text prompts. Ideogram excels at rendering legible text inside images -- a capability where most image models fail. Use this for social media graphics, marketing banners, product mockups, posters, logos, and any visual that combines illustration with typography.
Generates first Ideogram AI image via curl or TypeScript/Node.js, covering V2/V3 endpoints and download. For API setup tests and quick starts.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
Primary workflow for Ideogram: generating images from text prompts. Ideogram excels at rendering legible text inside images -- a capability where most image models fail. Use this for social media graphics, marketing banners, product mockups, posters, logos, and any visual that combines illustration with typography.
ideogram-install-auth setupIDEOGRAM_API_KEY environment variable set| Use Case | Style Type | Aspect Ratio | Model | Notes |
|---|---|---|---|---|
| Social media post | DESIGN | ASPECT_1_1 | V_2 | Best text rendering |
| Blog hero image | REALISTIC | ASPECT_16_9 | V_2 | Photorealistic |
| Story / Reel | GENERAL | ASPECT_9_16 | V_2_TURBO | Fast, vertical |
| Logo / Icon | DESIGN | ASPECT_1_1 | V_2 | Clean typography |
| Product mockup | REALISTIC | ASPECT_4_3 | V_2 | Studio quality |
| Anime illustration | ANIME | ASPECT_3_4 | V_2 | Japanese art style |
| 3D render | RENDER_3D | ASPECT_16_9 | V_2 | 3D scene |
| Wide banner | DESIGN | ASPECT_3_1 | V_2 | Website header |
import { writeFileSync, mkdirSync } from "fs";
async function generateImage(prompt: string, options: {
model?: string;
style_type?: string;
aspect_ratio?: string;
negative_prompt?: string;
seed?: number;
} = {}) {
const response = await fetch("https://api.ideogram.ai/generate", {
method: "POST",
headers: {
"Api-Key": process.env.IDEOGRAM_API_KEY!,
"Content-Type": "application/json",
},
body: JSON.stringify({
image_request: {
prompt,
model: options.model ?? "V_2",
style_type: options.style_type ?? "DESIGN",
aspect_ratio: options.aspect_ratio ?? "ASPECT_1_1",
magic_prompt_option: "AUTO",
negative_prompt: options.negative_prompt,
seed: options.seed,
num_images: 1,
},
}),
});
if (!response.ok) {
const err = await response.text();
throw new Error(`Generation failed (${response.status}): ${err}`);
}
const result = await response.json();
const image = result.data[0];
// Download immediately -- URLs expire after ~1 hour
const imgResp = await fetch(image.url);
const buffer = Buffer.from(await imgResp.arrayBuffer());
mkdirSync("./output", { recursive: true });
const filename = `ideogram-${image.seed}.png`;
writeFileSync(`./output/${filename}`, buffer);
return { ...image, localPath: `./output/${filename}` };
}
async function generateV3(prompt: string, options: {
aspect_ratio?: string;
style_type?: string;
rendering_speed?: string;
negative_prompt?: string;
magic_prompt?: string;
style_preset?: string;
} = {}) {
const form = new FormData();
form.append("prompt", prompt);
form.append("aspect_ratio", options.aspect_ratio ?? "1x1");
form.append("style_type", options.style_type ?? "DESIGN");
form.append("rendering_speed", options.rendering_speed ?? "DEFAULT");
form.append("magic_prompt", options.magic_prompt ?? "AUTO");
if (options.negative_prompt) form.append("negative_prompt", options.negative_prompt);
if (options.style_preset) form.append("style_preset", options.style_preset);
const response = await fetch("https://api.ideogram.ai/v1/ideogram-v3/generate", {
method: "POST",
headers: { "Api-Key": process.env.IDEOGRAM_API_KEY! },
body: form,
});
if (!response.ok) throw new Error(`V3 generation failed: ${response.status}`);
return response.json();
}
// Ideogram renders quoted text literally inside the image
const textPrompts = [
// Enclose desired text in quotes within the prompt
'A coffee shop chalkboard menu with text "DAILY SPECIALS" and "Latte $4.50"',
'A retro neon sign glowing with the words "OPEN 24 HOURS"',
'Professional business card design with "Jane Smith" and "CEO" text',
'Birthday card with elegant gold script "Happy Birthday!"',
];
// Use DESIGN style for best text accuracy
for (const prompt of textPrompts) {
const result = await generateImage(prompt, {
style_type: "DESIGN",
negative_prompt: "blurry text, misspelled, distorted letters",
});
console.log(`Generated: ${result.localPath} (seed: ${result.seed})`);
}
// Use the same seed to reproduce or create consistent variations
async function generateVariations(basePrompt: string, seed: number) {
const variations = [
{ suffix: ", minimalist style", style: "DESIGN" },
{ suffix: ", photorealistic", style: "REALISTIC" },
{ suffix: ", anime style", style: "ANIME" },
];
const results = [];
for (const v of variations) {
const result = await generateImage(`${basePrompt}${v.suffix}`, {
style_type: v.style,
seed,
});
results.push(result);
await new Promise(r => setTimeout(r, 3000)); // Rate limit courtesy
}
return results;
}
80S_ILLUSTRATION, 90S_NOSTALGIA, ART_DECO, ART_POSTER, BAUHAUS, BLUEPRINT, BRIGHT_ART, CHILDRENS_BOOK, COLLAGE, CUBISM, DOUBLE_EXPOSURE, DRAMATIC_CINEMA, EDITORIAL, FLAT_ART, FLAT_VECTOR, GOLDEN_HOUR, GRAFFITI_I, HALFTONE_PRINT, JAPANDI_FUSION, LONG_EXPOSURE, MAGAZINE_EDITORIAL, MIXED_MEDIA, MONOCHROME, OIL_PAINTING, POP_ART, RETRO_ETCHING, SURREAL_COLLAGE, TRAVEL_POSTER, VINTAGE_POSTER, WATERCOLOR, and more.
| Speed | Quality | Cost | Use Case |
|---|---|---|---|
FLASH | Lowest | Cheapest | Quick previews |
TURBO | Good | Low | Drafts, iteration |
DEFAULT | High | Standard | Production assets |
QUALITY | Highest | Premium | Final deliverables |
| Error | HTTP Status | Cause | Solution |
|---|---|---|---|
| Content filtered | 422 | Prompt failed safety check | Remove brand names, trademarks, or flagged terms |
| Bad aspect ratio | 400 | Invalid enum value | Use exact enum values (e.g., ASPECT_16_9 not 16:9) |
| Rate limited | 429 | 10+ in-flight requests | Queue with 3s delays between calls |
| Expired URL | -- | Downloaded too late | Fetch image within minutes of generation |
./output/For editing and remixing, see ideogram-core-workflow-b.