<?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: beihuang</title>
    <description>The latest articles on DEV Community by beihuang (@bays_wong).</description>
    <link>https://dev.to/bays_wong</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%2F2559425%2F43176f5d-3323-4e91-9984-cfad5655fd8a.png</url>
      <title>DEV Community: beihuang</title>
      <link>https://dev.to/bays_wong</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bays_wong"/>
    <language>en</language>
    <item>
      <title>MiniMax-H3 image-to-video pitfalls: don't mix first_frame and reference_image</title>
      <dc:creator>beihuang</dc:creator>
      <pubDate>Thu, 05 Nov 2026 06:43:42 +0000</pubDate>
      <link>https://dev.to/bays_wong/minimax-h3-image-to-video-pitfalls-dont-mix-firstframe-and-referenceimage-465c</link>
      <guid>https://dev.to/bays_wong/minimax-h3-image-to-video-pitfalls-dont-mix-firstframe-and-referenceimage-465c</guid>
      <description>&lt;p&gt;I recently drove &lt;strong&gt;MiniMax-H3&lt;/strong&gt; through an &lt;strong&gt;OpenAI-compatible&lt;/strong&gt; media gateway to generate a &lt;strong&gt;15s, 9:16, with-audio&lt;/strong&gt; vertical clip from a first frame plus a long storyboard prompt. I burned a few jobs on avoidable mistakes. Notes below are reproducible and sanitized.&lt;/p&gt;

&lt;p&gt;Field names follow the gateway docs; treat this as a debugging checklist, not a product pitch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall 1: Don't mix frame and reference roles
&lt;/h2&gt;

&lt;p&gt;Sending both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;first_frame&lt;/code&gt; (image-to-video from a start frame)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;reference_image&lt;/code&gt; (identity / reference mode)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;got an upstream error like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;frame and reference roles cannot be mixed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Takeaway:&lt;/strong&gt; pick one mode. If the product docs describe both capabilities, the call layer still must not "just include everything."&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall 2: Skip undocumented &lt;code&gt;images=@…&lt;/code&gt; fields
&lt;/h2&gt;

&lt;p&gt;Some copy-pasted examples use &lt;code&gt;images=@file&lt;/code&gt;. On this path that returned unsupported / unexpected file field errors.&lt;/p&gt;

&lt;p&gt;Use the documented multipart fields instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;first_frame&lt;/code&gt;, or&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reference_image&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Public aspect field name is &lt;strong&gt;&lt;code&gt;ratio&lt;/code&gt;&lt;/strong&gt;, not &lt;code&gt;aspect_ratio&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall 3: &lt;code&gt;prompt optimization failed&lt;/code&gt; vs first-frame resolution
&lt;/h2&gt;

&lt;p&gt;What I saw:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First frame around &lt;strong&gt;1008×1792&lt;/strong&gt;: even a short clean English prompt could fail with &lt;code&gt;prompt optimization failed&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Same account, &lt;strong&gt;text-to-video only&lt;/strong&gt;: succeeded — so it wasn't obviously a dead key or zero balance&lt;/li&gt;
&lt;li&gt;Re-encoding the first frame to &lt;strong&gt;720×1280 JPEG&lt;/strong&gt;, same other params: &lt;strong&gt;two runs in a row&lt;/strong&gt; completed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Suggested order when debugging:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Confirm you didn't mix frame / reference
&lt;/li&gt;
&lt;li&gt;Confirm multipart field names match the docs
&lt;/li&gt;
&lt;li&gt;Downscale / re-encode the first frame to ~720×1280 and retry
&lt;/li&gt;
&lt;li&gt;Only then chase upstream status and poll payloads&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A working combo (sanitized)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;model&lt;/td&gt;
&lt;td&gt;MiniMax-H3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;seconds&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ratio&lt;/td&gt;
&lt;td&gt;9:16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;resolution&lt;/td&gt;
&lt;td&gt;768P&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;input&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;first_frame&lt;/code&gt; only (re-encoded vertical JPEG)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;avoid&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;reference_image&lt;/code&gt;, undocumented &lt;code&gt;images&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Typical async flow: &lt;code&gt;POST /v1/videos&lt;/code&gt; → poll &lt;code&gt;GET /v1/videos/{id}&lt;/code&gt; → download with &lt;code&gt;GET /v1/videos/{id}/content&lt;/code&gt;. Status JSON may not include a durable direct URL; the content endpoint is more reliable. Prefer a unique &lt;code&gt;Idempotency-Key&lt;/code&gt; on multipart creates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus: DeepSeek Flash queueing vs own capacity
&lt;/h2&gt;

&lt;p&gt;Separately, when a lot of clients share the same official DeepSeek / Kimi queues, TTFT spikes show up as "everything is slow" even if your gateway is healthy. Comparing a route that does &lt;strong&gt;not&lt;/strong&gt; share the crowded official pool (own / reserved capacity) against a shared proxy is a useful A/B when peak-hour latency looks broken everywhere.&lt;/p&gt;

