← GifGen - GIFsCONTENT HISTORY

Update to GifGen - GIFs

Snapshot Sep 30, 2026 · 23:16 UTC · version 1.0.7

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Turn an image that already exists into an animation. Use when there is a picture in the conversation — uploaded by the user, or one you generated — and they want it to move, or when you have generated a single flat picture while trying to make a GIF and now need frames. Covers \"animate this photo\", \"make this logo move\", \"bring this drawing to life\", \"make this picture wave / spin / blink\", and the recovery case where a GIF request produced one still image instead of a grid of frames.",
  "included_files": [],
  "name": "animate-image",
  "skill_md_contents": "---\nname: animate-image\ndescription: Turn an image that already exists into an animation. Use when there is a picture in the conversation — uploaded by the user, or one you generated — and they want it to move, or when you have generated a single flat picture while trying to make a GIF and now need frames. Covers \"animate this photo\", \"make this logo move\", \"bring this drawing to life\", \"make this picture wave / spin / blink\", and the recovery case where a GIF request produced one still image instead of a grid of frames.\n---\n\nA GIF can only be built from **separate frames**. A single picture is not\nan animation and cannot be made into one by panning, zooming or bouncing\nit — that is a still image being moved around, and people spot it at once.\n\nThis skill does one job: take an existing image and produce a **grid of\nframes** from it, so it can be cut into a GIF.\n\n## When this runs\n\nEither of these:\n\n- **The user has an image** — uploaded, or generated earlier — and wants\n  it animated.\n- **You generated a single flat picture** while trying to make a GIF. Do\n  not try to salvage it with motion effects. Come here instead: that\n  picture becomes the reference for a proper grid.\n\n## Step 1 — look at the image first\n\nActually look at it, and decide three things before writing any prompt:\n\n1. **The subject** — what is it, in a few words, precisely enough that a\n   regenerated version is recognisably the same thing. \"A grumpy chrome\n   toaster with cartoon eyes on a mint background\", not \"a toaster\".\n2. **What should move** — pick ONE motion and keep the rest still. A\n   toaster shakes and launches toast; its background does not drift. The\n   commonest mistake is animating everything at once, which reads as a\n   scene wobbling rather than a subject acting.\n3. **The style** — flat vector, 3D render, photo, pixel art, watercolour.\n   The grid must match it, or the animation will not look like the image\n   the user already has.\n\nState the motion you chose in one short line before generating, so the\nuser can redirect you cheaply if it is not what they meant.\n\n## Step 2 — generate the grid FROM that image\n\nCall image generation **with the existing image as the reference**, so the\nsubject and style carry over instead of being reinvented. Use this prompt:\n\n> A SQUARE image containing a N×N grid of TOTAL panels, using the provided\n> image as the exact subject and style reference, showing that same subject\n> at successive moments of\n> MOTION. Consecutive panels differ only slightly, so the motion advances\n> in small, even steps and the whole grid reads as one continuous action\n> rather than separate poses. The TOTAL panels form one looping cycle\n> (panel TOTAL returns to panel 1). Identical subject, camera, lighting\n> and background in every panel — only MOTION changes. All panels are\n> exactly the same size, tiled edge to edge with no gaps, margins or\n> gutters: the image divides evenly into N equal columns and equal rows.\n> No text, no numbers, no borders.\n\n`size=\"1024x1024\"`. Default to a 4×4 grid (16 frames); 3×3 when the\nsubject is detailed and needs the resolution, 5×5 when the motion needs to\nbe smooth.\n\nSame rules as any grid: the count appears once, in the opening layout\nclause. Never narrow the subject. Keep \"no text, no numbers, no borders\".\n\n## Step 3 — LOOK at what came back\n\nBefore encoding, look at the generated image and say, in one line: how\nmany columns, how many rows, and whether the same subject repeats across\nthe panels.\n\nIf it is one big picture again rather than a grid, do NOT encode it and do\nNOT animate it with motion effects. Generate once more, leading the prompt\nwith \"A NxN grid of TOTAL panels of ...\". If you are unsure whether it is\na sheet, run `python3 ../make-gif/scripts/inspect_sheet.py IMAGE` — it\nprints GRID or NOT_A_GRID.\n\n## Step 4 — hand it to the GIF encoder\n\nThe grid is detected from the image; do not pass `--grid`:\n\n```\npython3 ../make-gif/scripts/sheet_to_gif.py SHEET --fps 7 --frames frames.zip\n```\n\nThen deliver it with the exact output block in\n`../make-gif/references/output-message.md`. That wording is fixed — do not\nreword it, and put nothing before or after it.\n\n## What not to do\n\n- **Do not animate the single image directly.** No pan, no zoom, no\n  ken-burns, no duplicating it with offsets.\n- **Do not redraw from scratch** when a reference image exists — the user\n  chose that picture and expects to recognise it.\n- **Do not animate the background** unless the user asked. One thing\n  moves.\n"
}

SHA-256 of public snapshot: 2fc7d10b818535f3187347206ebfccd4c2e54b4b12edc52eddb0e0af2799ff44