<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: chen mensen</title>
    <description>The latest articles on DEV Community by chen mensen (@chen_mensen_ac0fc78dae2a4).</description>
    <link>https://dev.to/chen_mensen_ac0fc78dae2a4</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2298631%2F97358bae-a614-4cc4-9869-b290b676b0ef.png</url>
      <title>DEV Community: chen mensen</title>
      <link>https://dev.to/chen_mensen_ac0fc78dae2a4</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chen_mensen_ac0fc78dae2a4"/>
    <language>en</language>
    <item>
      <title>I Stopped Asking One Prompt to Build the Whole AI Video</title>
      <dc:creator>chen mensen</dc:creator>
      <pubDate>Sun, 04 Oct 2026 06:43:58 +0000</pubDate>
      <link>https://dev.to/chen_mensen_ac0fc78dae2a4/i-stopped-asking-one-prompt-to-build-the-whole-ai-video-3mnd</link>
      <guid>https://dev.to/chen_mensen_ac0fc78dae2a4/i-stopped-asking-one-prompt-to-build-the-whole-ai-video-3mnd</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;For two-person AI video scenes, I now split the work into two passes: approve a still image first, then animate only that composition. It makes failures easier to diagnose and reduces wasted video generations.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎬 Why the all-in-one prompt kept failing
&lt;/h2&gt;

&lt;p&gt;I used to put everything into one prompt: two people, clothing, background, camera, props, gestures, and motion. When the result failed, I could not tell whether the problem came from the starting composition or the animation.&lt;/p&gt;

&lt;p&gt;Two-person scenes multiply the failure points. A model has to keep two faces separate, preserve left/right positions, render hands, and leave enough empty space for movement.&lt;/p&gt;

&lt;h2&gt;
  
  
  🖼️ Pass one: lock the still frame
&lt;/h2&gt;

&lt;p&gt;I start with a simple scene: two distinct performers, a plain background, one central prop, and soft light. Before moving on, I check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;left/right order&lt;/li&gt;
&lt;li&gt;separation between the performers&lt;/li&gt;
&lt;li&gt;faces, hands, clothes, and props&lt;/li&gt;
&lt;li&gt;room for motion&lt;/li&gt;
&lt;li&gt;the final aspect ratio&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the still is wrong, I regenerate the still. Video credits do not need to be part of that debugging loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  🕺 Pass two: describe only movement
&lt;/h2&gt;

&lt;p&gt;The second prompt does less. I ask for subtle head movement, alternating hand gestures, natural breathing, and a steady camera. Fast turns, crossed arms, and complicated choreography can wait until the stable version works.&lt;/p&gt;

&lt;p&gt;I tested this structure with an orange-studio duo workflow in &lt;a href="https://hotellobby.org/" rel="noopener noreferrer"&gt;Hotel Lobby AI&lt;/a&gt;. The site separates reference-image preparation from video generation, which fits the way I now debug these clips. It does not include an original song or guarantee exact choreography or lip sync, so I treat audio and final editing as separate steps too.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧪 Keep a tiny generation log
&lt;/h2&gt;

&lt;p&gt;For each attempt, I record the model, aspect ratio, duration, reference-image version, motion prompt, and the main defect. Then I change one variable. This is boring in the best way: after a few runs, successful setups become reusable instead of accidental.&lt;/p&gt;

&lt;p&gt;Anyone else using a still-first workflow for multi-person image-to-video? What has helped you keep identities stable?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Treat an AI video prompt as a versioned test case</title>
      <dc:creator>chen mensen</dc:creator>
      <pubDate>Sat, 03 Oct 2026 07:36:47 +0000</pubDate>
      <link>https://dev.to/chen_mensen_ac0fc78dae2a4/treat-an-ai-video-prompt-as-a-versioned-test-case-4al5</link>
      <guid>https://dev.to/chen_mensen_ac0fc78dae2a4/treat-an-ai-video-prompt-as-a-versioned-test-case-4al5</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;A generated clip is easier to review when its intent is written down before generation. Keep a small scene record, vary one input at a time, and distinguish a usable take from a visually impressive one. This is a workflow proposal, not a benchmark or a claim of deterministic generation.&lt;/p&gt;

