Promptpan

All · Motion graphics · Posters · events

467Today's event" moving vertical poster — a readable event poster where only ribbons, bands and lines move, 13 seconds

Enter an event name, date, items and optional shop and menu photos: the title drops in, the shop photo slowly zooms, item photos pop in on the beat and the colors change once — a vertical event poster MP4 whose last frame is a finished poster.

What you get

  • A 6-scene vertical poster MP4 (13 seconds at 120 BPM, 60fps)
  • An HTML file with a settings panel to change the title, date, items, benefit and colors
  • A render script that makes a new MP4 with one command
Example — made from the field examples with Claude Opus 5.5 (no background music)

Made with Claude
  • Claude Opus 5.5 Made with this AI

Fill in the fields

  1. 1Fill in the fields
  2. 2Copy the prompt
  3. 3Paste it into an AI that can run code (Claude Opus 5.5 · GPT-6 Astra · Gemini Argon)
  4. 4It builds the HTML, renders it itself and leaves an MP4
  5. 5To change it, edit the settings panel at the top of the HTML and run one render command No new request
Ideas
Ideas
Ideas
Output format

Choose a mode, then set the size.

Full prompt 7,580 characters
Make a 13-second vertical event poster that moves, as one self-contained HTML file, and render it to MP4. It must read as a finished printed poster at every moment — title and date stay put and legible — while only the decorations move: thick pastel ribbons that keep wriggling, a date band that slides in, lines that rise one by one, a badge, and one color change like a second print run. The last frame must work as a still poster on its own. Do the whole job now without asking questions.

[Inputs (use the default when empty)]
Shop name: "【Shop name】"
Event name (the big title): "【Event name】"
Date: "【Date】"
Time and place: "【Time and place】"
Up to six content items (slash-separated): "【Up to six items】" — show them two per line joined with a middle dot
Benefit line: "【Benefit line】" — words wrapped in *asterisks* are the emphasis word; if empty, skip it
Badge word: "【Badge word】" — one short word printed on a star badge; if empty, use a plain star
Photos: "【Photos】" — the user may attach photos to this chat: the first is the shop or venue, the next up to three are the items in the order listed. If photos are attached, copy them next to the HTML (img/1.jpg, img/2.jpg …) and use the photo layout below; if none, use the text-only layout.
End button: "【End button】" — default: the shop name
Palette: "【Palette】"
  Lavender = paper #E9DDF5, ink #2A1B5C, ribbon A #7B5CFF, ribbon B / badge #FF8A5C, highlighter #FF9EC7, card #F7F1FC
  Riso = paper #F2EBDD, ink #1E1B3A, ribbon A #FF4FA3, ribbon B / badge #1F6FD0, highlighter #FFD400, card #FBF6EC
  Night · Neon = paper #121318, ink #F4F1EA, ribbon A #C8F43C, ribbon B / badge #FF5CA8, highlighter #5CC8FF, card #1D1F26
Texture: "【Texture】" — Riso = misregistered plates, halftone dots and heavy paper grain; Clean = clean with light film grain
Tempo: "【Tempo】" — default 120 BPM. Aspect ratio: Output size 1080x1920 pixels, 9:16 portrait story. Keep all text inside the central 80% of the height. (default 9:16).

[Layout — stack from the top so nothing ever overlaps]
A date band near the top (two thin colored rules, a light card strip with the date in a heavy sans, one more rule). Below it the event name as the hero in Black Han Sans stretched 1.3x wide, as large as fits 86% of the width, split into two lines at the most balanced space when it is too long. Under the title the time and place, then the shop name small and grey. Then the content lines. Then a gap holding the lower ribbon. Then the benefit line, with a star badge just above its right end. The end button at the bottom inside a 6% safe margin. Compute every position from the one above it.
Photo layout (when photos are attached): keep the title on one line if it still fits at 10% of the short side, then the shop photo in a white-bordered rounded frame tilted -1°, as tall as the leftover space allows (12–32% of the height), cropped toward its top so a sign stays visible; then time and place; then the item photos as square white-bordered cards in one row, alternately tilted a few degrees, each with its item name under it; then the remaining items as text lines; then benefit and end button. Never stretch a photo — cover-fit and crop.

