From morning-ai
Generates PNG infographics for MorningAI daily AI news reports: always a 9:16 cover of top updates, conditional per-type portraits (model, product, benchmark, funding, KOL), and vertical combined image for Markdown embed.
npx claudepluginhub octo-patch/morningai --plugin morning-aiThis skill uses the workspace's default tool permissions.
Generate multiple infographics for the daily report:
Generates professional infographics from content using Gemini AI via Nano Banana MCP. Guided phases: analyze content, suggest visualizable concepts, propose approaches, generate on-brand images. Invoke via /infographic-v2 or triggers.
Generates publication-ready infographics with 21 layouts and 22 styles. Analyzes content, recommends combinations, useful for infographic or visual summary requests.
Generates concise Markdown text digest and 9:16 PNG image from scored AI news data for sharing on messaging platforms like WeChat, Telegram, Slack.
Share bugs, ideas, or general feedback.
Generate multiple infographics for the daily report:
| Image | Filename | When to generate | Aspect |
|---|---|---|---|
| Cover | news_infographic_YYYY-MM-DD.png | Always (if image gen is enabled) | 9:16 |
| Model | news_infographic_YYYY-MM-DD_model.png | Type has 7+ score items | 9:16 |
| Product | news_infographic_YYYY-MM-DD_product.png | Type has 7+ score items | 9:16 |
| Benchmark | news_infographic_YYYY-MM-DD_benchmark.png | Type has 7+ score items | 9:16 |
| Funding | news_infographic_YYYY-MM-DD_funding.png | Type has 7+ score items | 9:16 |
| KOL | news_infographic_YYYY-MM-DD_kol.png | ≥1 item with is_kol_voice: true (NO 7+ score gate — KOL voices are scored 4-7 by design) | 9:16 |
| Combined | news_infographic_YYYY-MM-DD_combined.png | Always (for report embed) | long |
When posting to social platforms, use the individual images (not the combined long image):
| Platform | Max Images | Strategy |
|---|---|---|
| X (Twitter) | 4 per tweet | Cover + top 3 section images (by item count) |
| Xiaohongshu | 9 per post (carousel) | Cover + all section images |
IMAGE_GEN_TYPESconfig: Controls which per-type images to generate. Default:auto(only types with 7+ items). Options:all(all types with any items),none(cover only), or comma-separated types likemodel,product.
Each news title must include three elements:
| Element | Description | Example |
|---|---|---|
| Entity name | Company/product/organization name | NVIDIA, Cursor, Midjourney |
| Event subject | Specific model/product/event name | Alpamayo, Agent mode, V7 |
| Core event | Verb phrase describing the event | releases, open-sources, tops leaderboard, closes funding |
✅ Correct Examples:
❌ Incorrect Examples:
Determine number of points based on score, but do NOT use [MAJOR]/[MINOR] tags in Prompt or image:
| Score | Number of Points | Card Size |
|---|---|---|
| >= 7 | 3-5 detailed points | Large card (priority display) |
| < 7 | 2-3 concise points | Small card |
⚠️ Score classification is only for guiding content detail level. Do NOT use
[MAJOR]/[MINOR]or similar labels in Prompt!
Select a visual style via IMAGE_STYLE config (default: classic). Insert the matching style block into {STYLE_BLOCK} in all prompt templates below.
classic — Clean Editorial MagazineStyle: Clean editorial magazine layout. Off-white (#F5F5F0) background with subtle warm gray grid lines. Bold sans-serif header "MorningAI" in black with a vivid accent color underline. Each card is a white rectangle with soft drop shadow (4px blur, 10% black), separated by generous whitespace. Use a refined accent palette: deep navy (#1A2744) for card titles, muted teal (#2A9D8F) for bullet icons, slate gray (#4A5568) for body text. NO gradients, NO textures, NO background patterns — pure flat white space.
Layout: Cards arranged in a balanced grid with equal gutters (24px). Maximize space for card content (titles and bullet points). Do NOT display score numbers or score badges — let card size and content density convey importance.
Card design: Card title in 18pt bold navy sans-serif, subtitle in 12pt gray italic. Bullet points with small teal dot markers, 14pt regular weight. Thin 1px light gray top-border on each card for subtle separation. NO icons, NO illustrations, NO decorative elements inside cards — text only with strong typographic hierarchy. Prioritize readable text and generous line spacing.
dark — Dark ModeStyle: Dark mode editorial layout. Deep charcoal (#1A1A2E) background. Bold sans-serif header "MorningAI" in white (#FAFAFA) with electric blue (#00D4FF) accent underline. Each card is a dark slate (#16213E) rectangle with subtle 1px border in muted blue (#0F3460), separated by generous spacing. Accent palette: white (#FAFAFA) for card titles, soft violet (#7B68EE) for bullet icons, light gray (#B0BEC5) for body text. NO gradients, NO glow effects — clean flat dark surfaces.
Layout: Cards arranged in a balanced grid with equal gutters (24px). Maximize space for card content (titles and bullet points). Do NOT display score numbers or score badges — let card size and content density convey importance.
Card design: Card title in 18pt bold white sans-serif, subtitle in 12pt light gray italic. Bullet points with small violet dot markers, 14pt regular weight. Thin 1px muted blue top-border on each card. NO icons, NO illustrations — text only with strong typographic hierarchy on dark background. Prioritize readable text and generous line spacing.
glassmorphism — Frosted GlassStyle: Glassmorphism editorial layout. Soft gradient background blending from lavender (#E8EAF6) top-left to pale rose (#FCE4EC) bottom-right. Bold sans-serif header "MorningAI" in dark charcoal (#212121) with warm coral (#FF6B6B) accent underline. Each card is a semi-transparent frosted white panel (rgba(255,255,255,0.65)) with backdrop blur effect, rounded corners (16px), and subtle white border (1px, 30% opacity). Accent palette: charcoal (#212121) for card titles, soft indigo (#5C6BC0) for bullet icons, medium gray (#546E7A) for body text. Soft diffused shadows (8px blur, 5% black) behind each card.
Layout: Cards arranged in a balanced grid with generous gutters (28px). Maximize space for card content (titles and bullet points). Do NOT display score numbers or score badges — let card size and content density convey importance.
Card design: Card title in 18pt bold charcoal sans-serif, subtitle in 12pt gray italic. Bullet points with small indigo dot markers, 14pt regular weight. NO hard borders — rely on frosted glass contrast for separation. Clean, airy, modern feel. Prioritize readable text and generous line spacing.
newspaper — Classic NewsprintStyle: Classic newspaper editorial layout. Warm cream (#FFF8E7) background with very faint paper texture grain. Bold serif header "MorningAI" in deep black (#1A1A1A) with crimson red (#B71C1C) thin rule line below. Each card is separated by thin black hairline rules (1px) — NO card backgrounds, NO shadows, NO boxes. Content flows in a column-based newspaper grid. Accent palette: deep black (#1A1A1A) for card titles in bold serif, dark gray (#333333) for bullet text in serif, medium gray (#666666) for subtitles in italic serif.
Layout: Multi-column newspaper grid (2-3 columns). Large stories span full width at top, smaller stories in side-by-side columns below. Separated by horizontal and vertical hairline rules. NO cards, NO boxes — pure typographic layout. Do NOT display score numbers or score indicators — let column placement and headline size convey importance.
Card design: Card title in 18pt bold black serif, subtitle in 12pt gray italic serif. Bullet points with small em-dash markers, 14pt regular serif weight. Feels like the front page of a prestigious broadsheet. Prioritize readable text and generous line spacing.
tech — Terminal / HackerStyle: Tech terminal aesthetic layout. Near-black background (#0D1117) with very faint dot grid pattern (8px spacing, 5% white). Bold monospace header "MorningAI" in bright cyan (#00FFCC) with a blinking cursor underscore effect. Each card is a dark panel (#161B22) with 1px border in dim cyan (#1A3A3A), rounded corners (4px). Accent palette: bright green (#39FF14) for card titles in monospace bold, amber (#FFB000) for bullet markers as `>` symbols, light gray (#C9D1D9) for body text in monospace. Each card has a subtle top-left label like `// MODEL` or `// PRODUCT` in dim green (#1A4A1A).
Layout: Cards arranged in a balanced grid with equal gutters (16px). Compact spacing, information-dense. Maximize space for card content (titles and bullet points). Do NOT display score numbers or score badges — let card size and content density convey importance.
Card design: Card title in 16pt bold green monospace, subtitle in 11pt gray monospace. Bullet points with amber `>` markers, 13pt regular monospace. Thin 1px dim cyan border. Feels like a developer dashboard or terminal readout. Prioritize readable text and generous line spacing.
9:16 portrait infographic, MorningAI {YYYY-MM-DD}, {LANG} text content.
Total news items for today: {N}
News cards (display EXACTLY {N} cards):
Card 1: {Entity name} {Event subject} {Core event verb phrase}
- {Point 1}
- {Point 2}
- {Point 3}
- {Point 4}
- {Point 5}
Card 2: {Entity name} {Event subject} {Core event verb phrase}
- {Point 1}
- {Point 2}
- {Point 3}
(... list according to actual item count ...)
CRITICAL RULES:
- Each card title MUST include: Entity name + Event subject + Event description
- Display complete titles, do NOT truncate
- Do NOT display any labels like [MAJOR], [MINOR], or importance markers
- Do NOT display score numbers, score badges, or any numerical ratings on the image
- Do NOT invent items not listed
- Display ALL bullet points for each card
- Cards arranged in a grid layout (landscape orientation)
- Maximize content area — card titles and bullet points are the primary focus
- If fewer than 4 items, use more whitespace and decorative elements
- Cover header MUST include the date: "MorningAI {YYYY-MM-DD}"
{STYLE_BLOCK}
{STYLE_BLOCK} — insert the matching style block from the Style Presets section above, based on IMAGE_STYLE config (default: classic).
From the report, identify:
is_kol_voice: true, generate a KOL section image (_kol.png). NO 7+ score gate — KOL voices are scored conservatively (4-7) by design, so applying the standard gate would suppress the section image even when the report's ## KOL Voices block is populated.Cover prompt: Use the Cover Prompt Template above.
Per-type prompt: Use the Per-Type Prompt Template below.
9:16 portrait infographic, MorningAI — {Type} Updates, {LANG} text content.
Total news items: {N}
News cards (display EXACTLY {N} cards):
Card 1: {Entity name} {Event subject} {Core event verb phrase}
- {Point 1}
- {Point 2}
- {Point 3}
Card 2: {Entity name} {Event subject} {Core event verb phrase}
- {Point 1}
- {Point 2}
(... list according to actual item count ...)
CRITICAL RULES:
- Each card title MUST include: Entity name + Event subject + Event description
- Display complete titles, do NOT truncate
- Do NOT display any labels like [MAJOR], [MINOR], or importance markers
- Do NOT display score numbers, score badges, or any numerical ratings on the image
- Do NOT invent items not listed
- Display ALL bullet points for each card
- Cards arranged vertically (portrait layout), one below another
- Maximize content area — card titles and bullet points are the primary focus
- If fewer than 3 items, use more whitespace and decorative elements
- Do NOT display dates in the header or title — per-type images use "MorningAI — {Type} Updates" only, without any date
{STYLE_BLOCK}
Adjust the style header text to "MorningAI — {Type} Updates" when using the preset.
Removed. All reports now use Cover (9:16) + Per-Type Sections (9:16) + stitch for the combined report image. Social platforms use the individual images directly.
Image generation produces individual images + a combined long image:
Important: The cover image must always exist as a separate file (
news_infographic_YYYY-MM-DD.png). Do NOT skip cover generation even when producing a combined image.
Social posting uses the individual images directly (cover + sections), NOT the combined long image. See Output Specs > Social Posting for platform limits.
If only 1-2 qualifying items exist, the cover still generates with extra whitespace. Per-type sections are skipped for types with no 7+ items.
Manifest example:
[
{"prompt": "<cover prompt>", "output": "news_infographic_YYYY-MM-DD.png"},
{"prompt": "<model section>", "output": "news_infographic_YYYY-MM-DD_model.png"},
{"prompt": "<product section>", "output": "news_infographic_YYYY-MM-DD_product.png"}
]
Follow the Image Strategy section above — generate cover + per-type sections + stitch combined.
Option A — Native tool (if supported): Generate each image using your tool's built-in capability, then stitch.
Option B — Python script (default, recommended):
Build a manifest JSON and run with --stitch:
cd {SKILL_DIR} && python3 skills/gen-infographic/scripts/gen_infographic.py --batch {CWD}/manifest.json --stitch
All images are 9:16 portrait. Requires
pip install Pillow. Produces individual images +news_infographic_YYYY-MM-DD_combined.png.
For each generated image:
[MAJOR], [MINOR] or similar labels displayedWhen valid news items < 4, do NOT pad with fake content:
| Item Count | Layout Strategy |
|---|---|
| 1 item | Centered large card + "Today's Highlight" label + whitespace and decorative elements |
| 2 items | Left-right symmetric or top-bottom stacked |
| 3 items | Three-column even or pyramid layout |
| 4-5 items | Standard grid layout |
Core principle: prefer whitespace over fabrication.
--lang parameter)MorningAI YYYY-MM-DD). Per-type section images must NOT include any date — use MorningAI — {Type} Updates only.{LANG} — substitute with the full language name: "English" (default), "Chinese", "Japanese", etc., based on the --lang parameter[MAJOR]/[MINOR] labels in Prompt