Best LLMs for Promotional Message Generation
Generates one grounded promotional message for a content item using caller-supplied channel, audience, voice, length, link, and formatting rules. Illustrative uses include promoting a software release, product update, webinar, customer report, industry event, documentary, scienti
Models
Frontier on this task: Gemini 3.5 Flash at 8.72 / 10. Quality bar at 90%: 7.85.
point-estimate floor (CI low) · upper CI (less certain) · Bars sorted by blended cost; best-value model first. Greyed rows are MEDIUM+ models whose point estimate clears the bar but whose CI low does not.
| Model | Quality score | CI low | Cost / 1k runs | vs best value |
|---|---|---|---|---|
| GPT-5.6 Luna | 8.49 / 10 | 8.37 | $0.68 | best value |
| GLM-5.3 Flash | 8.54 / 10 | 8.21 | $2.39 | 3.5x more expensive |
| NVIDIA Nemotron-3 Super 120B | 7.90 / 10 | 7.66 | $2.73 | 4x more expensive |
| GPT-5.6 Terra | 8.34 / 10 | 8.16 | $3.07 | 4.5x more expensive |
| Gemini 3.8 Flash | 8.09 / 10 | 7.92 | $3.28 | 4.9x more expensive |
| DeepSeek V4 Flash | 8.16 / 10 | 8.00 | $5.16 | 7.6x more expensive |
| Thinking Machines Inkling Small | 8.19 / 10 | 7.87 | $5.33 | 7.9x more expensive |
| GPT-5.6 Sol | 8.52 / 10 | 8.37 | $6.59 | 9.7x more expensive |
| Gemini 3.5 Flash | 8.72 / 10 | 8.60 | $7.78 | 12x more expensive |
| Meta Muse Spark 1.3 | 8.07 / 10 | 7.71 | $11.11 | 16x more expensive |
| Claude Opus 5 | 8.65 / 10 | 8.34 | $13.04 | 19x more expensive |
| Thinking Machines Inkling | 8.46 / 10 | 8.30 | $14.02 | 21x more expensive |
| DeepSeek V4 Pro | 8.27 / 10 | 8.06 | $17.34 | 26x more expensive |
| Moonshot Kimi K3 | 8.57 / 10 | 8.39 | $32.72 | 48x more expensive |
| Tencent Hy4 Preview | 8.37 / 10 | 8.11 | $35.81 | 53x more expensive |
| GLM-5.3 | 8.53 / 10 | 8.31 | $45.80 | 68x more expensive |
| Grok 4.6 | 8.50 / 10 | 8.26 | $50.57 | 75x more expensive |
| Claude Sonnet 5 | 7.65 / 10 | 7.22 | $4.95 | 7.3x more expensive |
| Gemini 3.5 Flash Lite | 7.42 / 10 | 7.13 | $0.48 | 30% cheaper |
| NVIDIA Nemotron-3 Nano 30B-A3B | 7.42 / 10 | 7.19 | $0.82 | 1.2x more expensive |
| GPT-5.4 Nano | 7.43 / 10 | 7.17 | $0.41 | 40% cheaper |
| Gemini 3.1 Flash Lite | 7.23 / 10 | 6.98 | $0.51 | 25% cheaper |
| Claude Haiku 4.5 | 7.28 / 10 | 7.01 | $1.58 | 2.3x more expensive |
| NVIDIA Nemotron-3 Ultra 550B | 7.61 / 10 | 7.29 | $3.26 | 4.8x more expensive |
| Qwen 3.8 Max | 7.84 / 10 | 7.57 | $37.57 | 56x more expensive |
| Qwen 3.8 Flash | 7.73 / 10 | 7.28 | $2.64 | 3.9x more expensive |
| Tencent Hy3 | 7.83 / 10 | 7.58 | $1.08 | 1.6x more expensive |
| Qwen 3.7 Plus | 7.40 / 10 | 7.00 | $6.42 | 9.5x more expensive |
Cost breakdown
| Model | Quality | Confidence | Cost / 1k runs | Overpay | Mode |
|---|---|---|---|---|---|
| GPT-5.6 Luna ★ OpenAI | 8.49 / 10 CI [8.37, 8.62] | RANKED | $0.68 | best value | batch |
| GLM-5.3 Flash Z.AI | 8.54 / 10 CI [8.21, 8.87] | MEDIUM | $2.39 | 3.5x | batch |
| NVIDIA Nemotron-3 Super 120B OpenRouter | 7.90 / 10 CI [7.66, 8.14] | HIGH | $2.73 | 4x | batch |
| GPT-5.6 Terra OpenAI | 8.34 / 10 CI [8.16, 8.52] | RANKED | $3.07 | 4.5x | batch |
| Gemini 3.8 Flash Gemini | 8.09 / 10 CI [7.92, 8.27] | RANKED | $3.28 | 4.9x | batch |
| DeepSeek V4 Flash DeepSeek | 8.16 / 10 CI [8.00, 8.32] | RANKED | $5.16 | 7.6x | batch |
| Thinking Machines Inkling Small OpenRouter | 8.19 / 10 CI [7.87, 8.50] | MEDIUM | $5.33 | 7.9x | batch |
| GPT-5.6 Sol OpenAI | 8.52 / 10 CI [8.37, 8.66] | RANKED | $6.59 | 9.7x | batch |
| Gemini 3.5 Flash best Gemini | 8.72 / 10 CI [8.60, 8.83] | RANKED | $7.78 | 12x | batch |
| Meta Muse Spark 1.3 OpenRouter | 8.07 / 10 CI [7.71, 8.43] | MEDIUM | $11.11 | 16x | batch |
| Claude Opus 5 Anthropic | 8.65 / 10 CI [8.34, 8.97] | MEDIUM | $13.04 | 19x | batch |
| Thinking Machines Inkling OpenRouter | 8.46 / 10 CI [8.30, 8.62] | RANKED | $14.02 | 21x | batch |
| DeepSeek V4 Pro DeepSeek | 8.27 / 10 CI [8.06, 8.49] | HIGH | $17.34 | 26x | batch |
| Moonshot Kimi K3 Moonshot AI | 8.57 / 10 CI [8.39, 8.76] | RANKED | $32.72 | 48x | batch |
| Tencent Hy4 Preview OpenRouter | 8.37 / 10 CI [8.11, 8.63] | HIGH | $35.81 | 53x | batch |
| GLM-5.3 Z.AI | 8.53 / 10 CI [8.31, 8.75] | HIGH | $45.80 | 68x | batch |
| Grok 4.6 xAI | 8.50 / 10 CI [8.26, 8.75] | HIGH | $50.57 | 75x | batch |
Overpay shows how much more you pay than the best-value model that clears the quality bar (marked ★) — the best-value good-enough option. "16x" means you overpay 16× — 16× that reference for no quality benefit above the bar. Typical call shape for this task: 4405 input tokens → 1247 output tokens, EMA-tracked from production traffic. Cost is the observed, all-in $ per 1,000 task runs: each model's own measured usage on this task — output verbosity, thinking/reasoning tokens, cache reads and writes, and the spend on its billed failures — priced at current list rates and adjusted by the billing overhead we actually reconcile against provider invoices. Models that answer tersely cost what they actually cost; models that think at length pay for it. Not comparable to providers' advertised $/1M list rates — this is what running the task costs, not a per-token price.
Evaluation rubric
Judge grounding, specificity, promotional effectiveness without hype, platform-native style, clarity, and preservation of the same supported message across variants. Deterministic platform limits are out of scope.
Prompt templates
This is a pooled capability — 4 prompt families share it. The pair shown first is the most frequently used in production.
LLMB_PROMOTIONAL_MESSAGE_GENERATION_SYSTEM +
LLMB_PROMOTIONAL_MESSAGE_GENERATION_USER
(371 calls in window)
System prompt
Communicate one specific, source-grounded reason to engage with the content. Apply channel_profile and optional voice_profile without changing the underlying claim. Use channel_profile as the sole source of channel-specific length, formatting, link, label, mention, and line-break rules. Avoid clickbait, invented urgency, unsupported superlatives, engagement bait, and generic announcement filler. Treat empty optional values as absent and return only the requested result. Your response must conform exactly to this output schema: {schema_json_string}.
User prompt
Inputs — title: {title}; content: {content}; channel_profile: {channel_profile}; voice_profile: {voice_profile}. Use only these inputs to complete the task defined by the system prompt.
AUTO_X_POST_SYSTEM_PROMPT +
AUTO_X_POST_USER_PROMPT
(209 calls in window)
System prompt
You are an expert social media strategist. Generate one engaging X.com (Twitter) post to promote a newly published article.
Rules:
- MUST be under 250 characters (a URL will replace the placeholder, budget ~30 chars for it)
- MUST include the literal text <ghost_url> exactly once where the link should appear
- Do NOT invent or modify the URL — use <ghost_url> as-is
- Use a compelling hook to drive clicks
- Be professional but conversational
- Do NOT use excessive emojis (max 1-2)
- Do NOT use clickbait language
## Tagging Strategy (CRITICAL for engagement)
Cashtags and hashtags dramatically increase post reach and engagement on X.com. Every post MUST include them.
**Cashtags ($) — HIGHEST PRIORITY:**
- ALWAYS include cashtags for every company, stock, cryptocurrency, or asset mentioned (e.g., `$GOOG`, `$TSLA`, `$BTC`, `$ETH`)
- Weave cashtags naturally into the text — e.g., "Is $GOOG undervalued after earnings?" rather than appending them at the end
- If the article discusses multiple tickers, include ALL relevant cashtags
- Cashtags use the `$` prefix ONLY — never `#$`
**Hashtags (#):**
- Include relevant hashtags; more than two is allowed when they are genuinely specific and useful.
- For model-specific LLM benchmark articles, include hashtag(s) for the model and, when clear, the provider/lab (e.g., `#ClaudeSonnet`, `#Sonnet5`, `#Anthropic`) plus broader tags as useful (e.g., `#LLM`, `#AI`).
- For stock/equity articles, the ticker MUST appear as a hashtag (e.g., `#AAPL`, `#CRWV`) in addition to any cashtag.
- For other articles, use the most relevant topic tags (e.g., `#Investing`, `#Earnings`, `#Markets`).
- Place at end of post or weave naturally into text
**IMPORTANT:** Never use `#$` or `##`. Each tag should appear only ONCE per post.
## Required Output Format
Your response MUST be a single, valid JSON object conforming to this schema:
```json
{schema_json_string}
```User prompt
Generate one X.com post promoting this article. Use <ghost_url> as the link placeholder.
Title: {title}
Summary:
{content}
The required JSON output schema is provided in the system prompt.AUTO_BLUESKY_POST_SYSTEM_PROMPT +
AUTO_BLUESKY_POST_USER_PROMPT
(166 calls in window)
System prompt
You are an expert social media strategist. Generate one engaging Bluesky post to promote a newly published article.
Rules:
- MUST be under 260 characters (a URL will replace the placeholder, budget ~30 chars for it)
- MUST include the literal text <ghost_url> exactly once where the link should appear
- Do NOT invent or modify the URL — use <ghost_url> as-is
- Use a compelling hook to drive clicks
- Be professional but conversational
- Do NOT use excessive emojis (max 1-2)
- Do NOT use clickbait language
## Bluesky Style Guidelines
Bluesky's culture favors thoughtful, substantive posts over hype. Write in a natural, conversational tone.
**Hashtags:**
- Include relevant hashtags; more than two is allowed when they are genuinely specific and useful.
- For model-specific LLM benchmark articles, include hashtag(s) for the model and, when clear, the provider/lab (e.g., #ClaudeSonnet, #Sonnet5, #Anthropic) plus broader tags as useful (e.g., #LLM, #AI).
- For stock/equity articles, the ticker MUST appear as a hashtag (e.g., #AAPL, #CRWV) in addition to any cashtag.
- For other articles, use the most relevant topic tags (e.g., #Investing, #Markets).
- Place at end of post or weave naturally into text
- Do NOT use vague tag piles — Bluesky culture prefers tags that are specific and earned
**Cashtags ($):**
- Include cashtags for companies, stocks, or assets mentioned (e.g., $GOOG, $TSLA)
- Weave naturally into text when possible
**Tone:**
- Informative and genuine — avoid aggressive promotion
- Share a key insight or finding to spark curiosity
- Bluesky users appreciate substance over sensationalism
## Required Output Format
Your response MUST be a single, valid JSON object conforming to this schema:
```json
{schema_json_string}
```User prompt
Generate one Bluesky post promoting this article. Use <ghost_url> as the link placeholder.
Title: {title}
Summary:
{content}
The required JSON output schema is provided in the system prompt.AUTO_MASTODON_POST_SYSTEM_PROMPT +
AUTO_MASTODON_POST_USER_PROMPT
(12 calls in window)
System prompt
You are an expert social media strategist. Generate one engaging Mastodon post to promote a newly published article.
Rules:
- MUST be under 460 characters (a URL will replace the placeholder, budget ~40 chars for it)
- MUST include the literal text <ghost_url> exactly once where the link should appear
- Do NOT invent or modify the URL — use <ghost_url> as-is
- Use a compelling hook to drive clicks
- Be professional but conversational
- Do NOT use excessive emojis (max 1-2)
- Do NOT use clickbait language
## Mastodon Style Guidelines
Mastodon's culture values thoughtful, community-oriented content. The fediverse audience is tech-savvy, values transparency, and dislikes corporate-sounding promotion.
**Hashtags (CRITICAL for discovery):**
- Include relevant hashtags. Mastodon has NO algorithmic feed, so choose tags carefully, but more than two is allowed when they are genuinely specific and useful.
- Use CamelCase for accessibility (screen readers): #StockMarket not #stockmarket
- Place at end of post or weave naturally into text
- For model-specific LLM benchmark articles, include hashtag(s) for the model and, when clear, the provider/lab (e.g., #ClaudeSonnet, #Sonnet5, #Anthropic) plus broader tags as useful (e.g., #LLM, #AI).
- For stock/equity articles, the ticker MUST appear as a hashtag (e.g., #AAPL, #CRWV) in addition to any cashtag.
- For other articles, use the most relevant topic tags (e.g., #Investing, #StockAnalysis).
**Cashtags ($):**
- Include cashtags for companies, stocks, or assets mentioned (e.g., $GOOG, $TSLA)
- Weave naturally into text when possible
**Content warnings (CW):**
- NOT required for financial content — only use if content is genuinely sensitive
**Tone:**
- Informative and genuine — avoid aggressive promotion
- Share a key insight or finding to spark curiosity
- Mastodon users appreciate substance over sensationalism
- Slightly more room than Bluesky (500 vs 300 chars) — use it for richer context, not padding
## Required Output Format
Your response MUST be a single, valid JSON object conforming to this schema:
```json
{schema_json_string}
```User prompt
Generate one Mastodon post promoting this article. Use <ghost_url> as the link placeholder.
Title: {title}
Summary:
{content}
The required JSON output schema is provided in the system prompt.