&lt;p&gt;Use public model &lt;strong&gt;ids&lt;/strong&gt; (not marketing names) in the request body. For this gateway the public flash alias maps to the catalog id you see in docs / &lt;code&gt;/llms.txt&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Soft wrap-up
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;First frame ≠ reference image&lt;/strong&gt; — never both.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Field names follow the docs&lt;/strong&gt; — don't transplant another SDK's &lt;code&gt;images&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I2V + &lt;code&gt;prompt optimization failed&lt;/code&gt;&lt;/strong&gt; — resize the first frame before blaming the prompt.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Peak latency&lt;/strong&gt; — check whether you're on a shared official queue.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;References (docs + copy-paste examples):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API docs: &lt;a href="https://cheapbuddy.cc/api-docs" rel="noopener noreferrer"&gt;https://cheapbuddy.cc/api-docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bash / Python / Node examples: &lt;a href="https://github.com/GiantClam/cheapbuddy-examples" rel="noopener noreferrer"&gt;https://github.com/GiantClam/cheapbuddy-examples&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Model list for agents: &lt;a href="https://cheapbuddy.cc/llms.txt" rel="noopener noreferrer"&gt;https://cheapbuddy.cc/llms.txt&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you hit a similar 400, paste the &lt;strong&gt;error text + field names&lt;/strong&gt; (no keys) in the comments and we can compare notes.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>video</category>
      <category>debugging</category>
    </item>
    <item>
      <title>How to Remove Image Backgrounds in 3 Seconds with AI</title>
      <dc:creator>beihuang</dc:creator>
      <pubDate>Thu, 11 Jun 2026 02:30:12 +0000</pubDate>
      <link>https://dev.to/bays_wong/how-to-remove-image-backgrounds-in-3-seconds-with-ai-4khp</link>
      <guid>https://dev.to/bays_wong/how-to-remove-image-backgrounds-in-3-seconds-with-ai-4khp</guid>
      <description>&lt;p&gt;A practical, no-fluff guide. If you need to remove image backgrounds without paying for expensive tools, this is for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;Background removal used to require Photoshop skills and 20 minutes per image. Now it takes 3 seconds — and zero skill.&lt;/p&gt;

&lt;p&gt;Most people reach for a paid service like remove.bg or Photoshop. Both work, but they:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Require sign-up&lt;/li&gt;
&lt;li&gt;Have daily limits&lt;/li&gt;
&lt;li&gt;Cost $9–$200/month&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's a better way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 3 Seconds solution
&lt;/h2&gt;

&lt;p&gt;Modern AI runs entirely in your browser. No server, no upload, no waiting room.&lt;/p&gt;

&lt;p&gt;Here's the step-by-step:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Open Remove Anything
&lt;/h3&gt;

&lt;p&gt;Go to &lt;strong&gt;&lt;a href="https://remove-anything.com" rel="noopener noreferrer"&gt;https://remove-anything.com&lt;/a&gt;&lt;/strong&gt;. No sign-up, no credit card.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Upload your image (JPG/PNG/WebP)
&lt;/h3&gt;

&lt;p&gt;Drag-and-drop your file (or paste from clipboard). AI works in the browser — your image never leaves your device.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Click the button
&lt;/h3&gt;

&lt;p&gt;Click the button. Wait 3 Seconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Download
&lt;/h3&gt;

&lt;p&gt;Right-click → Save. Or use the copy button. Done.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ Free, unlimited uses&lt;/li&gt;
&lt;li&gt;✅ Works on any modern browser&lt;/li&gt;
&lt;li&gt;✅ Privacy-first (no upload to server)&lt;/li&gt;
&lt;li&gt;✅ AI background removal&lt;/li&gt;
&lt;li&gt;✅ AI object removal&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it yourself
&lt;/h2&gt;

&lt;p&gt;→ &lt;strong&gt;&lt;a href="https://remove-anything.com" rel="noopener noreferrer"&gt;https://remove-anything.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built Remove Anything because I got tired of hitting paywalls on tools that should be free. If it saves you 10 minutes today, I count that as a win.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Wang Xinjin builds Remove Anything. Follow for more AI image tools / SaaS tools that respect your time and wallet.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>3 Steps to Perfect Photos: Upload, Paint, Download!</title>
      <dc:creator>beihuang</dc:creator>
      <pubDate>Thu, 21 Aug 2025 06:20:29 +0000</pubDate>
      <link>https://dev.to/bays_wong/3-steps-to-perfect-photos-upload-paint-download-59c8</link>
      <guid>https://dev.to/bays_wong/3-steps-to-perfect-photos-upload-paint-download-59c8</guid>
      <description>&lt;p&gt;Remove unwanted objects, people, text, and flaws effortlessly with our AI-powered eraser tool. No skills needed—just paint and erase. Enjoy HD quality, fast processing, and free downloads without watermarks.&lt;/p&gt;

&lt;p&gt;Perfect for photographers, social media users, and online sellers. Try it now and transform your images in seconds!&lt;/p&gt;

&lt;p&gt;Pleace find &lt;a href="https://www.remove-anything.com/en" rel="noopener noreferrer"&gt;https://www.remove-anything.com/en&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>photography</category>
      <category>aiindesign</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