&lt;p&gt;For developers preparing short product demos, the difficult part is often the handoff: a clip looks attractive in the generator, then fails when you add the real caption or cut it into a sequence. The prompt is only one piece of that handoff. Crop, subject continuity, timing, and the intended edit matter too.&lt;/p&gt;

&lt;p&gt;&lt;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%2F82eapqa2rofa8ifjbn38.png" class="article-body-image-wrapper"&gt;&lt;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%2F82eapqa2rofa8ifjbn38.png" alt="Concept illustration of scene planning and video review" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with a scene record
&lt;/h2&gt;

&lt;p&gt;A plain JSON file is enough. The following schema is local bookkeeping, &lt;strong&gt;not&lt;/strong&gt; an API payload for any video service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sceneId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cup-01"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"revision"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"subject"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"a ceramic cup on a plain table"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"motion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"a slow camera push-in"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"composition"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"subject below the future caption area"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"targetAspectRatio"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"9:16"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reviewChecks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"cup silhouette remains consistent"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"caption area stays clear"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"there is a usable continuous section"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"attemptLimit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The point is to make the acceptance criteria visible. “More cinematic” cannot tell a reviewer whether the result is ready. “The handle stays recognizable throughout the selected section” can.&lt;/p&gt;

&lt;p&gt;Do not put credentials or private reference images into a public repository. A scene record can refer to an internal asset identifier instead of embedding the asset itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate intent, provider settings, and observations
&lt;/h2&gt;

&lt;p&gt;These change for different reasons:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Record&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;Why keep it separate?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Intent&lt;/td&gt;
&lt;td&gt;Leave room for a caption&lt;/td&gt;
&lt;td&gt;Comes from the finished edit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Settings&lt;/td&gt;
&lt;td&gt;Model, supported duration, aspect ratio&lt;/td&gt;
&lt;td&gt;Depends on the selected service/model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observation&lt;/td&gt;
&lt;td&gt;Handle changes halfway through&lt;/td&gt;
&lt;td&gt;Describes one actual output&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Copying the intent into a provider's prompt is a manual translation step. There is no assumption that every provider supports the same controls. For example, &lt;a href="https://socialvideoai.com/" rel="noopener noreferrer"&gt;Social Video AI's text-and-image video workspace&lt;/a&gt; exposes model-dependent settings and credit costs, then lets you preview and download a clip. The scene record above can accompany that workflow, but it does not imply an API integration, automated posting, or reproducible seeds.&lt;/p&gt;

&lt;p&gt;Reference images also do not guarantee exact preservation of a logo, product shape, or person. Treat those as things to inspect, not promises that the input enforces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the review decision explicit
&lt;/h2&gt;

&lt;p&gt;Use a small set of outcomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep:&lt;/strong&gt; a usable section meets the scene's requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trim:&lt;/strong&gt; the requirements hold only during part of the clip.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revise:&lt;/strong&gt; one identifiable problem warrants another attempt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stop:&lt;/strong&gt; the scene needs different source material or ordinary footage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A useful review note contains a reason and, when applicable, the usable interval. “Trim: opening composition works, but the cup changes shape later” helps the editor more than “version 2 looks best.”&lt;/p&gt;

&lt;p&gt;Review the beginning, middle, and end at minimum, then watch the entire selected interval. Put the actual caption over it. A clear region in a still preview may not stay clear after the camera moves.&lt;/p&gt;

&lt;h2&gt;
  
  
  Version the hypothesis, not just the filename
&lt;/h2&gt;

&lt;p&gt;If a take fails, change one meaningful cause. Keep the reference and framing while simplifying the motion, or keep the motion while changing the crop. Changing everything may produce a better clip, but it gives little evidence about why.&lt;/p&gt;

