Generate professional Afghan music album cover art using AI (Nano Banana Pro via fal.ai). Specializes in culturally authentic Afghan aesthetics with 11 style presets and 8 regional variations. ⚠️ COST CONTROL: All commands default to cost estimate mode. User must explicitly confirm before any charges occur. Daily limit: $5.00 TRIGGER PHRASES: - "Afghan cover art", "Afghan album cover", "Afghan music cover" - "cover for [Dari/Pashto song title]" - Artist names: Ahmad Zahir, Aryana Sayeed, Farhad Darya, etc. - Styles: traditional, ghazal, sufi, folk, modern, fusion, hiphop - Regional: Kabuli, Herati, Kandahari, Mazari, Panjshiri - Occasions: Nowruz, Eid, wedding REQUIRES: Reference images (artist photos, style examples) COST: $0.15/image (1K/2K), $0.30/image (4K)
Generate professional, culturally authentic Afghan music album covers using reference images and AI.
ALL generation commands default to DRY-RUN mode (cost estimate only).
--confirm flag# Step 1: Get cost estimate (DEFAULT - FREE, no API call)
python3 -m afcover.bot generate \
--prompt "Traditional cover for 'Laili'" \
--images photo.jpg
# Step 2: ONLY after user confirms, add --confirm (COSTS MONEY)
python3 -m afcover.bot generate \
--prompt "Traditional cover for 'Laili'" \
--images photo.jpg \
--confirm
# Check daily usage
python3 -m afcover.bot usage
python3 -m afcover.bot generate --prompt "..." --images img.jpg
→ Returns cost estimate, style preview, daily usagepython3 -m afcover.bot generate --prompt "..." --images img.jpg --confirm
Analyze a natural language request to see extracted parameters:
python3 -m afcover.bot parse "Make a romantic cover for 'Dilbar' by Aryana Sayeed with mountain backdrop"
# STEP 1: Get cost estimate (DEFAULT - FREE)
python3 -m afcover.bot generate \
--prompt "PROMPT_TEXT" \
--images IMAGE1 [IMAGE2 ...]
# STEP 2: Actually generate (COSTS MONEY - requires --confirm)
python3 -m afcover.bot generate \
--prompt "PROMPT_TEXT" \
--images IMAGE1 [IMAGE2 ...] \
--output OUTPUT_DIR \
--confirm \
[--json]
python3 -m afcover.bot usage
python3 -m afcover.bot usage --json
Show available style presets:
python -m afcover.bot styles
python -m afcover.bot styles --type regional
python -m afcover.bot styles --type occasions
Work with reference image collections:
# List collections
python -m afcover.bot library list
# Add reference to artist collection
python -m afcover.bot library add --type artist --name "Ahmad Zahir" --image photo.jpg
# Add reference to style collection
python -m afcover.bot library add --type style --name "traditional" --image example.jpg
| Style | Description | Best For |
|---|---|---|
traditional | Classic Afghan, ornate borders, gold details, Nastaliq calligraphy | Classical, folk, established artists |
modern | Contemporary pop, clean design, bold typography | Pop releases, mainstream |
fusion | East-West blend, bilingual, sophisticated | Diaspora audience, international |
romantic | Soft, emotional, roses, gold tones | Love songs, ballads |
folk | Rustic, earthy, mountain landscapes | Folk music, regional |
ghazal | Poetic, literary, ink wash aesthetic | Ghazal, classical vocals |
sufi | Mystical, spiritual, sacred geometry | Devotional, spiritual |
wedding | Festive, colorful, Attan dance | Wedding songs, celebrations |
patriotic | Afghan flag colors, national symbols | Homeland songs |
hiphop | Urban, graffiti-inspired, bold | Afghan rap, hip-hop |
acoustic | Warm, intimate, wooden textures | Unplugged, intimate |
Add regional character to any style:
| Region | Character |
|---|---|
kabuli | Urban, cosmopolitan, modern Kabul |
herati | Artistic, Persian influence, Timurid heritage |
kandahari | Bold Pashtun aesthetic, strong |
mazari | Colorful, Turkic, Nowruz vibes |
panjshiri | Mountain majesty, emerald valleys |
badakhshi | High mountain, lapis lazuli colors |
hazaragi | Bamiyan heritage, turquoise |
nuristani | Forest mountain, carved wood |
| Occasion | Theme |
|---|---|
nowruz | Spring renewal, Haft Mewa, tulips |
eid | Festive, crescent moon, celebration |
independence | National pride, Afghan flag |
winter | Snow-capped peaks, warm interiors |
User: Make me a cover for "Laili Laili" by Ahmad Zahir
[User uploads: artist_photo.jpg]
Agent: I'll prepare a traditional Afghan cover for "Laili Laili" by Ahmad Zahir.
Let me get a cost estimate first...
[STEP 1 - Runs without --confirm (FREE):
python3 -m afcover.bot generate \
--prompt "Traditional Afghan cover for 'Laili Laili' by Ahmad Zahir" \
--images /path/to/artist_photo.jpg]
Agent: 📊 **Cost Estimate** (no charge yet)
🎵 Title: "Laili Laili"
👤 Artist: Ahmad Zahir
🎨 Style: traditional
📐 Resolution: 1K
🖼️ Images: 1
💰 **Estimated cost: $0.15**
📈 Today: $0.00 spent, $5.00 remaining
Would you like me to generate this cover?
User: Yes, go ahead!
[STEP 2 - Runs with --confirm (COSTS MONEY):
python3 -m afcover.bot generate \
--prompt "Traditional Afghan cover for 'Laili Laili' by Ahmad Zahir" \
--images /path/to/artist_photo.jpg \
--output /workspace/output \
--confirm]
Agent: ✅ Generated Afghan Cover Art
🎵 "Laili Laili" by Ahmad Zahir
🎨 Style: Traditional Afghan (کلاسیک افغانی)
📀 /workspace/output/afcover-ahmad-zahir-laili-laili-traditional-20260202-143022.png
💰 Cost: $0.15
[Returns image to user]
User: Generate 3 variations of a romantic cover for "Dilbar" by Aryana Sayeed
[User uploads: artist_photo.jpg]
[STEP 1 - Cost estimate:
python3 -m afcover.bot generate \
--prompt "3 variations romantic cover for 'Dilbar' by Aryana Sayeed" \
--images artist_photo.jpg]
Agent: 📊 **Cost Estimate** (no charge yet)
🎵 Title: "Dilbar"
👤 Artist: Aryana Sayeed
🎨 Style: romantic
🖼️ Images: 3 variations
💰 **Estimated cost: $0.45** (3 × $0.15)
📈 Today: $0.15 spent, $4.85 remaining
Generate 3 variations for $0.45?
User: That's fine, proceed.
[STEP 2 - With --confirm]
User: How much have I spent today on covers?
[Runs: python3 -m afcover.bot usage]
Agent: 📊 **Daily Usage**
Date: 2026-02-02
Generations: 2
Images created: 4
Spent today: $0.60
Remaining: $4.40
Daily limit: $5.00
User: Make another cover for "Watan"
[User uploads: photo.jpg]
[STEP 1 - Cost estimate]
Agent: 📊 **Cost Estimate**: $0.15
⚠️ **Warning**: You've spent $4.95 today.
This would exceed your daily limit of $5.00.
Please wait until tomorrow or contact support to increase limits.
When user uploads images via messaging:
/tmp/upload_123.jpg)--images parameter--output directoryThe generated image path is returned in the result. Send this file back to the user via the messaging channel.
Requires FAL_KEY environment variable with fal.ai API key.
Location: /home/ec2-user/.openclaw/workspace/nanobot/.env
⚠️ NEVER call generate with --confirm without user approval
| Rule | Implementation |
|---|---|
| Default to dry-run | All generate commands without --confirm are FREE |
| Require confirmation | Only add --confirm after user explicitly approves |
| Daily limit | $5.00/day enforced automatically |
| Check usage | Use python3 -m afcover.bot usage to see spending |
| Resolution | Default 1K ($0.15), 4K costs 2x ($0.30) |
| Variations | Each variation costs per-image rate |
generate without --confirm → shows estimate--confirmusage if approaching limit| Issue | Solution |
|---|---|
| "Reference images required" | User must upload at least one image |
| "FAL_KEY not found" | Check .env file exists with valid API key |
| "Unknown style" | Use python -m afcover.bot styles to see valid options |
| Generation fails | Check API key balance at fal.ai dashboard |
nanobot/
├── SKILL.md # This file
├── afcover/
│ ├── bot.py # OpenClaw interface
│ ├── generator.py # Core generation logic
│ ├── styles.py # Style definitions
│ ├── library.py # Reference image library
│ └── references/ # Stored reference collections
│ ├── artists/ # Artist-specific references
│ └── styles/ # Style example references
└── shared/
└── api.py # fal.ai API utilities