Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Design & media
resize-for-banner
Try itResize an image into a Twitter/X header banner (5:2, 1500x600) using ImageMagick. The image is rescaled to fit and the leftover space is padded black — never cropped, so no content is lost. Use when the user wants a Twitter/X banner for an article or infographic. Twitter/X is the only target: LinkedIn and blog headers accept the original image, so never generate a derivative for them. Never overwrites the original — writes a new file beside it.
What it does
Turn one image into social banner variants with ImageMagick, keeping the original file untouched and writing new files beside it. The image is **rescaled to fit and black-padded**, never cropped, so no content is lost.
The skill document
Resize for Banner
Turn one image into social banner variants with ImageMagick, keeping the original file untouched and writing new files beside it. The image is rescaled to fit and black-padded, never cropped, so no content is lost.
Platform specs
| Platform | Ratio | Dimensions | Notes |
|---|---|---|---|
| Twitter / X | 5:2 | 1500x600 | Header photo. Default. |
| LinkedIn article | 16:9 | 1200x675 | Article header. Usually unnecessary — generated infographics are already 16:9. |
| YouTube channel | 16:9 | 2560x1440 | Channel art; safe area is 1546x423 center. |
| Blog / generic | any | any WxH | Custom dimensions on request. |
If the user does not specify a platform, default to Twitter (1500x600).
Approval gate
- Never touch the original image. All output goes to new files named after the original (suffix added, base name unchanged).
- Confirm the plan with the user before converting: the source image, the target size(s), and the exact output filenames.
- If the user asks for a size the spec does not cover, use that size with the same resize + pad technique and say which platform it suits.
Inputs
source— Path to the original image, e.g.ai-thoughts/imgs/260806-1656.png. Required.sizes— Which banners to produce. Default: Twitter 1500x600. User may request any platform from the specs table or custom dimensions.
Outputs
imgs/-banner-.png— e.g.260806-1656-banner-twitter.png.- `` keeps the original filename exactly. The original file is never modified.
Procedure
-
Confirm the plan with the user: source image, target size(s), output filename(s). Get a go-ahead before writing files.
-
Check the original dimensions with
magick identify ""so you can predict which axis will be padded. -
Resize to fit, then pad with black with ImageMagick 7
magick:magick -resize "x" -background black -gravity center \ -extent x imgs/-banner-.png-resize "WxH"(no bang) scales to fit inside the box, preserving the aspect ratio — the image is never distorted or cropped.-extent WxHthen pads the leftover space;-background blackmakes the padding dark and-gravity centercenters the image.- If the source is taller/narrower than the target ratio, padding appears on the left and right; if it is wider, padding appears on top and bottom.
- Padding color is black by default; ask the user if they want a different background.
-
Verify every output with
identify— dimensions must match the target size exactly. -
Report the output paths and confirm the original is untouched (git status shows the new files as untracked, the original unmodified).
Quality rules
- Never overwrite or rename the source image.
- Never crop the image. Resize to fit and pad — cropping loses content.
- Do not invent dimensions. Use the platform specs table or the user's explicit dimensions.
Verification
identifyreports exactly the target dimensions for each output.- The source image inside the banner is undistorted (aspect ratio preserved).
- The original file is byte-identical (unchanged
identifyoutput / git status). - Output files sit beside the original in the same directory.
Error Handling
- Source not found: list candidate images in
imgs/and ask which to use. - Output already exists: stop and ask whether to overwrite, or choose a different suffix.
- No ImageMagick:
magickis always installed on the user's machines — skip checking for it and run the commands directly.
Related skills
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Site audit, content writing, and competitor analysis for organic search rankings.
More from j3ffyang
Browse all skillsPolish a technical blog draft into an 800–1000 word, 3–4 section zh-CN article, preserve technical terms/code, and generate consistent hero + per-section image prompts when the user asks to polish and translate a blog with images.
Generate video from supplied image using Veo-3.0 async API. Gemini vision analyzes image, Veo creates video via predictLongRunning. All outputs in ~/.openclaw/workspace/tibetanProc/ with yymmddHHMM prefix.
Read a plain Markdown file (e.g. 260321_openclawConfig.md), generate header and section images using the default OpenClaw image model and API key from ~/openclaw/.env, create a new *_img.md copy with embedded PNGs, and move all generated images into an img/ folder next to the original file.
Polish a technical blog draft into a 1000–1200 word, 4–5 section en-US article, preserve technical terms/code, and generate one consistent hero image prompt.
Help the user draft, review, and polish blog posts in Markdown, keeping the original languages and informal tone.
Generate a daily AI news newsletter from fresh web sources. Use when the user asks for a current AI digest, AI news roundup, curated newsletter, or daily AI...