CommunityBildgithub.com

axolotl-sticker

Erstelle animierte Axolotl-Sticker (美西螈表情包) mit der AxoStickers-Engine – ein voxeliger Axolotl im Wasser unter großen pinken 3D-Chinesisch-Text, als 400×400 Schleifen-GIF ≤ 1 MB mit Cover im ersten Frame.

Was ist axolotl-sticker?

Dieser Skill ermöglicht es dir, mit der AxoStickers-Engine animierte Axolotl-Sticker (美西螈表情包) zu erstellen. Es handelt sich um ein reines Python-Programm (numpy + Pillow) plus ffmpeg, das keinen GPU oder Blender benötigt. Der Skill produziert 400×400 große, durchgehend animierte GIFs unter 1 MB, wobei der erste Frame als Cover dient. Er unterstützt eine Vielzahl von Plattformen, die CLI-Befehle anbieten (z. B. Claude Code, Cursor), und funktioniert über lokale Python-Skripte. Du kannst neue Sticker für Phrasen hinzufügen, vorhandene ändern (Text, Bewegung, Gesichtsausdruck, Requisite, Farbe) oder den speziellen Wasser-Tornado-Sticker generieren. Der Skill enthält 75 Bewegungen, viele Gesichtsausdrücke und Effekte, Requisiten und Texteinstellungen, die alle in den Spezifikationen in `engine/specs.py` konfiguriert werden. Dank der klaren Ordnerstruktur (`engine/`, `kit/`, `out/`) lassen sich Sticker rendern, überprüfen und verwalten, ohne dass eine externe Cloud-Umgebung benötigt wird.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Axolotl-Launcher/AxoStickers/tree/main/skill/axolotl-sticker

Installed? Explore more Bild skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht axolotl-sticker?

Alles ist reines Python (numpy + Pillow) plus ffmpeg; kein GPU, kein Blender. Das Repository-Root ist der Ordner, der engine/, kit/ und out/ enthält.

pip install numpy pillow          # ffmpeg muss im PATH sein
python engine/build.py 301 --force            # ein bestimmtes Spec (nach ID) rendern
python engine/build.py 12,40-45 --force       # mehrere rendern
python engine/build.py                        # alles, was noch nicht gerendert wurde (wiederaufnehmbar)
python engine/sheet.py 301-310                # Übersichtsblatt -> ref/sheet_sel_N.png (Cover + 3 Frames pro Sticker)
python engine/manifest.py                     # out/stickers.json nach dem Hinzufügen von Stickern aktualisieren
python engine/tornado.py 我没事               # den Wasser-Tornado-Sticker („-" = kein Text); benötigt zuerst engine/fetch_mc.py

Ausgabe: out/NNN_文字.gif und das Cover out/_封面/NNN_文字.png.

Einen Sticker hinzufügen

Eine Zeile pro Sticker in engine/specs.py (am Ende des entsprechenden Abschnitts anhängen, damit bestehende IDs stabil bleiben):

S('摸鱼', 'flagwave', 'happy', [], hold='fish', s=0.7)
#  Text     Bewegung  Gesicht    Effekte  Extras
S('别催了', 'rage', 'angry', ['steam'], style='red', tmode='shake')
S('暴富', 'spin', 'money', ['coins', ('float', 'money', 3, 4)], style='gold')