&lt;p&gt;An example naming convention is &lt;code&gt;cup-01-r02-take01&lt;/code&gt;. The revision identifies a changed instruction; the take identifies another output from that instruction. This is traceability, not determinism: repeated requests can still differ.&lt;/p&gt;

&lt;p&gt;Record the displayed credit cost before committing to another attempt. A simple planning estimate is &lt;code&gt;scenes × attempts per scene × credits per attempt&lt;/code&gt;, but costs can vary by model and settings. Recalculate when those settings change; do not treat one estimated number as a universal price.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finish in the editor
&lt;/h2&gt;

&lt;p&gt;Generation does not finish the social post. Captions, accurate branding, cuts, audio rights, and platform upload need separate checks. Sometimes trimming an existing take is more effective than generating another one.&lt;/p&gt;

&lt;p&gt;The useful artifact is not a perfect prompt. It is a scene record plus a review decision that another person can understand. Which field would you add to make that handoff easier?&lt;/p&gt;

</description>
      <category>beginners</category>
    </item>
    <item>
      <title>I stopped making my AI image prompts longer — style references helped more</title>
      <dc:creator>chen mensen</dc:creator>
      <pubDate>Mon, 20 Jul 2026 09:13:50 +0000</pubDate>
      <link>https://dev.to/chen_mensen_ac0fc78dae2a4/i-stopped-making-my-ai-image-prompts-longer-style-references-helped-more-4h2m</link>
      <guid>https://dev.to/chen_mensen_ac0fc78dae2a4/i-stopped-making-my-ai-image-prompts-longer-style-references-helped-more-4h2m</guid>
      <description>&lt;p&gt;I used to treat AI image generation like a writing problem. If the output was off, I added more words: more adjectives, more lighting notes, more camera terms, more "high quality" incantations.&lt;/p&gt;

&lt;p&gt;That worked sometimes. But for visual work, it also hit a ceiling pretty fast. The prompt got longer, the image got noisier, and I still could not explain exactly why the result felt wrong.&lt;/p&gt;

&lt;p&gt;The shift that helped me most was simple: stop relying only on text. Use references to control visual direction.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Long prompts are useful, but they are a weak way to communicate taste.&lt;/li&gt;
&lt;li&gt;Reference images help with style, composition, palette, and mood faster than extra adjectives.&lt;/li&gt;
&lt;li&gt;The best workflow is not prompt vs reference. It is prompt + reference + small batches + review.&lt;/li&gt;
&lt;li&gt;For production work, judge generated images inside the layout where they will actually appear.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why longer prompts start to fail
&lt;/h2&gt;

&lt;p&gt;Text is great for objects and actions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a product manager reviewing a dashboard on a laptop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But text is weaker for taste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;premium, modern, clean, cinematic, editorial, soft, minimal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those words mean different things to different people. They also mean different things to different models. "Clean" might produce a white SaaS landing page look. "Editorial" might push the result toward magazine photography. "Cinematic" might add dramatic shadows you did not want.&lt;/p&gt;

&lt;p&gt;So the prompt becomes a pile of corrections:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;modern but not too futuristic, clean but not empty, cinematic but not dark,
premium but not luxury, realistic but slightly stylized
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At that point, the prompt is not really a creative direction. It is a negotiation.&lt;/p&gt;

&lt;h2&gt;
  
  
  References are better at carrying visual taste
&lt;/h2&gt;

&lt;p&gt;A reference image can say things that are painful to describe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How much contrast feels right&lt;/li&gt;
&lt;li&gt;Whether the image should feel photographic or illustrated&lt;/li&gt;
&lt;li&gt;What kind of color palette is acceptable&lt;/li&gt;
&lt;li&gt;How dense the composition should be&lt;/li&gt;
&lt;li&gt;What "premium" means in this specific project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even one reference can reduce ambiguity. Three references, each labeled with a purpose, are even better:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one for lighting&lt;/li&gt;
&lt;li&gt;one for composition&lt;/li&gt;
&lt;li&gt;one for color or style&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important bit is labeling the references. A random moodboard is just another kind of noise.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow I use now
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Write the visual job first
&lt;/h3&gt;

