<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Meridian Labs]]></title><description><![CDATA[Meridian Labs]]></description><link>https://meridianlabs.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6aabc2615f89699784343f42/0ffa989e-3b66-4d95-89cf-074c4f8a8d2b.png</url><title>Meridian Labs</title><link>https://meridianlabs.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 22:04:34 GMT</lastBuildDate><atom:link href="https://meridianlabs.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[I built a plain-text "art director" so my AI images stop changing when I edit them]]></title><description><![CDATA[If you make images with AI, you know the specific pain: the first generation is easy. Editing it is where everything falls apart.
I make YouTube thumbnails and playlist covers. I'd get a result I like]]></description><link>https://meridianlabs.hashnode.dev/i-built-a-plain-text-art-director-so-my-ai-images-stop-changing-when-i-edit-them</link><guid isPermaLink="true">https://meridianlabs.hashnode.dev/i-built-a-plain-text-art-director-so-my-ai-images-stop-changing-when-i-edit-them</guid><category><![CDATA[AI]]></category><category><![CDATA[chatgpt]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[image generation]]></category><dc:creator><![CDATA[Meridian Labs Software]]></dc:creator><pubDate>Thu, 17 Sep 2026 10:42:48 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6aabc2615f89699784343f42/03539215-4f00-4eaf-b067-c08fb83df956.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you make images with AI, you know the specific pain: the first generation is easy. Editing it is where everything falls apart.</p>
<p>I make YouTube thumbnails and playlist covers. I'd get a result I liked, ask to change one small thing — "make the jacket blue" — and get back a completely different picture. New face. New background. New lighting. The one thing I asked for, plus ten I didn't.</p>
<p>After the hundredth time, I realized the problem isn't the model — it's the prompt. When you say "change the jacket," the model has no idea what you want to <em>keep</em>, so it re-rolls the whole scene. The fix is to spell out, every time, what stays locked and what changes, in language the model actually follows.</p>
<p>That's tedious by hand, so I turned it into a plain-text bundle you paste into ChatGPT or Claude. You describe what you want; it writes the <em>direction</em> — one ready-to-paste prompt that says exactly what to preserve and what to change. No code, no API, nothing to install.</p>
<p>Clearest example — same street photo, one instruction ("add falling snow"):</p>
<p><a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvbsk6v790ec8rt8i0hsr.jpg"><img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvbsk6v790ec8rt8i0hsr.jpg" alt="snow before and after" style="display:block;margin:0 auto" /></a></p>
<p>The snow appears; the houses, the road, the parked vans stay exactly as they were. Most tools hand you a brand-new street.</p>
<p>It can also diagnose a render that came out wrong — what's off, why, what to change, and what to keep:</p>
<p><a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frhib600hcsniv5w13foh.gif"><img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frhib600hcsniv5w13foh.gif" alt="diagnosis panel" style="display:block;margin:0 auto" /></a></p>
<p><strong>How it works (no magic):</strong> it's plain-text reasoning, not a model or an integration. It works out how much detail a request needs, separates what's immutable from what you're changing, and phrases the result for the renderer (ChatGPT / GPT Image by default). Because ChatGPT re-renders the whole frame instead of inpainting, the trick is to restate the locked parts explicitly.</p>
<p><strong>Honest limits:</strong> it's tuned and tested on ChatGPT / GPT Image; the Midjourney, Gemini, Ideogram and FLUX profiles are starting points, not verified. And no prompt makes a whole-frame renderer do true local edits — it's a strong mitigation, not a guarantee.</p>
<p>The free version is on GitHub and takes about a minute to try. There's a $19 one-time Pro bundle with the full preservation system, the edit-state ledger, precise single-element edits and deep diagnosis — but the free one shows the whole idea.</p>
<p><strong>Free on GitHub:</strong> <a href="https://github.com/leewilliam200/visual-director-lite">https://github.com/leewilliam200/visual-director-lite</a></p>
<p>Would genuinely love feedback — especially where the "keep everything else the same" logic breaks for you. What's the one thing you always want an AI editor to preserve that it never does?</p>
]]></content:encoded></item></channel></rss>