AI TOOL · INTERNAL · CASE STUDY

Self-hosted CDN with AI that names your images for you.

Cloudflare R2 media CDN with Gemini Vision-powered auto-renaming, upload presets, and per-asset analytics.

Every agency has the same problem: a media library full of IMG_4821.jpg files that nobody can find. Zippy CDN solves the naming problem at upload time — Gemini Vision reads the image and generates a descriptive, SEO-friendly filename before it ever lands in storage.

Build something like this
WHAT WE BUILT

R2 storage. AI naming. Built-in analytics.

AI Renaming
Gemini Vision Reads Every Upload

When an image is uploaded, Gemini Vision analyzes the content and generates a descriptive SEO-friendly filename — for example, sunset-aerial-photo-santa-teresa-costa-rica.jpg. The IMG_4821.jpg problem is solved permanently, at upload time.

Upload Presets
One Click. All Transforms.

Define named presets — "blog-hero", "product-thumbnail", "og-image" — with target dimensions, format (WebP or AVIF), quality settings, and CDN path prefix. One click applies all transformations at upload time via Cloudflare Workers.

Per-Asset Analytics
View Count, Bandwidth, Referrers

Every asset in the CDN has its own analytics row: view count, bandwidth consumed, and referring domains tracked. Surfaced in a Next.js dashboard — see which images are driving traffic and which are sitting idle.

Bulk Operations
Rename, Convert, Delete in Batches

Bulk rename with AI across a folder, batch format conversion to WebP or AVIF, bulk delete with confirmation modal. Operations run as background jobs — the dashboard shows progress without blocking the UI.

AI & INFRASTRUCTURE

How the auto-renaming works.

STEP 01
IMAGE UPLOAD

File lands in a staging bucket on Cloudflare R2. The upload triggers a Cloudflare Worker that passes the image binary to the Gemini Vision API for content analysis.

STEP 02
GEMINI VISION ANALYSIS

Gemini Vision describes the image content and generates a slug-formatted, SEO-friendly filename. The model is prompted to be specific: subject, location, context — not generic labels like "photo-of-person.jpg".

STEP 03
TRANSFORM + STORE

The Worker applies the upload preset transformations — resize, format conversion, quality — and moves the processed file to the production bucket under the AI-generated filename. The CDN URL is returned to the dashboard.

STACK

What it runs on.

Gemini Vision API
Image analysis + naming
Cloudflare R2
Object storage
Cloudflare Workers
Image transformation
Next.js
Dashboard UI
Supabase
Asset metadata + analytics
INTERNAL TOOL

Done with the IMG_4821.jpg
problem?

Internal CDN with AI naming built on Cloudflare R2. We can build a version scoped to your stack.

Start the conversation →