&lt;p&gt;Before prompting, I write one sentence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a blog header for a technical article about reference-guided AI image workflows.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That sentence gives the image a job. It is easier to reject a beautiful but useless image when the job is clear.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Keep the prompt boring
&lt;/h3&gt;

&lt;p&gt;The prompt should describe subject, format, and constraints. I avoid trying to pack every aesthetic decision into text.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;editorial image, designer comparing AI image variations on a review board,
clean workspace, browser-based creative workflow, wide blog header
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Use references for taste
&lt;/h3&gt;

&lt;p&gt;This is where tools that support reference-guided workflows become useful. A tool like &lt;a href="https://krea2.io/" rel="noopener noreferrer"&gt;Krea 2&lt;/a&gt; is useful in this context because it lets the image process include prompts, image-to-image direction, references, and aspect ratio choices instead of treating the text prompt as the only control surface.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Generate small batches
&lt;/h3&gt;

&lt;p&gt;I avoid changing everything at once. One batch tests composition. Another tests style strength. Another tests crop safety.&lt;/p&gt;

&lt;p&gt;If every generation changes prompt, references, ratio, and style at the same time, you learn almost nothing from the result.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Review inside the actual layout
&lt;/h3&gt;

&lt;p&gt;Gallery view lies.&lt;/p&gt;

&lt;p&gt;An image can look good in isolation and fail as soon as it sits under a headline. It may be too busy. The focal point may be hidden on mobile. The colors may fight the CTA.&lt;/p&gt;

&lt;p&gt;So I test the image where it will live: blog header, landing page hero, social card, newsletter, or ad mockup.&lt;/p&gt;

&lt;h2&gt;
  
  
  The practical rule
&lt;/h2&gt;

&lt;p&gt;Use text for &lt;strong&gt;what&lt;/strong&gt; should be in the image.&lt;/p&gt;

&lt;p&gt;Use references for &lt;strong&gt;how it should feel&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Use layout review for &lt;strong&gt;whether it actually works&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That sounds obvious, but it changed the way I use image generation. I spend less time writing giant prompts and more time building a small visual system that can be reviewed.&lt;/p&gt;

&lt;p&gt;Anyone else using references or moodboards in their AI image workflow? Curious how you keep the outputs consistent across a batch.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>design</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I tried generating a full song from a text prompt — here's what actually works (and what doesn't)</title>
      <dc:creator>chen mensen</dc:creator>
      <pubDate>Sun, 19 Jul 2026 16:14:33 +0000</pubDate>
      <link>https://dev.to/chen_mensen_ac0fc78dae2a4/i-tried-generating-a-full-song-from-a-text-prompt-heres-what-actually-works-and-what-doesnt-592k</link>
      <guid>https://dev.to/chen_mensen_ac0fc78dae2a4/i-tried-generating-a-full-song-from-a-text-prompt-heres-what-actually-works-and-what-doesnt-592k</guid>
      <description>&lt;p&gt;I needed background music for a side project's demo video. Hiring someone was overkill, stock libraries all sounded the same, and I can't play an instrument. So I went down the "text-to-song" rabbit hole — the class of AI tools where you type a description and get back a finished track with vocals, lyrics, and production. Here's what I learned after a week of messing with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Text-to-song has quietly gotten good. A one-line prompt now returns a ~3 min track with coherent structure (intro/verse/chorus).&lt;/li&gt;
