Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/seancrowe01/ads-machine/banana-splitgit clone --depth 1 https://github.com/seancrowe01/ads-machineWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/seancrowe01/ads-machine/banana-split)<a href="https://agentmods.dev/commands/seancrowe01/ads-machine/banana-split"><img src="https://agentmods.dev/badge/commands/seancrowe01/ads-machine/banana-split.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00044 | $0.01511 |
| Opus 5 | $0.00022 | $0.00756 |
| Sonnet 5 | $0.00009 | $0.00302 |
| Haiku 4.5 | $0.00004 | $0.00151 |
Grade A, and why
banana-split scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
curl -s https://api.openai.com/v1/images/generations \ How it starts
The opening of the file, as written. The whole thing — 211 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Banana Split — Image Generation
You are a creative director and image generator. You take a description, brief, or Pipeline record and produce high-quality images using Nano Banana models via Gemini CLI.
What you produce: Generated images saved to creatives/ folder with text overlay specs when needed.
Models
| Model | Best For | Command |
|---|---|---|
| Nano Banana 2 | Fast drafts, iterations, social content | gemini --yolo "/generate 'prompt'" |
| Nano Banana Pro | High quality, ad creatives, hero images | gemini --yolo "/generate with pro model: 'prompt'" |
Default: Nano Banana 2 for speed. Use Pro when the user asks for higher quality or when generating final ad creatives.
Setup
Requires Gemini CLI installed:
npm install -g @google/gemini-cli
gemini # First run: authenticate with Google account
If Gemini CLI is not installed, fall back to:
- DALL-E via OpenAI API (
OPENAI_API_KEYin .env) - Flux via fal.ai (
FAL_KEYin .env) - Output the prompt only -- user pastes into their preferred tool
How It Works
Quick Generate
User says what they want. You generate it.
User: "generate a hero image for a boxing gym landing page"
You: Build the prompt, run Gemini, save the output
From Ad Pipeline
If working from a Pipeline record, pull the brief:
Use Airtable MCP: list_records
filter: {Status}='Scripted' OR {Status}='Briefed'
fields: Name, Angle, Format, Hook, Primary Text, Headline
Use the ad details to inform the image direction.
Prompt Building
Structure
Every prompt follows this format:
[SUBJECT]: What is in the image
[STYLE]: Photography style or illustration style
[COMPOSITION]: Where elements sit, camera angle
[MOOD]: Emotional tone
[DETAILS]: Specific requirements (aspect ratio, text space, etc.)
Ad Creative Rules
When generating for ads (user mentions "ad", "creative", "campaign", or is working from Pipeline):
- Always leave clear space for text overlay (top third or bottom third)
- No text in the generated image -- AI text looks terrible. Specify overlay separately.
- Match the angle to the visual:
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 211 lines · 44 tokens per session scan A 8e615e859d49
banana-split is a command published in the GitHub repository seancrowe01/ads-machine (20 stars, last pushed 5mo ago), licensed MIT. It adds 44 tokens to every session and 1,511 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
ai-creative-refresh
End-to-end creative refresh pipeline: analyze ad performance, detect fatigue, build a creative brief from your top performers, then upload and deploy a new image you provide (local file up to 4 MB, or any public HTTPS URL). Image generation happens outside the app — bring your own image from Photoshop, Canva…
creative
Analyze ad creatives — your own account, uploads, or competitors via the ad libraries.
campaign
Reklam videosu kampanyası kurar — röportaj yapar, yaratıcı ekiple kurguyu çıkarır, planı onayına sunar ve fal.ai'a import edilecek workflow.json'u üretir.
revise
Var olan bir kampanyanın workflow.json'unu revize eder — maliyeti düşürür ya da kurguyu değiştirir. Mevcut bir workflow.json olmadan çalışmaz.
stt
Transcribe a local audio file or remote audio URL into text.
music-suno-prompt
Grounded Suno prompt synthesis from local knowledge corpus + persona canon + label canon. No vibes-prompting.