Wähle die Bewegung, die den Satz darstellt, dann ein Gesicht, 0–2 Effekte und höchstens eine Requisite/einen Hut. Halte den Text auf 2–5 Zeichen (6+ wird auf zwei Zeilen umgebrochen und wird klein). Verwende / für einen erzwungenen Zeilenumbruch.

  • Bewegung (engine/motions.py, engine/motions2.py, insgesamt 75): nod shake hop jump flip spin sink popup peek hide tremble rage tantrum dance wag bow kowtow doze flop melt dash slidein look lookup wave cheer clap belly flipover float zoom pounce approach tilt shrink puff grow drift buoy sway headbang headbob roll circle stare shy turnaway think boing wobble faint run launch stretch slosh petrify glitch squish hiccup shakeoff nuzzle rise recoil bonk, sowie Requisiten-Aktionen swing flagwave offer chomp drink read typing scan umbrella (diese lesen hold=).
  • Gesicht (FACES in motions.py): normal smile happy joy love star shock surprise angry rage sad cry sob teary sleep sleepy tired meh dead dizzy smug wink focus struggle blep drool money awkward side cool eat shy tiny up grin catface blank pout sparkle determined worried xd — oder ein dict wie {'L': 'big', 'R': 'big', 'mouth': 'o'}.
  • Effekte (engine/fx.py): hearts question exclaim shock anger sweat panic zzz notes tears stream rain bulb confetti fireworks stars steam gloom sparkles speed fire sun moon blush coins snow leaves check cross boom bubbles ghost dots loading bolt flash thumb plus1 flowers swirl skull twinkle brokenheart; generische nehmen einen Icon-Namen: ('float', 'diamond', n, size), ('pop', 'pin', size, (dx, dy)), ('stay', 'clock', size, (dx, dy)), ('say', 'mail'), ('orbit', 'star', n, (rx, ry), size), ('fall', 'flower', n, size).
  • hold= (gehaltene Voxel-Requisite): pickaxe sword wrench flag fish rod heart diamond emerald cookie apple melon carrot potion bulb book cup boba phone laptop gift cake tnt grass brick bowl popcorn torch rtorch magnifier mail key trophy controller bucket umbrella …
  • wear=[…] (Hüte/Kopfaccessoires): party crown nightcap shades glasses band helmet halo horns phones bow chef grad flowers mask towel ice
  • style= Textfarbe: pink (Standard), blue, purple, red, green, gold, gray, cyan — passend zur Stimmung (traurig blau, wütend rot, Geld gold, fertig grün, müde grau, Nacht lila).
  • tmode= Textanimation: stay (Standard), wave, bounce, shake, shiver, pulse, droop, swing, zoom, spin, pop, type, slam.

Vor der Übergabe prüfen

Rendern, dann das Übersichtsblatt öffnen und tatsächlich ansehen. Prüfen, ob:

  • das Cover (erster Frame) den vollständigen Text und den Axolotl zeigt;
  • die Requisite/der Effekt in Stickergröße lesbar ist und nicht hinter dem Textbalken versteckt ist (alles über dem Kopf teilt sich den Platz mit dem Text);
  • der weiße Hintergrund weiß geblieben ist (der Exporter wiederholt mit einer Vollbild-Palette, wenn ffmpeg ihn verfärbt);
  • die Datei ≤ 1000 KB ist (der Exporter reduziert automatisch von 64 auf 24 Farben).

Fallstricke

  • Bewegungen, die den Rahmen während der Schleife verlassen (launch, sink, dash, popup, slidein, glitch), dürfen keinen pop/slam/type-Text verwenden – sonst würde das Cover den Axolotl außerhalb des Bildschirms einfangen.
  • Zu viele Sticker mit derselben Bewegung wirken eintönig: Verwende jede Bewegung höchstens etwa 6 Mal pro Set (python -c "import sys; sys.path.insert(0,'engine'); import specs, collections; print(collections.Counter(s['motion'] for s in specs.all_specs()).most_common(10))").
  • Die Vorderbeine sind klein und sitzen unter dem Kopf; reine Beingesten sind kaum zu erkennen – kombiniere sie mit einer Requisite oder einem Effekt.
  • Koordinaten für Requisiten sind kopf-lokale Modell-Pixel: Das Gesicht ist bei z = -10, die Kopfoberseite bei y = 9, +x ist die linke Seite des Betrachters.
  • Humor, der bei diesem Publikum ankommt, ist trocken (难绷), nicht übertrieben schreiend.

Der Wasser-Tornado

engine/tornado.py zeichnet den Trichter als dasselbe Gewässer wie den Teich (eine Umrandung, gleiche Farbe, die weiße Wasserlinie steigt die Wände hoch), lässt Spiralmuster rotieren, schleudert Tropfen und wirbelt den Axolotl in 3D zusammen mit Vanilla-Minecraft-Gegenständen (Eisen-/Schildkrötenhelm, Axolotl-Eimer, TNT). Führe einmal python engine/fetch_mc.py aus, um diese Texturen aus deinem eigenen Minecraft-Client (1.21.2+ jar) zu kopieren – sie werden niemals committed.

Verwandte Skills