一键导入
pixel-art-studio
Pixel art toolkit — generate images and videos from Pollinations, convert user photos with era-accurate presets.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Pixel art toolkit — generate images and videos from Pollinations, convert user photos with era-accurate presets.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | pixel-art-studio |
| description | Pixel art toolkit — generate images and videos from Pollinations, convert user photos with era-accurate presets. |
| tags | ["pixel-art","video","pollinations","ffmpeg","creative","retro","game-art"] |
| related_skills | [] |
Generate pixel art images and videos from Pollinations, or convert user photos with era-accurate presets.
One rule: Pollinations generates pixel art natively — never apply pixelart.py filters on top.
Point your agent to this repo: https://github.com/Synero/pixel-art-studio
Your agent reads the SKILL.md, installs dependencies (pip install Pillow scipy requests numpy), and follows the instructions below. Works with Hermes, OpenClaw, Claude Code, Cursor, or any agent that supports skills/instructions.
You can also clone it manually into your agent's skills folder.
| User says | Pipeline | Output |
|---|---|---|
| Sends photo + "pixel art" | pixelart.py preset | PNG image |
| Describes scene + "pixel art" | Pollinations → direct | PNG image |
| "video/gif/animation" + pixel art | pixelart_video.py | MP4 video |
The user describes what they want in their own words. Extract:
Don't force the user to pick. If they say "cyberpunk neon city pixel art" — that's the artistic style. If they say "retro 8-bit dragon" — that's the technical style. Only ask what's missing.
What the scene looks and feels like. User may specify in their prompt.
| Style | Vibe | Prompt Modifier |
|---|---|---|
| cyberpunk | Neon, futuristic, rain | cyberpunk neon lights, futuristic, rain-slicked, purple and cyan |
| medieval | Castles, knights, dragons | medieval fantasy, stone castles, torchlight, banners |
| anime | Japanese, expressive, vibrant | anime style, vibrant colors, expressive eyes, dynamic pose |
| noir | Dark, moody, detective | film noir, dramatic shadows, dark alley, mystery |
| western | Desert, cowboy, saloon | wild west, dusty desert, wooden buildings, sunset |
| scifi | Space, robots, holograms | sci-fi, space station, holographic displays, metallic |
| kawaii | Cute, pastel, adorable | kawaii, pastel colors, cute, soft lighting, sparkly |
| steampunk | Gears, brass, Victorian | steampunk, brass gears, Victorian, steam pipes, warm |
| horror | Dark, spooky, Gothic | horror, dark Gothic, eerie fog, moonlit |
| underwater | Ocean, coral, bioluminescent | underwater, deep blue ocean, coral reef, light rays |
| postapoc | Ruins, wasteland, overgrown | post-apocalyptic, overgrown ruins, wasteland, desolate |
| retro | 80s/90s nostalgia, synthwave | retro 80s aesthetic, synthwave, neon grid |
| cozy | Warm, comfortable, relaxing | cozy atmosphere, warm lighting, comfortable, soft |
If user doesn't specify artistic style: use auto (let the prompt speak for itself).
How the pixel art itself looks. Recommend based on what the user wants.
| Style | Look | Best for |
|---|---|---|
| nes | 8-bit, limited palette, clean | Characters (fewest hallucinations) |
| snes | 16-bit, colorful, detailed | Rich scenes |
| indie | Modern, polished pixel art | Contemporary feel |
| arcade | Bold, chunky, high contrast | Posters, action |
| gameboy | 4 green shades | Extreme retro |
| clean | Modern, high fidelity | Maximum detail |
| gb | GBA 32-bit, smooth | Handheld aesthetic |
Default recommendation: NES for characters, SNES for scenes, arcade for bold posters.
| Ratio | Use |
|---|---|
| 640x480 | Default, most scenes |
| 512x768 | Portraits, vertical |
| 512x512 | Sprites, balanced |
| 768x768 | Square, detailed |
| 800x600 | Larger scenes |
When in doubt: 640x480.
Build prompt from user description + styles:
[subject scene], pixel art, [technical style] style, [artistic modifiers], [mood]
User: "un gato mirando la estrellas" → a cat looking at the stars, pixel art, NES 8-bit style, limited color palette, warm colors, dithered shading
User: "ciudad cyberpunk pixel art" → a cyberpunk city street at night, pixel art, SNES sprite style, cyberpunk neon lights, futuristic, rain-slicked, purple and cyan
User: "dragón estilo medieval pixel art 16-bit" → a dragon flying over a medieval castle, pixel art, SNES sprite style, 16-bit retro, medieval fantasy, stone castles, dramatic lighting
User: "un mago en un bosque oscuro" → a wizard casting a glowing spell in a dark forest, pixel art, NES 8-bit style, limited color palette, magical particles, mystical atmosphere
https://image.pollinations.ai/prompt/{url_encoded}?width=640&height=480&nologo=true
nologo=true for clean outputSeed-swapping strategy: When a prompt produces good backgrounds but one artifact, swap ONLY the seed (keep prompt identical). Don't rewrite the prompt. Try 3-5 seeds before changing the prompt — Pollinations output varies wildly between seeds.
Subject-specific risks:
Good example prompts that work consistently:
Bad prompt patterns to avoid:
Descriptive vs simple trade-off:
Pollinations at 640x480 generates pixel art "style" but individual pixels aren't clearly visible — looks like smooth retro illustration. For authentic pixel art where you can SEE the pixels:
Lower resolution = bigger visible pixels = more authentic. Consider lowering Pollinations default or adding --lowres flag.
Same issue with pixelart.py: output upscales back to original photo resolution (factor 10 on 2034px photo = output still 2034px, blocks too small). Fix: option to output at native grid size instead of upscaling.
Scripts save to ./pixelart_output/ (or $PIXELART_OUTPUT). The agent handles delivery based on its platform — send the generated file however your agent sends media (Telegram, Discord, WhatsApp, Slack, file path, etc.). Don't bake platform-specific delivery logic into the skill.
{subject}_{tech_style}_{artistic_style}_{resolution}.png
Example: cyberpunk_city_snes_cyberpunk_640.png, elf_mage_nes_640.png
User asks for animated pixel art → extract styles + scene → generate.
python scripts/pixelart_video.py "a wizard in a dark forest" \
--scene magic --tech nes --artistic medieval --ratio 640x480 --duration 6
| Scene | Animations | Best for |
|---|---|---|
| night | Stars + fireflies + leaves | Outdoor night |
| dusk | Fireflies + sparkles | Twilight, sunset |
| tavern | Dust motes + sparkles | Indoor warm |
| indoor | Dust motes | Interior calm |
| urban | Rain + neon pulse | City, cyberpunk |
| nature | Leaves + fireflies | Forest, landscape |
| magic | Sparkles + fireflies | Spells, enchantment |
| storm | Rain + lightning | Dramatic, battle |
| underwater | Bubbles + sparkles | Ocean, aquatic |
| fire | Embers + sparks | Lava, campfire, dragon |
| snow | Snowflakes + sparkles | Winter, mountain |
| desert | Heat shimmer + dust | Western, wasteland |
--gif (320px scaled, palettegen)For GitHub README: Always use --gif. GitHub doesn't render MP4 inline in READMEs — GIFs show natively. Generate MP4 + GIF together:
python scripts/pixelart_video.py "scene" --gif -o output.mp4
# → creates output.mp4 + output.gif
Snowflake animation tuning (learned from testing):
User sends video → extract frames → pixelart.py → re-encode.
ffmpeg -i input.mp4 -vf fps=15 /tmp/frames/frame_%04d.png
python scripts/pixelart.py /tmp/frames/frame_0001.png --preset nes
# Apply to all frames, then:
ffmpeg -y -framerate 15 -i /tmp/out/frame_%04d.png -c:v libx264 -pix_fmt yuv420p output.mp4
Rewritten from scratch with techniques inspired by pyxelate:
Dependencies: scipy (~15MB) + numpy + Pillow. NO sklearn needed.
python scripts/pixelart.py photo.jpg --preset nes -o output.png
python scripts/pixelart.py photo.jpg --palette PICO_8 --dither bayer
python scripts/pixelart.py photo.jpg --palette NEON_CYBER --dither atkinson
python scripts/pixelart.py photo.jpg -c 16 --dither floyd
python scripts/pixelart.py --list-presets
python scripts/pixelart.py --list-palettes
| Preset | Factor | Palette | Dither | Best for |
|---|---|---|---|---|
| gameboy | 10 | GAMEBOY_ORIGINAL (4) | bayer | Extreme retro green |
| nes | 10 | NES (63) | floyd | 8-bit characters |
| snes | 7 | 64 auto | floyd | 16-bit rich scenes |
| gba | 6 | 64 auto | none | Smooth handheld |
| pico8 | 8 | PICO_8 (16) | bayer | Fantasy console |
| c64 | 9 | C64 (16) | floyd | Commodore 64 look |
| vga | 7 | 256 auto | none | DOS era |
| arcade | 12 | 16 auto | none | Chunky 80s |
| clean | 4 | 64 auto | none | Maximum detail |
| detailed | 3 | 128 auto | none | High fidelity |
| minimal | 8 | 8 auto | floyd | Minimalist |
| mspaint | 8 | MS_PAINT (24) | none | Classic MS Paint |
| apple2 | 10 | APPLE_II_HI (6) | naive | Apple II |
| teletext | 12 | TELETEXT (8) | bayer | BBC Teletext |
Hardware: NES, C64, ZX_SPECTRUM, PICO_8, GAMEBOY_ORIGINAL, GAMEBOY_POCKET, GAMEBOY_VIRTUALBOY, APPLE_II_LO, APPLE_II_HI, TELETEXT, CGA_MODE4_PAL1, CGA_MODE5_PAL1, MSX, MICROSOFT_WINDOWS_16, MICROSOFT_WINDOWS_PAINT, MONO_BW, MONO_AMBER, MONO_GREEN
Artistic: PASTEL_DREAM, NEON_CYBER, RETRO_WARM, OCEAN_DEEP, FOREST_MOSS, SUNSET_FIRE, ARCTIC_ICE, VINTAGE_ROSE, EARTH_CLAY, ELECTRIC_VIOLET
| Method | Speed | Look | Best for |
|---|---|---|---|
| none | Fastest | Crispest, visible banding | Clean modern look |
| bayer | Fast | Consistent ordered pattern | Retro hardware feel |
| floyd | Medium | Smoothest gradients | Portraits, landscapes |
| atkinson | Medium | Cleaner, less noise | Classic Mac aesthetic |
Studied sedthh/pyxelate in depth. Key takeaways:
NEVER hardcode ~/.hermes/ paths in pixelart.py. Use:
./pixelart_output/ (local to cwd)./pixelart_memory.json (local to cwd)$PIXELART_OUTPUT, $PIXELART_MEMORY--output-dir, --memory, --no-memoryThis ensures the scripts work standalone, with any agent (Hermes, Claude Code, OpenClaw), or as a CLI tool.
--gif flag for video examplespixelart_image.py tracks every generation in a local memory file:
./pixelart_memory.json (local to cwd)$PIXELART_MEMORY env var or --memory flag--no-memory flag./pixelart_output/ or $PIXELART_OUTPUT or --output-dirEach entry saves: prompt, tech/artistic style, success/failure, timestamp.
Check stats: python scripts/pixelart_image.py --stats
Over time, this reveals which style combos work best and what prompts tend to fail. The agent should check stats periodically and adjust recommendations.
Why not ~/.hermes/? Hardcoding paths to a specific agent's folder breaks standalone use. Anyone using pixel-art-studio from Claude Code, OpenClaw, or plain CLI shouldn't need Hermes.
Repo: https://github.com/Synero/pixel-art-studio
CRITICAL: All commits must use Synero identity, NEVER "Nacho":
git config user.email "synero@users.noreply.github.com"
git config user.name "Synero"
To reset history with wrong username (orphan branch):
git checkout --orphan fresh-start
git add -A
git commit -m "message"
git branch -D main
git branch -m main
git push -f origin main
Free source images for pixelart.py examples: Use picsum.photos (Wikimedia blocks curl downloads):
curl -sL "https://picsum.photos/seed/portrait123/640/480" -o portrait.jpg
curl -sL "https://picsum.photos/seed/landscape456/640/480" -o landscape.jpg
Example structure for README (3 script sections):
scripts/pixelart.py — Photo → pixel art (10 presets)scripts/pixelart_image.py — Prompt → image (Pollinations, memory tracking)scripts/pixelart_video.py — Prompt → animated video (+ optional GIF export) (12 scenes, 7 tech styles, 13 artistic styles)