---
title: "Media Studio: photos, banners and review videos from one link, AI photo match from 72 to 89"
url: https://phatdev.net/en/case-studies/media-studio-review-content
lang: en
updated: 2026-11-08
alternate:
  vi: https://phatdev.net/vi/case-studies/media-studio-review-content
markdown: https://phatdev.net/en/case-studies/media-studio-review-content.md
---

# Media Studio: photos, banners and review videos from one link, AI photo match from 72 to 89

> Media Studio is a tool I built to produce review content for tech devices: photos, banners, voice-overs and video, all callable through an API. I let a machine score the AI photos, built banners in layers and gave every engine a fallback.

- Client: Media Studio (my own tool, not a client)
- Industry: Content automation, AI images and video
- Year: 2026
- Role: Planning, architecture, operations and testing (code written with Claude Code)
- Duration: Since about June 2026, version 1.15.50 on 7 Nov 2026, in daily use
- Stack: Node.js, Express, Remotion, FFmpeg, GPT Image 2, Gemini

## Key results

- 4,721: images generated in the library (18 Oct 2026)
- 9: tools in one dashboard, plus a library
- 72 → 89-92: match score against the original for studio photos after self-scoring (26 Aug 2026)
- 10/10: test images where UltraSharpV2 beat Real-ESRGAN at upscaling (17 Oct 2026)

## Background

Media Studio is a tool I built to produce review content for tech devices: product photo sets, banners, cover images, benchmark charts, scripts, voice-overs and videos. It is my own project, so no client is named here. It runs on a Mac at home, reached remotely over HTTPS with a login, and every feature can be called through a REST API so that article-writing pipelines fetch their own photos and videos.

The first versions came out around June and July 2026. By 7 Nov 2026 the tool was at version 1.15.50 and still in daily use. Images are drawn by GPT Image 2 through Codex, so no separate API key is needed, and when the quota runs out it switches to Gemini's Nano Banana.

Who did what: I did the planning, set the direction, designed the architecture, ran it and tested it. Claude wrote the code to that plan and architecture, Gemini (through Antigravity) refined the interface, and Codex reviewed the code and pointed out bugs.

