muapi-social-pack — Claude Code skill: what it does, how to install
Reframes a hero image into aspect ratios for Instagram, TikTok, YouTube Shorts, and X. Useful for adapting visual assets across platforms without manual cropping.
npx skills add SamurAIGPT/Generative-Media-Skills --skill muapi-social-pack -a claude-code
npx skills add SamurAIGPT/Generative-Media-Skills --skill social-pack -a claude-codeWhat muapi-social-pack does
The skill takes an image URL or a session asset ID and adapts the composition for social platforms. By default, it generates aspect ratios of 1:1 for Instagram feeds, 9:16 for TikTok and Shorts, 4:5 for portrait posts, and 16:9 for Twitter/X. The user can also request 21:9 for wide banners. The agent skips any ratio that already matches the source asset.
Processing runs in parallel using muapi image edit powered by the nano-banana-2-edit model. It reframes the composition while keeping the primary subject centered. It preserves the original palette and lighting. If caption_idea is present, the prompt instructs the model to leave headroom at the top for overlay text.
The workflow fails if MUAPI_API_KEY is not exported or set via muapi auth configure. When falling back to direct requests, it calls https://api.muapi.ai/api/v1/<endpoint> and polls via muapi predict wait.
What it helps with
- reframe a hero graphic to 9:16 for vertical video feeds
- adapt image assets to 1:1 and 4:5 ratios for Instagram
- leave top headroom for an overlaid caption
- preserve the original lighting and color palette during edits
Example prompts for the agent
- Create a social pack from this image for TikTok and X.
- Resize the image for 1:1 and 9:16 formats with the caption "Summer drop".
- Reframe asset_42 for cross-posting to Instagram and YouTube.
How to install muapi-social-pack
1Skills CLI (Vercel)
npx skills add SamurAIGPT/Generative-Media-Skills --skill muapi-social-pack -a claude-codenpx skills add SamurAIGPT/Generative-Media-Skills --skill social-pack -a claude-code2Manually: put the files in place
~/.claude/skills/social-pack/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/social-pack/
1Skills CLI (Vercel)
npx skills add SamurAIGPT/Generative-Media-Skills --skill social-pack -a codex2Manually: put the files in place
.agents/skills/social-pack/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add SamurAIGPT/Generative-Media-Skills --skill social-pack -a cursor2Manually: put the files in place
.cursor/skills/social-pack/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install SamurAIGPT/Generative-Media-Skills social-pack2Manually: put the files in place
.github/skills/social-pack/SKILL.md1Skills CLI (Vercel)
npx skills add SamurAIGPT/Generative-Media-Skills --skill social-pack -a gemini-cli2Platform CLI
gemini skills install https://github.com/SamurAIGPT/Generative-Media-Skills --path library/social/social-packManually: put the files in place
.devin/skills/social-pack/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add SamurAIGPT/Generative-Media-Skills --skill social-pack -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about muapi-social-pack
How to install muapi-social-pack in Claude Code?
Run npx skills add SamurAIGPT/Generative-Media-Skills --skill muapi-social-pack -a claude-code in your terminal.
What does muapi-social-pack do?
It sends a source image to the nano-banana-2-edit model through muapi to reframe it into 1:1, 9:16, 4:5, and 16:9 ratios. The subject stays centered while preserving colors and lighting.
What prerequisites are needed to run this skill?
You need the muapi CLI tool installed and configured. Set the MUAPI_API_KEY environment variable or authenticate via muapi auth configure.
Source text
SKILL.md · MIT
---
slug: muapi-social-pack
name: muapi-social-pack
version: "1.0.0"
description: Re-render a hero image into Instagram, TikTok, YouTube-shorts and Twitter/X aspect ratios.
acceptLicenseTerms: true
---
# Social Media Pack
**Re-render a hero image into Instagram, TikTok, YouTube-shorts and Twitter/X aspect ratios.**
## Inputs
| Name | Type | Required | Default | Description |
|:---|:---|:---|:---|:---|
| `source_image` | image_url | yes | — | URL of the hero image (or asset_id from this session). |
| `caption_idea` | text | no | — | Optional caption / overlay direction (kept short). |
| `formats` | list | no | 1:1, 9:16, 4:5, 16:9 | Aspect ratios to produce. |
## Steps
Use the plan to fan out one node per format.
1. For each requested aspect ratio in `{{formats}}`:
- Call `muapi image edit` (model=nano-banana-2-edit) with the source image.
- Prompt: "Reframe the composition to {{aspect_ratio}} for social media.
Keep the subject centred and uncropped. Match the original lighting
and palette. {{caption_idea_hint}}".
- Where `{{caption_idea_hint}}` = "Leave headroom at the top for a
caption: '<caption_idea>'." (only if caption_idea is non-empty).
2. All formats run in parallel (no inter-node dependencies).
3. Return one asset id per format, labelled with the platform it suits:
- 1:1 → Instagram feed
- 9:16 → TikTok / IG Reels / YT Shorts
- 4:5 → Instagram portrait
- 16:9 → Twitter / X / YouTube
- 21:9 → cinematic banner
## Notes
- Don't generate fresh images — only reframe / re-edit the source.
- If the source already matches a format, skip that node and surface the
original asset id for it.
## Trigger Keywords
`social pack`, `resize for social`, `cross-post`, `multi-platform`
---
## Notes for the Executing Agent
- This recipe is LLM-orchestrated: read each phase, gather any missing inputs from the user, then call `muapi` CLI commands. Use `muapi auth configure` first if `MUAPI_API_KEY` is unset.
- For model IDs without a CLI alias yet, fall back to the raw endpoint via `curl -X POST https://api.muapi.ai/api/v1/<endpoint> -H "x-api-key: $MUAPI_API_KEY" -H 'content-type: application/json' -d '{...}'` and poll with `muapi predict wait <request_id>`.
- Substitute `{{input_name}}` placeholders with the user's actual inputs before issuing each call.
© SamurAIGPT · MIT · SamurAIGPT/Generative-Media-Skills