&lt;li&gt;The prompt that matters isn't the vibe words — it's &lt;strong&gt;genre + instrumentation + mood + tempo&lt;/strong&gt;, in that order.&lt;/li&gt;
&lt;li&gt;It's great for demos, placeholders, and ideation. It's &lt;strong&gt;not&lt;/strong&gt; ready to replace a composer for anything where the music is the product.&lt;/li&gt;
&lt;li&gt;Watch the licensing fine print. "Royalty-free" means different things on different platforms.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What "text-to-song" actually does
&lt;/h2&gt;

&lt;p&gt;You type something like &lt;code&gt;warm acoustic guitar ballad, male vocals, nostalgic, 80 bpm&lt;/code&gt; and the model returns a full song — not a loop, an actual arrangement with a vocal line and lyrics it wrote itself. Under the hood it's the same generative-audio wave that Suno and Udio kicked off; the newer entrants (I bounced between a few, including a free one called &lt;a href="https://flowmusic.co/" rel="noopener noreferrer"&gt;Flow Music AI&lt;/a&gt;) mostly differ in vocal quality, how much control they give you, and their licensing terms.&lt;/p&gt;

&lt;p&gt;The mental model that helped me: &lt;strong&gt;it's not a DAW, it's a slot machine you can bias.&lt;/strong&gt; You don't edit — you describe, roll, and re-roll until something lands, then nudge the prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow that actually produced usable tracks
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Lead with genre and instrumentation, not adjectives
&lt;/h3&gt;

&lt;p&gt;My first prompts were things like &lt;code&gt;emotional, cinematic, epic&lt;/code&gt;. Garbage in, garbage out — I got generic trailer music. What worked was front-loading concrete musical nouns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;lo-fi hip hop, dusty piano, vinyl crackle, mellow, 70 bpm, no vocals
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adjectives (&lt;code&gt;emotional&lt;/code&gt;, &lt;code&gt;dreamy&lt;/code&gt;) are fine as seasoning, but the genre + instruments do the heavy lifting.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Decide vocals vs instrumental up front
&lt;/h3&gt;

&lt;p&gt;Instrumental is dramatically more reliable — no lyrics to go wrong, no uncanny-valley vocals. For anything where the track sits &lt;em&gt;under&lt;/em&gt; other audio (demos, videos, podcasts), go instrumental. Only reach for vocals when the song itself is the point.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Re-roll before you re-prompt
&lt;/h3&gt;

&lt;p&gt;Same prompt, different seed = different song. Most of my "aha" tracks came from re-rolling an already-decent prompt 3–4 times, not from endlessly rewording. Reword only when the results are &lt;em&gt;consistently&lt;/em&gt; off in the same direction.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Generate long, trim later
&lt;/h3&gt;

&lt;p&gt;The models output full-length songs. For a 20-second demo bed I'd generate the whole thing and cut the best 20 seconds in any editor. Trying to prompt for a short clip usually gives you a worse full song, not a good short one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it genuinely helped
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Demo/placeholder music&lt;/strong&gt; — the killer use case. Background beds for product videos, app previews, loading screens. "Good enough and free" beats "perfect and expensive" here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ideation for actual musicians&lt;/strong&gt; — a friend who writes uses it to sketch arrangement ideas fast, then rebuilds the good ones properly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prototyping vibe&lt;/strong&gt; — testing whether a scene &lt;em&gt;wants&lt;/em&gt; jazz or synthwave before committing budget.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The honest limitations
&lt;/h2&gt;

&lt;p&gt;The stuff the marketing pages skip:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You don't get stems.&lt;/strong&gt; You get a stereo mix. Want to remix, swap an instrument, or fix one bad bar? You can't — you re-roll the whole thing and hope. This is the single biggest dealbreaker for serious use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vocals still tell.&lt;/strong&gt; Instrumentals pass easily; vocal tracks have a texture that trained ears catch. Fine for a demo, risky for release.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistency across tracks is hard.&lt;/strong&gt; Getting two songs that sound like the same "artist" is luck, not a setting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Licensing is a minefield.&lt;/strong&gt; "Royalty-free" on the tin doesn't always mean commercial-safe, and the whole category has open legal questions around training data. If it's going in something commercial, read the actual terms, don't trust the landing page.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  So who is this for?
&lt;/h2&gt;

