Bolt.new generates full-stack apps fast, but image tags point at placeholders or broken URLs. One CLI command replaces them with real Unsplash photos.
You built an app with Bolt.new, exported the code, and the <img> tags point at:
images.unsplash.com/photo-... — hardcoded Unsplash URLs from training data (may break or mismatch)source.unsplash.com/random/800x600 — deprecated mid-2024, returns 503placehold.co/600x400 — gray placeholder rectanglepicsum.photos/800/600 — random photo that doesn't match your contentuv tool install tteg
# Replace each placeholder with a real photo:
tteg save "restaurant interior" ./public/hero --orientation landscape
tteg save "chef preparing food" ./public/about --orientation landscape
tteg save "happy customer dining" ./public/testimonial
If Bolt generated a full landing page with multiple image slots, fix them all in one pass:
cat > images.json << 'EOF'
[
{"query": "modern restaurant interior", "output": "./public/hero", "orientation": "landscape"},
{"query": "team of chefs cooking", "output": "./public/team", "orientation": "landscape"},
{"query": "food plating close up", "output": "./public/feature-1"},
{"query": "happy diners at table", "output": "./public/testimonial"}
]
EOF
tteg batch images.json
If you're still in Bolt's editor and want to reference real image URLs without downloading:
# Just paste this URL pattern into your img src:
https://tteg-api-53227342417.asia-south1.run.app/search?q=restaurant+interior&n=1
# Returns JSON with image_url you can use directly
# No API key. No headers. CORS enabled.
<img
src="https://source.unsplash.com/
random/1200x800"
alt="Hero"
/>
<img
src="/hero.jpg"
alt="modern restaurant with
warm ambient lighting"
/>
The ./public/hero.jpg is a real Unsplash photo committed to your repo. It loads reliably, matches your content, and has a descriptive alt attribute.