AI City Remix: Make a City Story Video with MiniMax M3.1 Flash
How to enter AI City Remix: rules, judging weights, the seven starter Skills, and a real Vienna run where MiniMax M3.1 Flash wrote the city script for under one cent.

We pointed the city-through-time Skill at Vienna and asked MiniMax M3.1 Flash to write the script. Nine API calls later we had a story.json that passed the Skill’s validator, rendered real OpenStreetMap streets, and cost $0.0087. It also put Vienna’s medieval town north of the Danube, said the 1857 Ringstraße decree brought nineteen suburbs into the city, and placed a “New Parliamentary Vienna” card about 11 km from the Parliament building.
That is the shape of AI City Remix in one run. The model does the writing fast and cheaply. Whether your film scores on accuracy depends on what you check afterwards. This guide is for developers and creators entering AI City Remix, SandBase’s city-story video challenge that runs from October 22 to October 28, 2026. It covers the rules that constrain your build, how the judging weights should shape your workflow, which starter Skill to pick, and what our Vienna run showed about using M3.1 Flash as the director model.
AI City Remix: Key takeaway
- AI City Remix asks for one 60–180 second MP4 (720p or higher, Chinese or English, with subtitles) about any real place, directed with MiniMax M3.1 Flash through SandBase. Uploads close October 28 at 23:59 UTC.
- The $11,500 prize pool is paid as SandBase balance: one $3,000 first prize, three $1,000, five $500 and thirty $100 honorable mentions.
- Judging gives 30% to the AI workflow and 25% to accuracy. A more automated pipeline helps only if the facts it produces are checked.
- In our Vienna run, M3.1 Flash at
reasoning_effort: "low"wrote an eight-era script in 9 calls for $0.0087. The Skill estimated another $0.69 for narration and illustrations before spending anything. - The script still had errors you could see on screen: dates, a misplaced card, and a modern city boundary on a 1910 era. Budget time for fact-checking, not for generation.
What AI City Remix asks for
The brief is deliberately open: “Pick a City. Let AI Tell Its Story.” Any real place on Earth counts, from a megacity to a village, and any angle works: history, food, a street, the metro, data, the future. Tools count too. If you build a workflow, Skill or map animator, you can enter it with a 60–180 second demo video of it telling a city’s story.
The AI City Remix overview, captured 2026-10-23: $11,500 prize pool, submissions open October 22, and the three core requirements (length, model, subject).
The rules that constrain a build are short, so here they are in one place:
| Rule | What the event page says (checked 2026-10-23) |
|---|---|
| Window | Opens Oct 22, 00:00 UTC; uploads close Oct 28, 23:59 UTC; results Oct 31 |
| Format | 60–180 seconds, MP4, 720p or higher, Chinese or English with subtitles in the video |
| Model | Directed with MiniMax M3.1 flash through SandBase; you tick a declaration when uploading |
| Subject | Any real place and any angle; tools and workflows count when shown in a demo video |
| Content | Original work; no copyrighted film or music, no real living people; maps must follow the law |
| Entries | As many as you like; one prize per account (the highest) |
| Review | Each new entry is reviewed within a day; you can edit or withdraw until the deadline |
Two smaller mechanics matter if you want reach. From October 23 to 29, five entries are picked as “City Stories of the Day” at 00:00 UTC, each with a short review. Each day you can also claim $5 in creation credits on the event page. At our morning capture the page described this as 100 codes a day from October 22 to 28, one per account, valid for 7 days; by the evening it described them only as daily creation credits. Approved entries also light up their city on the event map, and the first approved entry for a city makes its author that city’s “first storyteller”. When we captured the page there was one entry, Paris: Rings of a City, so most cities were still open.
The judging weights decide the build
Most creative contests reward the film. This one puts 30% on the workflow behind it, which changes what is worth optimizing.
The Rules tab, captured 2026-10-23: prizes are paid as SandBase balance (not withdrawable, valid 12 months), and judges come from MiniMax, SandBase and the community.
| Criterion | Weight | What the page says it rewards | What that means in practice |
|---|---|---|---|
| AI workflow | 30% | Less human intervention, more automation; new workflows, Skills or tools; open source scores extra | Script the pipeline end to end and publish it |
| Accuracy | 25% | Facts, places, names and dates; reliable sources | Keep a source for every on-screen claim |
| Story and craft | 25% | Visuals, maps, pacing, a city with warmth; a moving “me and this city” scores extra | One clear angle beats ten facts |
| Reach | 20% | Views and engagement elsewhere, plus the judges’ view of its potential | Post the film where your audience already is |
The tension sits between the first two rows. Fewer manual steps scores on workflow, while every unchecked model sentence is a risk to accuracy. Our read is that the best entries automate the checking too, not just the writing. The chronicle-ink Skill points in that direction: it binds every caption to claims cross-checked across publishers before anything renders. An open-sourced pipeline that does the same for your own angle covers both criteria at once.
Pick a starting Skill
The event offers seven ready-made Skills in three directions. There were six when we first captured the page; city-grows-3d was added later on October 23. You don’t have to use any of them; the FAQ says any tool chain works as long as M3.1 Flash directs it. They are still the fastest way to a valid entry, and they differ more than the thumbnails suggest.
| Skill | Direction | What it produces | Watch out for |
|---|---|---|---|
| city-through-time | Through time | Narrated 1080p map film (MP4) of a living city’s growth on today’s OSM map | Outlines are reconstructions; living cities only |
| rome-through-time | Through time | 3D city scene across eras, interactive demo, 1080p film | Built-in film is 25 seconds |
| chronicle-ink | Through time | Fact-checked 3D life-story film from OSM buildings and Wikidata landmarks, with a bilingual fact report | Needs well-mapped OSM buildings |
| city-grows-3d | Through time | Narrated 1080p 3D film in which each building rises in its recorded construction year (OSM footprints plus Colouring Cities building-age data) | Needs open building-age data; elsewhere most buildings rise in grey |
| manhattan-miniature | City in 3D | React and Three.js miniature with day/night and landmark flights | Makes no model calls; the map is artistically compressed |
| architecture-night-day | Architecture in light | Detailed 3D landmark buildings, night-to-day slider, 1080p film | Built-in film is 20 seconds |
| stone-stars-city | Architecture in light | Storybook 3D miniature around one landmark, with a scored film | Built-in film is 24 seconds |
The last column is the practical catch. The three 3D scene Skills record films of 20–25 seconds, well under the 60-second minimum. You will need to extend chapters, chain several shots or add a narrated section to qualify. Narrated film Skills such as city-through-time and chronicle-ink are built around a full-length script, which is why we tested one of them.
The city-through-time Skill page (v0.1.1), captured 2026-10-23: the one-sentence agent prompt, then resolve, media (MiniMax Speech 2.8 HD and Qwen Image 3 after a cost estimate) and render.
Where MiniMax M3.1 Flash fits
In these pipelines M3.1 Flash is the director, not the camera. It writes text: the era plan, narration lines, coordinates, OSM references and illustration prompts. Geometry comes from OpenStreetMap, the voice from a speech model, the pictures from an image model, and every frame from code. The city-through-time Skill states this split directly, and it is the right mental model for any entry.
That split is why a cheap text model is a sensible director. MiniMax lists M3.1 Flash at $0.15 per million input tokens and $0.60 per million output tokens, with a 1M-token context window. Thinking cannot be switched off, and omitting the effort field means max. We cover the model itself, including its effort levels and vendor benchmarks, in our MiniMax M3.1 Flash API and pricing guide.
The Skill’s own instructions add one operational rule to repeat: keep each request small. Write the top level first, then one era per request at low effort, because sync requests that run past about two minutes are dropped. Our comparison test showed why. At default effort, M3.1 Flash spent its entire 16,000-token budget on reasoning in 7 of 9 era requests and returned no JSON at all. The details, and how GLM-5.3-Flash, DeepSeek V4.1 Flash, Gemini 3.8 Flash and Claude Sonnet 5.5 handled the same task, are in our city-script model test.
Our Vienna run, step by step
We ran city-through-time v0.1.1 locally on October 23 for Vienna, which had no entry at the time. A small Python script followed the Skill’s recipe: one request for the top level and an eight-era plan, then one request per era, all to minimax/minimax-m3.1-flash through SandBase with reasoning_effort: "low". Then we ran the Skill’s three scripts as documented: resolve, media in plan-only mode, and film in stills mode.
Our run log, 2026-10-23, rendered from the raw logs: 9 M3.1 Flash calls in 133 seconds for $0.0087; three wall outlines fell back to the model’s polygons; media estimated at $0.69 with nothing spent.
A few numbers from the log stand out:
- Script cost was a rounding error. Each era request used about 2,370 prompt tokens and 463–1,570 completion tokens, at $0.0006–$0.0013 per call. Most of the prompt is the Skill’s format reference, which goes into every request.
- Media is the real bill, and the Skill shows it first. Without
--confirm,media.mjspriced 10 narration clips (1,671 characters, about $0.167) and 13 illustrations (about $0.52) and generated nothing. The Skill page puts a typical 8–9 era story at about $0.5–0.7. - OSM did not know the wall by the model’s name. The model referenced
Wiener Stadtmauerfor the three walled eras. OpenStreetMap returned 0 points for it, so the film fell back to the model’s hand-written polygons. The Ringstraße reference worked (554 OSM lines), and so did the modern boundary. - Without narration the draft film runs 76 seconds. Each era defaults to 7.5 seconds until its audio exists, and then runs for its narration plus about 1.6 seconds. That lands inside the 60–180 second window, but check the final length after generating audio.
The stills are where the script’s quality becomes visible. The medieval frame looks right at first glance: real streets lit inside a compact outline of about 1.5 km².
Still at 30 seconds from our draft render: the outline is the model’s fallback polygon, drawn south of the river, while the subtitle says the settlement lay north of the Danube.
Read the subtitle against the map and the problems start. The narration says the town received town rights from “Duke Henry II Jasomirgott in 1143” and sat “north of the Danube”. Wikipedia’s History of Vienna has Henry II making Vienna his capital in 1155, Austria becoming a duchy in 1156, and Vienna receiving city rights in 1221. We found no source for town rights in 1143, and Henry II only became duke in 1156. The old town is on the river’s right (south) bank, which is also where the model drew its own outline.
Still at 50 seconds: the “A New Parliamentary Vienna” card is pinned about 11 km north of the Parliament building, and the subtitle merges two different expansions.
Here is everything we flagged before paying for media:
| Era | What M3.1 Flash wrote | What the sources say | Fix |
|---|---|---|---|
| Roman | Label “c. 15 BC”; narration “around the turn of the first century BC” | Vindobona: Legio XIII Gemina built the legionary camp around AD 97 | Change the year and the line |
| Medieval | Town rights from Duke Henry II in 1143; north of the Danube | Capital 1155, duchy 1156, city rights 1221; old town on the south bank | Rewrite around 1155 or 1221 |
| 1857 | Expansion “brought nineteen suburbs inside Vienna’s limits” | The Vorstädte (districts 2–9) joined in 1850; the 1857 decree ordered the walls demolished (Ringstraße) | Split into two claims |
| 1857 | Parliament card at 48.3068, 16.3638 | Austrian Parliament Building: 48.2081, 16.3587 (10.99 km away) | Take coordinates from Wikidata |
| c. 1910 | Outline from today’s Wien administrative boundary | Vienna’s boundary changed in 1938 and was settled in 1954, per History of Vienna | Use a period outline, or merge the era |
| c. 500 BC | A named Celtic tribe on the south bank | We could not confirm this in a source we trust | Source it or cut it |
None of this was caught by the validator, and it isn’t meant to be. resolve.mjs checks format and fetches geometry; the Skill’s own failure-boundaries section warns that “the language model gets facts and coordinates wrong”. In our run, the format checks passed and six items still needed a fix or a source.
A fact-check pass that fits the judging
The cheapest point to fix a line is before media.mjs --confirm. After that, each wrong sentence means deleting its mp3 and paying for the clip again. Here is the pass we would run on any entry:
- Ask for sources, then check them yourself. Have the director model return a source URL next to every date and name. A link that does not contain the claim counts as no source.
- Take coordinates from data, not from memory. Wikidata’s coordinate property (P625) gave us exact landmark positions in one request each. Replace every
events[].atwith it. - Check OSM names before trusting a fallback. If
resolve.mjswarns “too sparse (0 points)”, the outline on screen is the model’s drawing. Find the real OSM name or a boulevard that follows the old line. - Watch for modern boundaries on old eras. An administrative boundary is today’s shape. Using it for 1910 makes the film claim growth that had not happened yet.
- Render stills at the risky eras.
film.mjs --stillscosts nothing but CPU, and a wrong card position is obvious in a frame that no JSON check will catch. - Automate the pass and publish it. A script that does steps 1–4 is exactly what the 30% workflow criterion rewards, and open source scores extra.
Scope of what we did: one city, one Skill, one run of nine calls on one day. We did not generate audio or images, render the full film or submit an entry. The error list is specific to this story. Expect different errors for your city, not zero.
FAQ
What is AI City Remix?
A SandBase city-story video challenge with an $11,500 prize pool, running October 22–28, 2026, with results on October 31. Entrants pick any real place and submit a 60–180 second MP4 with subtitles, directed with MiniMax M3.1 Flash through SandBase.
Do I have to use one of the official Skills?
No. The event FAQ says any tool chain works as long as M3.1 Flash directs it. The Skills are the quickest route to a valid entry, and the map-film Skills already produce full-length films.
How much does an entry cost to make?
In our Vienna run, writing the script with M3.1 Flash cost $0.0087 across nine calls. The Skill’s estimate for narration and illustrations was $0.69, and the Skill page gives about $0.5–0.7 for 8–9 eras. Rendering runs locally on the CPU. Re-generating clips after late fact fixes adds to that.
Can I enter a tool instead of a film?
Yes. A workflow, Skill or tool counts if you submit a 60–180 second video of it telling a city’s story and link the source. Open source scores extra under the AI workflow criterion.
How are prizes paid?
As SandBase balance within 7 working days of the results. The balance is not withdrawable and stays valid for 12 months. Each account can win one prize, its highest.
AI City Remix rewards a pipeline you can trust more than a pipeline that is merely fast. M3.1 Flash makes the writing step almost free, which leaves your time for the part judges weigh just as heavily: making every date, name and pin on screen true. Pick a city, run the Skill, and check the stills before you pay for a single clip.