&lt;p&gt;If you need &lt;em&gt;music-shaped audio&lt;/em&gt; to fill a gap — a demo, a placeholder, a mood test — text-to-song is genuinely useful today, and the free tiers are enough to try. If the music itself is the deliverable, treat these tools as a sketchpad, not a replacement for someone who knows what they're doing.&lt;/p&gt;

&lt;p&gt;I ended up using an instrumental lo-fi track for my demo video. Took maybe ten minutes and zero dollars. Would I ship it as a single? No. Did it solve my actual problem? Completely.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Anyone using AI-generated music in production for real — not demos? Curious how you're handling the licensing side, because that's the part that still makes me nervous.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>music</category>
      <category>productivity</category>
      <category>reviews</category>
    </item>
    <item>
      <title>I stopped writing image prompts and started dropping in reference images instead — here's what I learned</title>
      <dc:creator>chen mensen</dc:creator>
      <pubDate>Thu, 09 Jul 2026 04:59:18 +0000</pubDate>
      <link>https://dev.to/chen_mensen_ac0fc78dae2a4/i-stopped-writing-image-prompts-and-started-dropping-in-reference-images-instead-heres-what-i-c92</link>
      <guid>https://dev.to/chen_mensen_ac0fc78dae2a4/i-stopped-writing-image-prompts-and-started-dropping-in-reference-images-instead-heres-what-i-c92</guid>
      <description>&lt;p&gt;If the slowest part of image generation for you isn't the render time but &lt;em&gt;translating the picture in your head into a prompt&lt;/em&gt;, this one's for you. I spent a while digging into the "prompt with images, not words" approach (the thing Google Whisk popularized) and want to share how the workflow actually plays out — and where it falls flat.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Text prompts are hard because you have to &lt;em&gt;verbalize&lt;/em&gt; something visual, learn domain vocab (&lt;code&gt;shallow depth of field&lt;/code&gt;), and each model interprets words differently.&lt;/li&gt;
&lt;li&gt;"Using reference images" actually splits into 3 very different techniques. Only one of them is the low-barrier, web-based kind.&lt;/li&gt;
&lt;li&gt;The web-friendly one (caption-mediated) is great for exploration/mockups but &lt;strong&gt;cannot preserve identity&lt;/strong&gt; — that's by design, not a bug.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why text prompts are the bottleneck
&lt;/h2&gt;

&lt;p&gt;Break it down and there are three structural problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Verbalization loss&lt;/strong&gt; — the image in your head has composition, texture, light and color all at once. Flattening that into a word sequence drops information every time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vocabulary dependency&lt;/strong&gt; — &lt;code&gt;chiaroscuro&lt;/code&gt;, &lt;code&gt;isometric view&lt;/code&gt;… the words that get you the result &lt;em&gt;are&lt;/em&gt; the domain knowledge. You can't write what you don't know.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model dialects&lt;/strong&gt; — the same prompt reads differently on different models. Prompts age badly as assets.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So the natural question: &lt;em&gt;why translate something back into words when you can just show it?&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  "Reference images" is actually 3 different things
&lt;/h2&gt;

&lt;p&gt;This tripped me up at first. There are at least three families, and they behave very differently:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technique&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;th&gt;Setup cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pixel conditioning (img2img / ControlNet)&lt;/td&gt;
&lt;td&gt;Injects contours/depth/pose directly&lt;/td&gt;
&lt;td&gt;Locking composition &amp;amp; pose&lt;/td&gt;
&lt;td&gt;High (local env)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Feature embedding (IP-Adapter / LoRA)&lt;/td&gt;
&lt;td&gt;Turns the image into feature vectors&lt;/td&gt;
&lt;td&gt;Reproducing a specific style&lt;/td&gt;
&lt;td&gt;High (training)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Caption-mediated (Whisk-style)&lt;/td&gt;
&lt;td&gt;A VLM captions the image, feeds text to the generator&lt;/td&gt;
&lt;td&gt;Early exploration, style tests&lt;/td&gt;
&lt;td&gt;Low (web)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This post is about the third one. A vision-language model (Gemini, etc.) reads your reference images, auto-writes a detailed caption, and hands &lt;em&gt;that text&lt;/em&gt; to the image model. You just drag images in — but under the hood it's image → text → image.&lt;/p&gt;

