| name | generate-brand-assets |
| description | Generate brand assets - logos, profile images, cover/banner images, Instagram highlights, YouTube watermarks. Use when user needs social media setup, brand presence, profile pics, banners, or platform assets. |
| allowed-tools | Bash Read Write Edit Glob Grep |
Generate Brand Assets
Generate consistent brand assets across all social platforms with correct specs.
All workflow functions are exposed as CLI commands:
node workflows/cli.cjs <command> '<json-args>'
Run node workflows/cli.cjs list to see every command. Loads .env, prints the JSON result to stdout, exits non-zero on failure. For long prompts use @args.json or pipe JSON via -.
For full documentation: Read workflows/BRAND-ASSETS-GUIDE.md
Platform Specs Quick Reference
Profile Images (Circular Crop)
| Platform | Upload Size | Safe Zone |
|---|
| Facebook | 320ร320px | Center 70% |
| Instagram | 320ร320px | Center 70% |
| TikTok | 200ร200px | Center 70% |
| YouTube | 800ร800px | Center 70% |
| LinkedIn | 400ร400px | Center 70% |
| Twitter | 400ร400px | Center 70% |
| Pinterest | 165ร165px | Center 70% |
Cover Images / Banners
| Platform | Size | Safe Zone |
|---|
| Facebook Page | 820ร312px | 640ร312 |
| YouTube Banner | 2560ร1440px | 1546ร423 (critical!) |
| LinkedIn | 1584ร396px | 1200ร300 |
| Twitter Header | 1500ร500px | 1200ร400 |
Instagram & TikTok have no cover images.
Workflow Selection
| User Wants | Function |
|---|
| Profile pics for multiple platforms | generateProfileImage() |
| Single cover/banner | generateCoverImage() |
| Instagram highlight icons | generateHighlightCovers() |
| Complete brand setup | generateBrandAssets() |
Examples
1. Profile Images from Logo
node workflows/cli.cjs generateProfileImage '{"type":"logo","logoPath":"projects/my-brand/assets/logos/logo-icon.png","backgroundColor":"#FFFFFF","platforms":["facebook","instagram","youtube","linkedin","tiktok"],"outputDir":"projects/my-brand/assets/social/profiles"}'
2. Founder Profile (Personal Brand)
node workflows/cli.cjs generateProfileImage '{"type":"person","referenceImagePath":"projects/my-brand/assets/characters/founder.png","style":"professional headshot, friendly smile, clean background","platforms":["linkedin","twitter"],"outputDir":"projects/my-brand/assets/social/profiles"}'
3. YouTube Banner
node workflows/cli.cjs generateCoverImage '{"platform":"youtube","style":"modern tech startup, professional","headline":"Build Your Startup in 4 Weeks","socialHandles":"@soemind","schedule":"New videos every Tuesday","brandColors":["#4F46E5","#10B981"],"outputPath":"projects/my-brand/assets/social/covers/youtube-banner.png"}'
4. Facebook Cover
node workflows/cli.cjs generateCoverImage '{"platform":"facebook","style":"professional service, trustworthy","brandColors":["#4F46E5","#10B981"],"outputPath":"projects/my-brand/assets/social/covers/facebook-cover.png"}'
5. Instagram Highlights
node workflows/cli.cjs generateHighlightCovers '{"count":5,"style":"minimal icons","categories":["About","Products","Reviews","Tips","Contact"],"backgroundColor":"#4F46E5","iconColor":"#FFFFFF","outputDir":"projects/my-brand/assets/social/highlights"}'
6. Complete Brand Asset Set
node workflows/cli.cjs generateBrandAssets '{"projectName":"my-brand","brandName":"SoeMind","tagline":"Build smarter, not harder","style":"modern minimalist","primaryColor":"#4F46E5","secondaryColor":"#10B981","logoPath":"assets/logos/logo-icon.png","platforms":["facebook","instagram","youtube","linkedin","tiktok"],"includeProfiles":true,"includeCovers":true,"includeHighlights":true,"highlightCategories":["About","Products","Reviews","Tips","Contact"],"includeWatermark":true}'
Required Questions
Before generating, ask:
-
What platforms? (Facebook, Instagram, TikTok, YouTube, LinkedIn, Twitter)
-
What type of profile?
- Logo icon โ use existing logo
- Founder/person โ need reference image or generate
- Monogram โ auto-generate from brand name
-
Do you have a logo?
- Yes โ use as profile base
- No โ generate monogram or icon
-
Brand colors? (primary + secondary)
-
For covers: Any text to include?
- Tagline?
- Social handles?
- Schedule (YouTube)?
Asset Registry Integration
Register generated assets for reuse:
node workflows/cli.cjs registerAsset '["my-brand","social",{"id":"social-profiles","label":"Social Media Profiles","source":"generated","status":"ready","files":{"facebook":"assets/social/profiles/facebook-profile.png","instagram":"assets/social/profiles/instagram-profile.png","youtube":"assets/social/profiles/youtube-profile.png"}},{"date":"2024-01-15"}]'
node workflows/cli.cjs registerAsset '["my-brand","social",{"id":"social-covers","label":"Social Media Covers","source":"generated","status":"ready","files":{"facebook_cover":"assets/social/covers/facebook-cover.png","youtube_banner":"assets/social/covers/youtube-banner.png"}},{"date":"2024-01-15"}]'
Cost Reference
| Asset | Cost |
|---|
| Profile image (1K) | $0.067 |
| Cover image (2K) | $0.10 |
| Highlight cover | $0.067 |
| YouTube watermark | $0.067 |
| Full brand set (6 platforms) | ~$1.00-1.50 |
Pipeline-First + Audit Trail (Mandatory)
- Author
<content-id>.pipeline.json IN the output folder BEFORE generating
(nodes = CLI commands, {{node.data.field}} refs), then
node workflows/cli.cjs runPipeline @<file> โ see workflows/pipelines/README.md.
- The output folder gets a
prompts.txt with each asset's prompt (style, colors,
text); update it on every retry with a one-line RESULT note.
- Log each generation via the
createGenerationManifest / addManifestEntry
CLI commands (AGENT-GUIDE Step 5).
Output Structure
projects/{name}/assets/social/
โโโ profiles/
โ โโโ profile-master.png # Master 800ร800
โ โโโ facebook-profile.png
โ โโโ instagram-profile.png
โ โโโ youtube-profile.png
โ โโโ linkedin-profile.png
โ โโโ tiktok-profile.png
โ โโโ twitter-profile.png
โโโ covers/
โ โโโ facebook-cover.png # 820ร312
โ โโโ youtube-cover.png # 2560ร1440
โ โโโ linkedin-cover.png # 1584ร396
โ โโโ twitter-header.png # 1500ร500
โโโ highlights/
โ โโโ highlight-about.png
โ โโโ highlight-products.png
โ โโโ ...
โโโ watermarks/
โโโ youtube-watermark.png # 150ร150
Safe Zone Guidelines
YouTube Banner (CRITICAL)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TV (2560ร1440) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Desktop (2560ร423) โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Mobile Safe (1546ร423) โ โ โ
โ โ โ โ โ โ
โ โ โ [LOGO] CHANNEL NAME [@handles] โ โ โ
โ โ โ Tagline โ โ โ
โ โ โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Keep ALL text in center 1546ร423 safe zone!
Facebook Cover
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Desktop (820ร312) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Mobile Safe (640ร312) โ โ
โ โ โ โ
โ โ [HEADLINE] [CTA] โ โ
โ โ Subheadline โ โ
โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โโโโโโโ โ
โ โPROF โ Profile overlaps bottom-left โ
โ โโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Avoid bottom-left corner (profile overlap). Keep CTA on right.