![The Media Studio dashboard: the tools Quick create, Product photos, Banner, Models, Remove background, Upscale, Scripts, Audio, Video and Library](https://phatdev.net/uploads/case/media-studio-review-content/dashboard-1920.webp)

## Challenge

A device review needs a lot of pieces: a photo set in one style, a cover, a comparison banner, benchmark charts, a script, a voice-over and a video. Each lives in a different tool, so making one article means jumping back and forth.

Three things break most often. The AI redraws the keyboard, the ports and the logo differently from the real device. Vietnamese text on images often loses its accents. And benchmark figures usually have to be looked up by hand, which invites mistakes.

There are three constraints. One person doing the work. Image engines have quotas and fail when they run out. And review content must not invent numbers, so if there is no real figure, the scene has to go.

## How it was done

### 1. Let a machine score the AI photos, then redraw

Instead of trusting my eye on every picture, I compare each AI-drawn photo with the original photo of the device. A second AI (currently Gemini) scores the shape, screen, key letters, ports and logo, and gives a match score from 0 to 100. If it is below the bar of 85, the photo is redrawn, for 2 to 4 rounds, and the highest-scoring version is kept, not the last one drawn.

![Diagram of five steps: draw, compare with the original, good enough, redraw, keep the best](https://phatdev.net/uploads/case/media-studio-review-content/score-loop-en-1920.webp)

### 2. Banners built in layers

I rebuilt banners in layers: the AI draws the background and the headline, while the photo of the device is the original, pasted in afterwards, so it cannot be drawn wrong. The Vietnamese text is read back by OCR. If one accent is wrong, the banner is redrawn or switched to plain HTML text.

### 3. Every engine has a way out

When the main image engine runs out of quota, the following images go straight to the backup engine until the quota resets, with no wasted failing requests. If both run dry, the app returns a 503 error with a wait time. Text and image-reading jobs (scoring, writing scripts) run on Gemini, so the drawing quota is kept for drawing only.

Other jobs have fallback chains too. Upscaling: UltraSharpV2, then Real-ESRGAN, then Lanczos. Background removal: BiRefNet, then Photoshop, then rembg, then macOS Vision. A cut-out is treated as broken if it loses more than 6% of the device body, has closed holes, or breaks into several pieces, and then the next engine is tried.

![Diagram: one product link goes into Media Studio and comes out as photos, banners, video and voice, all callable through a REST API](https://phatdev.net/uploads/case/media-studio-review-content/pipeline-en-1920.webp)

### 4. Real numbers only

Charts and benchmark scenes are built from NotebookCheck CSV files, and 3D render scores come from Blender Open Data (462 GPUs and 1,123 CPUs, CC0 licence). No number means no scene, and nothing is made up. The voice-over is timed word by word with speech recognition running on the machine, so a spec appears right when the narrator mentions it.

### 5. Turn it into an API for pipelines

Long jobs such as a review photo pack (4 to 5 minutes) or a video render are easily cut off mid-way. So the API has background jobs and a key that stops duplicates: calling again with the same key returns the old result and draws nothing new. The API is locked until at least one key has been created. Since 22 Oct 2026, one product link produces 5 video versions for YouTube, Shorts, Facebook, Reels and TikTok, from one script and one voice reading. An automated suite of 48 checks runs after every change and uses no image-drawing quota.

## Results

The numbers below come from the project page, the changelog and the tool's own documentation, with the dates they were recorded. The photo match score is given by an AI, not by a person.

**Match score against the original, studio photos**

| Metric | Before | After |
| --- | --- | --- |
| AI-drawn studio photos, scale 0 to 100 | 72 points | 89 points |

**Broken cut-outs across 23 test images**

| Metric | Before | After |
| --- | --- | --- |
| Images with holes when using a single engine (rembg) | 5 images | 0 images |

Studio photos went from 72 to between 89 and 92 match points once the self-scoring and fixing loop was in (26 Aug 2026). The library held 4,721 images on 18 Oct 2026, in one dashboard with 9 tools and a library. When I switched to UltraSharpV2 for upscaling (16 to 17 Oct 2026), it beat Real-ESRGAN on 10 out of 10 test images, with a PSNR (pixel accuracy) higher by 2.7 to 4.9 dB, and it kept key letters and chart text correct.

Two things I have not done. I have not measured the time or cost saved compared with doing it by hand, so there is no such number. And 4,721 is the number of images generated, not the number used: many are discarded test versions.

## Lessons

Let a machine grade before a person looks. An automatic scoring round turns "the AI photo looks fine" into a number you can track, and it is why studio photos reached 89 to 92.

Do not let the AI redraw what must not be wrong. Pasting the original device photo onto an AI-drawn background gives a more faithful result than asking the AI to draw the device too.

Every engine needs a way out. Quotas run dry without warning, so switching engines has to be automatic, not the job of whoever is waiting.

Real numbers or nothing. For review content, a scene without a figure gets dropped, which beats a good-looking scene that is wrong.

Long jobs must run in the background and a repeat call must not create a duplicate. These two small details decide whether an automated pipeline runs smoothly.

## Need something similar?

If you produce many images, banners or videos from a repeating template and want to plug that into your own writing workflow, send me a few lines. I will look at your current process first, then say plainly which parts a machine can do and which need a person to approve.

- See the project page: https://phatdev.net/en/projects/media-studio.md

## More case studies

- [IGA Social: 303 clips built, 293 on YouTube, and a week of Facebook posts from one button](https://phatdev.net/en/case-studies/iga-weekly-content-ai.md)
- [Tan Doanh: a custom theme, a PC build tool and installments, mobile PageSpeed from 65 to 96](https://phatdev.net/en/case-studies/tandoanh-theme-buildpc.md)
- [IGA: 5,256 gemstone products on a new design, mobile speed from 61 to 99, page addresses kept](https://phatdev.net/en/case-studies/iga-website.md)