[Structure — 6 scenes; the content scene gets one beat per line plus 2, the end scene 6 beats, others 4]
1. Title: two thick round-capped ribbons draw themselves on (one loops behind the title in ribbon A at about 40% opacity, one waves across the gap in ribbon B) and never stop wriggling from then on; the title letters drop from above one after another with a bounce; the date band slides in from the left.
2. Info: the shop photo opens upward from a mask and settles from 120% zoom, then keeps zooming in very slowly until the end (Ken Burns); the time and place type in, a small dot appears in front of it like a map pin, the shop name fades in (text-only layout).
3. Content: one per beat — item photo cards pop in with an overshoot (each photo also zooming in slowly afterwards), then remaining lines rise through a mask.
4. Benefit: the line types in, a highlighter swipes under the emphasis words (keep the emphasis in ink, never colored text on the highlighter), and the pin dot travels across the poster and morphs into the star badge on the beat with the badge word in white on it.
5. Second print: three flat color bars (ribbon A, highlighter, ribbon B) sweep up from the bottom and the whole poster below them reappears with ribbon A and B swapped and the paper tinted toward the highlighter color; the badge recolors to match.
6. End: the dark end button grows in under the benefit, a cursor clicks it and a ring spreads. Hold the final frame — it is the complete poster.

[The travelling dot]
The pin dot and the star badge are the same object. Compute its state from time alone with keyframes; to morph between a circle and a star, sample both outlines at the same 96 angles from the top and interpolate point by point.

[Always-on details]
Real motion blur on fast moves (average several sub-frame samples). Overshoot and settle on arrivals. Three typefaces only (Noto Sans KR, Nanum Myeongjo, Black Han Sans), loaded from Google Fonts. Never clip a letter. Only flat palette colors — no gradients, no glows.

[Sound]
If you can generate music, add a light background track at the given tempo whose accents land on the letter drops, line entrances and the color sweep, and mux it into the MP4 as AAC. If you cannot generate audio files with a music model, write the backing track yourself in code instead: synthesize an original instrumental (kick, snare, hi-hats, bass, a chord pad and a light arpeggio, no vocals) at the given tempo with a simple chord loop, sample by sample into a WAV, with the drums entering where the video's main section starts, then mux it into the MP4 as AAC. Never use a placeholder or someone else's recording.

[Build]
One HTML file, everything on a single canvas. The script starts with a `const CONFIG` object holding every input plus fps 60 and a seed. All drawing comes from a pure `seek(t)` — no timers, no CSS animation, randomness only from the seed — so any frame renders identically. A settings panel above the preview (hidden with ?render=1) with English labels: text inputs for every text input, selects for palette, texture, tempo and ratio, play/pause, a scrubber, and a "Copy settings" button that copies CONFIG as code. Edits re-render instantly.
Write render.mjs: open the page with ?render=1 in headless Chromium (Playwright), wait for document.fonts.ready, step seek(frame / 60) through every frame, screenshot the canvas at 1080 px on the short side, and pipe into ffmpeg (libx264, yuv420p, crf 18) to make motion.mp4. Close the browser at the end. Accept an optional JSON file argument that overrides CONFIG. Also save the final frame as poster.png.

[Check before finishing]
Render, export the middle of every scene and the final frame into a contact sheet and look at it: title and date readable in every frame, no two text blocks overlap, photos are never stretched and the shop sign is visible, the color sweep reaches the very bottom, the badge word sits inside the star, the button text fits inside the button, nothing clipped. Fix and re-render if anything fails. Finish with the file paths and the single command to re-render after editing settings.

[Final output format]
Output size 1080x1920 pixels, 9:16 portrait story. Keep all text inside the central 80% of the height.
This selected output format takes priority over any fixed canvas size or aspect ratio elsewhere in this template. Adapt the composition, text zones and margins to the selected canvas without stretching or cropping essential content. Device safe areas apply only when a device is selected. Never print these format instructions on the image.

Browse more cards

How to use it · FAQ

Add photos and it becomes your shop's poster

The photo field is optional — without photos you get a poster of type and ribbons. Attach one shop photo and three item photos in the AI chat and the shop photo slowly zooms in while item photo cards pop in on the beat. The first photo is the shop (with its sign visible), the rest follow the order of your items. The photos in the example above are AI-made samples.

A readable poster that moves for 13 seconds

This card turns one event poster into a vertical video for Reels, Shorts and Stories. The title letters drop in one by one, two thick ribbons keep wriggling, and the date band slides in. Items rise line by line, a highlighter swipes under the benefit, and a dot that looked like a map pin turns into a star badge. At the end, color bars sweep past and the colors change once, like a second print run. The poster stays readable from start to finish, so even a paused frame works as an ad.

Paste it into an AI that runs code

This is a prompt for AI that writes and runs code, not an image AI. The AI builds the HTML, renders the MP4 itself and saves the last frame as a poster image too. The example above was made with Claude Opus 5.5. Check pricing and terms of outside services on their own sites.

How to fill it in

The shorter the event name, the bigger it gets (more than two words splits into two lines automatically). Write up to six items separated by "/"; they are paired two per line — menus, performers, class steps, sale items, anything. The *asterisk* words in the benefit line get a highlighter. Don't write dates, prices or benefits that aren't true.

Edit without asking again

Change the title, date, items and colors in the settings panel at the top of the result HTML and preview instantly; press "Copy settings" and one render command makes the new video. Add more items and that scene gets longer by itself.