{"slug": "how-i-built-a-free-image-to-prompt-tool-with-next-js-and-a-vision-model", "title": "How I Built a Free Image-to-Prompt Tool with Next.js and a Vision Model", "summary": "A developer built ImagePromptNow, a free tool that uses a vision-language model to generate detailed prompts from uploaded images, enabling users to recreate styles in AI art platforms like Midjourney and Stable Diffusion. The tool processes images through a structured pipeline that outputs subject, style, lighting, and composition details, and includes localization in six languages for broader reach. The project is deployed on a VPS with custom fixes for SSL renewal issues and Next.js monorepo configuration.", "body_md": "Recently, I kept hitting the same wall in AI art: I'd find an image with a style I loved, but recreating it in Stable Diffusion or Midjourney meant guessing at the prompt for far too long. Writing prompts from scratch is slow and inconsistent.\n\nSo I built the reverse: a tool where you upload an image and get a detailed, ready-to-use prompt back. This post walks through how it works and the decisions behind it.\n\nLive version: [ImagePromptNow](https://imagepromptnow.com)\n\nInstead of prompt → image, go image → prompt. Feed a picture into a vision-language model, and format its output into a prompt describing the subject, style, lighting, and composition — something you can paste straight into Midjourney, Flux, Stable Diffusion, or DALL-E.\n\nThe whole product is really just three things:\n\nNothing exotic. The interesting parts were the prompting and the deployment, not the framework.\n\nThe naive approach — \"describe this image\" — gives you a caption, not a prompt. A caption reads like \"a man sitting on a yellow swing.\" A prompt needs structure: subject, setting, style, lighting, camera, mood.\n\nThe fix was instructing the model to return the description in a specific order and level of detail, then post-processing it into a clean prompt. I also expose a \"structured breakdown\" so users can see how each element maps back to the image, which makes it easier to tweak specific parts.\n\nA few lessons:\n\nI added next-intl and 6 languages sooner than most people would. The payoff showed up fast in search: non-English pages started ranking within days, in markets where competitors only ship English. If you're building anything content-adjacent, localization is underrated distribution.\n\nThe site runs on a CWP7pro VPS behind Apache with a Next.js reverse proxy. One sharp edge: AutoSSL renewals would wipe the proxy vhost config and take the site down with a 403. The fix was a small watchdog cron that re-inserts the ProxyPass block if it goes missing. Not glamorous, but it turned a recurring outage into a non-issue.\n\nAnother one specific to Next.js on a monorepo: `apps/web`\n\nhad `\"type\": \"module\"`\n\nin its package.json, so any helper Node scripts inside it had to use the `.cjs`\n\nextension or they'd throw ESM errors.\n\nI made three deliberate choices that shaped everything:\n\nThese aren't just nice-to-haves — they're the product. The friction-free path is what makes people actually use and share a tool like this.\n\nThe most requested feature so far is an inline-editable prompt with the ability to \"lock\" certain visual elements before regenerating — keep the subject, change the style, that kind of thing. That's next on my list.\n\nIf you want to try it, it's here: [ImagePromptNow](https://imagepromptnow.com) — no signup, and I'd genuinely welcome feedback, especially on prompt quality versus what you'd write by hand.\n\nThanks for reading!", "url": "https://wpnews.pro/news/how-i-built-a-free-image-to-prompt-tool-with-next-js-and-a-vision-model", "canonical_source": "https://dev.to/yelabbassidev/how-i-built-a-free-image-to-prompt-tool-with-nextjs-and-a-vision-model-4dp3", "published_at": "2026-07-18 00:45:28+00:00", "updated_at": "2026-07-18 01:28:21.492214+00:00", "lang": "en", "topics": ["artificial-intelligence", "computer-vision", "ai-tools", "developer-tools", "generative-ai"], "entities": ["ImagePromptNow", "Next.js", "Stable Diffusion", "Midjourney", "DALL-E", "Flux", "CWP7pro", "AutoSSL"], "alternates": {"html": "https://wpnews.pro/news/how-i-built-a-free-image-to-prompt-tool-with-next-js-and-a-vision-model", "markdown": "https://wpnews.pro/news/how-i-built-a-free-image-to-prompt-tool-with-next-js-and-a-vision-model.md", "text": "https://wpnews.pro/news/how-i-built-a-free-image-to-prompt-tool-with-next-js-and-a-vision-model.txt", "jsonld": "https://wpnews.pro/news/how-i-built-a-free-image-to-prompt-tool-with-next-js-and-a-vision-model.jsonld"}}