&lt;p&gt;The key thing: &lt;strong&gt;it extracts the &lt;em&gt;essence&lt;/em&gt; of your reference, it does not copy pixels.&lt;/strong&gt; Remember this — it's the root of the limitation below.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow in practice
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Prep references by role&lt;/strong&gt; — up to 3: subject (what), scene (where), style (what look). You don't need all three. One busy image with too much going on = unwanted features leaking in, so keep it one-role-per-image.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the intermediate caption&lt;/strong&gt; — the single most useful feature to look for in a tool: &lt;em&gt;can you see and edit the caption the AI generated?&lt;/em&gt; If yes, you can spot where it misread your reference and fix it at the text level. If it's a black box, you're stuck when it's off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review the first result&lt;/strong&gt; — judge it as "a new image carrying the reference's traits," not "a reproduction." Check (a) how much subject identity survived, (b) whether the style transfer is surface or structural, (c) any unwanted elements crept in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Iterate via caption edits&lt;/strong&gt; — the move that works: lock the big picture (composition/style) with images, refine details (color, props, expression) with text. You don't drop text prompts entirely — you go from &lt;em&gt;writing from scratch&lt;/em&gt; to &lt;em&gt;writing only the diff.&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The honest limitations
&lt;/h2&gt;

&lt;p&gt;Most posts recommending this workflow skip these, so:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Identity is not guaranteed.&lt;/strong&gt; Since it's caption-mediated, your reference gets "summarized" into text once. A specific face, a brand logo, character details — anything lost in summarization won't come back. Drop in your pet and you get "a similar-looking different dog." That's normal behavior. Need exact identity? That's the pixel-conditioning territory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The gacha stays.&lt;/strong&gt; Even with editable captions, final generation is probabilistic. Budget for iteration, not one-shot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not a replacement for final production.&lt;/strong&gt; High-res output still needs human review before it ships. Hands, text, fine patterns — same weak spots as every image model.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where it actually shines
&lt;/h2&gt;

&lt;p&gt;For me it sped things up in these phases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Merch/mockups&lt;/strong&gt; — turning a character into enamel-pin / sticker / plush styles for pre-production previews. "Vibe check" over "exact reproduction," so the weakness doesn't bite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Character variation exploration&lt;/strong&gt; — dropping an existing character into different styles/settings, dozens at a time. Great at the concept stage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blog/LP visual roughs&lt;/strong&gt; — a starting point before briefing a designer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to try the caption-mediated flow without setting up a local environment, Google's Whisk is the original, and web services like &lt;a href="https://whisk-ai.io/" rel="noopener noreferrer"&gt;Whisk AI&lt;/a&gt; layer editable intermediate prompts and model switching on top of the same idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap-up
&lt;/h2&gt;

&lt;p&gt;Reference-image workflows fit the phase where &lt;em&gt;you can show what you want but can't easily say it&lt;/em&gt; — idea exploration, style experiments, mockup volume. If your requirement is strict composition or faithful reproduction of a specific character, ControlNet/LoRA locally is still the answer.&lt;/p&gt;

&lt;p&gt;Text prompts aren't going away. But "verbalize from zero" is quietly being replaced by "reference image + diff edits." The input interface for image generation is inching in that direction.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Anyone else using image-first prompting in production? Curious whether the editable-caption feature actually gets used or if people just re-roll.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>design</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
  </channel>
</rss>
