<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Gemini on hippotion</title><link>https://blog.hippotion.com/tags/gemini/</link><description>Recent content in Gemini on hippotion</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 25 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.hippotion.com/tags/gemini/index.xml" rel="self" type="application/rss+xml"/><item><title>🎨 I Gave My Blog a Mascot and Never Drew a Line</title><link>https://blog.hippotion.com/posts/blog-has-a-cast-now/</link><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid>https://blog.hippotion.com/posts/blog-has-a-cast-now/</guid><description>Thirty posts, no covers, and I can&amp;rsquo;t draw. The fix wasn&amp;rsquo;t a better prompt — it was picking the right model tier and letting the model read the whole post.</description><content:encoded><![CDATA[<p>I had thirty-odd posts on this blog and not one cover image. Stock art felt soulless, hiring a designer for a hobby blog is silly, and I can&rsquo;t draw. But a blog with no images looks abandoned.</p>
<p>I also wanted something specific: the same two characters on every cover. A little robot and a kid in a baseball cap. Recurring characters are what makes a set of covers feel like <em>one</em> blog instead of thirty random pictures. That one requirement decided everything that followed.</p>
<h2 id="why-the-easy-options-dont-work">Why the easy options don&rsquo;t work</h2>
<p>&ldquo;Same characters every time&rdquo; rules out plain text-to-image. You can describe a robot, but you get a different robot each time. You need a model that can look at a <em>reference drawing</em> and keep those exact characters — image-conditioned generation.</p>
<p>I&rsquo;m a heavy NVIDIA NIM user, so I started there. Their hosted version of the right model turned out to be a demo that only edits three built-in sample images — it flat refuses your own. Dead end.</p>
<p>Next I tried a cheap hosted version on another provider. It took my reference, but the output was rough: six-fingered hands, characters floating with no ground, wobbly lines. I burned about ten dollars before admitting the obvious — the model <em>tier</em> is the whole game, not the prompt. The same reference on a top model came back clean. Lesson logged: when the bar is &ldquo;looks professional,&rdquo; start at the top, don&rsquo;t crawl up from the bargain bin.</p>
<h2 id="the-trick-that-actually-mattered">The trick that actually mattered</h2>
<p>Here&rsquo;s the part worth stealing. My first instinct was to hand the model a one-line scene I wrote myself: &ldquo;robot guards a door, checks papers.&rdquo; It worked, but the scenes were only as good as my summary of my own post.</p>
<p>So I stopped summarising. Now the script sends the model the <em>entire post</em> and asks it to pick the strongest visual metaphor itself. It&rsquo;s better at this than I am. For a post about constraints forcing better design, it drew a cactus in cracked desert ground — a metaphor straight out of the text that I never put in the prompt. The human writing the scene was the lossy step. Removing it helped.</p>
<h2 id="the-gotcha-i-didnt-expect">The gotcha I didn&rsquo;t expect</h2>
<p>I had two reference drawings: one happy, one where the robot is sad and scratched up inside a quarantine box. I used the sad one once and the gloom <em>leaked</em>. New covers came back with a faintly scuffed, frowning robot — even when I explicitly asked for &ldquo;clean and happy.&rdquo; A reference image carries the character&rsquo;s mood, not just its shape. Now the canonical reference is the cheerful one, and the sad robot only comes out for posts that earn it.</p>
<h2 id="where-it-landed">Where it landed</h2>
<p>One command now reads a post, draws a cover with my two characters, and drops it in. Thirty-odd covers cost a few dollars all in — the top tier runs about twelve cents an image, and you pay for the odd retry too. The honest split: the AI did the drawing, and I did the parts that had to be right — picking the cast, catching the mood leak, and deciding which covers were good enough to keep.</p>
<p>The covers on this blog? That&rsquo;s them. The little robot and the kid have been busy.</p>
<p>The whole thing is about 200 lines of Python, standard library only. I put it up as <a href="https://github.com/janos-gyorgy/nano-banana-covers"><strong>nano-banana-covers</strong></a> — swap the reference drawing for your own cast and it&rsquo;s your mascot, not mine.</p>
]]></content:encoded></item></channel></rss>