<?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: 张洲诚（Zack.ZHANG）</title>
    <description>The latest articles on DEV Community by 张洲诚（Zack.ZHANG） (@zackzhang).</description>
    <link>https://dev.to/zackzhang</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%2F4009090%2F3dfae9a2-cf7c-4d8e-90fa-7dba1333ea72.jpg</url>
      <title>DEV Community: 张洲诚（Zack.ZHANG）</title>
      <link>https://dev.to/zackzhang</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zackzhang"/>
    <language>en</language>
    <item>
      <title>I Generated 50 Sales Reports with One CLI Command — Here's How</title>
      <dc:creator>张洲诚（Zack.ZHANG）</dc:creator>
      <pubDate>Mon, 20 Jul 2026 10:20:58 +0000</pubDate>
      <link>https://dev.to/zackzhang/i-generated-50-sales-reports-with-one-cli-command-heres-how-21f4</link>
      <guid>https://dev.to/zackzhang/i-generated-50-sales-reports-with-one-cli-command-heres-how-21f4</guid>
      <description>&lt;p&gt;Mid-year review season. You know the drill.&lt;/p&gt;

&lt;p&gt;My team owed leadership a polished Q2 deck, plus every regional sales lead needed their own weekly report. Total count: about 50 reports. Same structure, different data.&lt;/p&gt;

&lt;p&gt;The first deck I did the honest way — PowerPoint, three full days. Not because I can't use templates, but because the "raw data → insight → visual story" pipeline is brutally long. Each chart means copying numbers from Excel, fixing formatting, writing analysis. One slide averages 40 minutes. Twenty slides = two working days gone.&lt;/p&gt;

&lt;p&gt;Then I looked at the remaining 49. That math doesn't work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The GUI tool problem
&lt;/h2&gt;

&lt;p&gt;I tried the obvious solutions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gamma&lt;/strong&gt; ($20/mo): Fast AI generation, but no batch mode — each deck requires manual input and manual export&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Beautiful.ai&lt;/strong&gt; ($12/mo): Great design, but can't read my raw Excel data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WPS AI&lt;/strong&gt; (~$4/mo): Can read data, inconsistent quality, no batch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The common issue: &lt;strong&gt;GUI tools don't support scripting.&lt;/strong&gt; One deck saves time. Fifty decks means doing it fifty times by hand.&lt;/p&gt;

&lt;h2&gt;
  
  
  The CLI approach
&lt;/h2&gt;

&lt;p&gt;I found Bailian CLI on GitHub — a command-line tool that calls large models directly from the terminal, reads files as context, and can be looped in a script. Here's what my workflow ended up looking like.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;dashscope-cli
bl configure &lt;span class="nt"&gt;--api-key&lt;/span&gt; YOUR_API_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Free API key from the &lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Bailian console&lt;/a&gt; — new users get complimentary credits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Generate an outline
&lt;/h2&gt;

&lt;p&gt;The worst part of building a deck isn't layout — it's "what goes on slide one."&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl chat &lt;span class="nt"&gt;--model&lt;/span&gt; qwen-plus &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Generate a PPT outline for Q2 sales performance review, covering:
1. Performance overview (revenue, profit, YoY/QoQ)
2. Regional comparison (East/South/North/Southwest)
3. Growth attribution (which product lines drove growth)
4. Risks and anomalies
5. Next quarter action plan
Include 2-3 key points and visualization suggestions per module."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;30 seconds → structured outline with chart recommendations (stacked bars for revenue composition, heatmaps for growth distribution). Previously this took 30 minutes on a whiteboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Data-driven content
&lt;/h2&gt;

&lt;p&gt;The key differentiator — feeding in the actual data file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl chat &lt;span class="nt"&gt;--model&lt;/span&gt; qwen-max &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--file&lt;/span&gt; sales_q2.xlsx &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Based on this Q2 sales data, generate executive-facing PPT content:
1. Extract 3 core conclusions (with data support)
2. Identify 2-3 anomalies or notable trends
3. Recommend next-quarter actions
4. Write out each slide's title and bullet points
Emphasize YoY growth trends and regional differences."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It reads the actual numbers, analyzes them, and outputs specific conclusions — not template filler. For example: "East China Q2 revenue grew 23% YoY, driven by enterprise SaaS, while North China saw -5% negative growth — renewal rate decline needs attention."&lt;/p&gt;

&lt;p&gt;GUI tools can't do this. Gamma and Beautiful.ai only work with text you type in; they won't read your source files.&lt;/p&gt;

&lt;p&gt;One complete executive deck: ~1 hour (including manual tweaks and layout). Down from three days.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Batch it
&lt;/h2&gt;

&lt;p&gt;Same structure, different data per region. Textbook scripting scenario:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;region &lt;span class="k"&gt;in &lt;/span&gt;east south north southwest central northeast northwest&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;bl chat &lt;span class="nt"&gt;--model&lt;/span&gt; qwen-plus &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--file&lt;/span&gt; &lt;span class="s2"&gt;"data/&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;region&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;_q2.xlsx"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Based on &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;region&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; region Q2 sales data, generate weekly report content:
1. Regional performance summary
2. Top 5 customer contribution analysis
3. YoY and QoQ changes
4. Items requiring HQ support
Output as structured PPT page content."&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--output&lt;/span&gt; &lt;span class="s2"&gt;"output/&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;region&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;_weekly_report.md"&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Seven regions, 8–10 minutes total. Structured Markdown output → batch import into deck template.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Time for 50 reports&lt;/th&gt;
&lt;th&gt;Data accuracy&lt;/th&gt;
&lt;th&gt;Repeatability&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Fully manual&lt;/td&gt;
&lt;td&gt;~25 hours (30 min each)&lt;/td&gt;
&lt;td&gt;Copy-paste errors likely&lt;/td&gt;
&lt;td&gt;Redo from scratch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GUI tools&lt;/td&gt;
&lt;td&gt;~12 hours (15 min each)&lt;/td&gt;
&lt;td&gt;Manual data entry&lt;/td&gt;
&lt;td&gt;Semi-automated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLI script&lt;/td&gt;
&lt;td&gt;~10 min + 1 hr layout&lt;/td&gt;
&lt;td&gt;Reads source data directly&lt;/td&gt;
&lt;td&gt;Fully repeatable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Next quarter? Swap the data files, run the same script. Zero rewrite.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond decks
&lt;/h2&gt;

&lt;p&gt;The same pattern works for anything "given materials → structured document":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Business plan&lt;/span&gt;
bl chat &lt;span class="nt"&gt;--model&lt;/span&gt; qwen-max &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Draft a business plan outline for an enterprise analytics SaaS..."&lt;/span&gt;

&lt;span class="c"&gt;# Data analysis report&lt;/span&gt;
bl chat &lt;span class="nt"&gt;--model&lt;/span&gt; qwen-max &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--file&lt;/span&gt; user_behavior_june.csv &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Write a product data report: DAU, retention, conversion, anomalies..."&lt;/span&gt;

&lt;span class="c"&gt;# Excel formulas&lt;/span&gt;
bl chat &lt;span class="nt"&gt;--model&lt;/span&gt; qwen-plus &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Write an XLOOKUP formula that..."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meeting minutes, contract drafts, quarterly summaries — same logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Monthly cost&lt;/th&gt;
&lt;th&gt;Batch support&lt;/th&gt;
&lt;th&gt;File input&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gamma&lt;/td&gt;
&lt;td&gt;$20/mo&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;One-off polished decks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Beautiful.ai&lt;/td&gt;
&lt;td&gt;$12/mo&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Design-first&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WPS AI&lt;/td&gt;
&lt;td&gt;~$4/mo&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;WPS ecosystem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bailian CLI&lt;/td&gt;
&lt;td&gt;Pay-per-token&lt;/td&gt;
&lt;td&gt;Native scripting&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Batch + data-driven&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Using qwen-plus: one deck ~$0.05–0.07, 50 regional reports ~$2–4, daily misc ~$1–2/month.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;CLI has a learning curve — not as plug-and-play as GUI tools&lt;/li&gt;
&lt;li&gt;Output is content structure; final .pptx layout still needs human work&lt;/li&gt;
&lt;li&gt;Quality depends on prompt quality&lt;/li&gt;
&lt;li&gt;Complex visualizations still need manual handling&lt;/li&gt;
&lt;li&gt;If you only make one deck occasionally and care about design polish, Gamma/Beautiful.ai are better&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The CLI's edge: &lt;strong&gt;batch processing + data-driven generation + programmability.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;If mid-year reporting season is crushing you too, consider a scripting approach. Core idea: &lt;strong&gt;hand the repetitive content generation to the machine, keep the aesthetic judgment and business decisions for yourself.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bailian.console.aliyun.com/cli?source_channel=cli_github" rel="noopener noreferrer"&gt;Install the CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Free API key&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>cli</category>
    </item>
    <item>
      <title>One CLI for Every Stage of Writing a Paper — Proposal to Defense</title>
      <dc:creator>张洲诚（Zack.ZHANG）</dc:creator>
      <pubDate>Fri, 17 Jul 2026 11:13:51 +0000</pubDate>
      <link>https://dev.to/zackzhang/one-cli-for-every-stage-of-writing-a-paper-proposal-to-defense-15b4</link>
      <guid>https://dev.to/zackzhang/one-cli-for-every-stage-of-writing-a-paper-proposal-to-defense-15b4</guid>
      <description>&lt;h2&gt;
  
  
  The stress that hits during thesis season
&lt;/h2&gt;

&lt;p&gt;The paper isn't even done, and you're already drowning in tools: plagiarism check on one site, AI-content detection on another, a paraphraser here, a translator there, references formatted by hand, and a LaTeX error that eats half an hour of googling. A huge chunk of your energy goes into copy-pasting between a dozen tools.&lt;/p&gt;

&lt;p&gt;Then there's the "AI smell" problem. In 2025 China's Ministry of Education folded AIGC detection into the quality framework for degree theses, with a clear line: &lt;strong&gt;AI assistance is allowed, AI ghostwriting is not.&lt;/strong&gt; Many schools now treat the AIGC score as a hard gate alongside plagiarism. The catch: detectors disagree wildly — the same paper can score 70% on one service and 5% on another, and even acknowledged classics get flagged.&lt;/p&gt;

&lt;p&gt;I'm no academic heavyweight — I just got tired of tool-hopping and wondered: &lt;strong&gt;could one tool absorb all the mechanical, repetitive parts of paper writing?&lt;/strong&gt; Running it through Bailian's CLI (&lt;code&gt;bl&lt;/code&gt;), it turned out nine stages, proposal to defense, really can be covered by a single command.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ Up front: everything below is &lt;strong&gt;writing assistance&lt;/strong&gt; — gathering material, structuring ideas, polishing phrasing, fixing formatting. &lt;strong&gt;It does not write your paper, and it is not a way to beat the detector.&lt;/strong&gt; The ideas, data, and conclusions are yours to research, verify, and stand behind.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Nine stages, one capability
&lt;/h2&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Facademic%2Finline%2Fpipeline-9steps.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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Facademic%2Finline%2Fpipeline-9steps.png" width="800" alt="Nine-stage paper writing pipeline" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;① Proposal  → ② Lit review  → ③ Draft skeleton
④ Polish    → ⑤ Paraphrase  → ⑥ De-AI phrasing
⑦ Translate → ⑧ LaTeX check → ⑨ Defense slides
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Under the hood they're all &lt;code&gt;bl text chat&lt;/code&gt; — one long-form chat command. Swap the prompt, do a different job. No separate site or subscription per stage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install (two lines)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; bailian-cli
bl auth login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll need Node.js. New users get free credits.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bailian.console.aliyun.com/cli?source_channel=cli_github" rel="noopener noreferrer"&gt;Install the CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Free API key&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Default model is &lt;code&gt;qwen3.7-max&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A few representative stages
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Proposal&lt;/strong&gt; — the problem often isn't that you can't write, it's that you haven't figured out &lt;em&gt;what&lt;/em&gt; to write. Let it give a solid frame, then fill it with your research:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl text chat &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--system&lt;/span&gt; &lt;span class="s2"&gt;"You are an academic writing assistant. Produce standard, verifiable drafts for the author to research and revise."&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--message&lt;/span&gt; &lt;span class="s2"&gt;"For the thesis 'Multimodal Machine Translation for Low-Resource Languages', draft a proposal: background, state of the art, goals, roadmap, novelty, timeline"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--max-tokens&lt;/span&gt; 6000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frame is its work; &lt;strong&gt;the research is yours&lt;/strong&gt; — verify every claim and citation against real literature. For references, use it only to format (e.g. APA 7th), never to &lt;em&gt;invent&lt;/em&gt; citations — fabricated references are textbook misconduct.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;De-AI phrasing&lt;/strong&gt; — the headache of 2026. Students who wrote every word themselves still get flagged because the prose is too tidy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl text chat &lt;span class="nt"&gt;--message&lt;/span&gt; &lt;span class="s2"&gt;"The text below reads mechanical and templated. Rewrite it to sound more natural and personal without changing the academic meaning: &amp;lt;paragraph&amp;gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;To be crystal clear: this exists to &lt;strong&gt;improve mechanical phrasing in genuine writing&lt;/strong&gt; so wrongly-flagged original work reads more human. It is &lt;strong&gt;not&lt;/strong&gt; for laundering ghost-written text. If the content was AI-written to begin with, no rewriting makes it honest.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The remaining stages — lit review, draft skeleton, polish, paraphrase, translation, LaTeX check, defense slides — follow the same pattern; long documents go through &lt;code&gt;--messages-file&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost
&lt;/h2&gt;

&lt;p&gt;The whole flow is basically token cost — a few dollars for an entire paper, versus per-paper paraphrasing sites or the several-hundred-yuan "human de-AI" grey market. New users get free credits.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It won't do your research&lt;/strong&gt; — ideas, novelty, and data are yours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify every citation&lt;/strong&gt; — models fabricate references; use it only for formatting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paraphrase/de-AI aren't magic&lt;/strong&gt; — if content is ghost-written, no tool saves it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rules vary by school&lt;/strong&gt; — some require declaring AI assistance; check first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with whichever stage hurts most.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bailian.console.aliyun.com/?source_channel=hh_github" rel="noopener noreferrer"&gt;Start now (free credits)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;This is a walkthrough of a writing-assistance tool. Every stage is framed as assistance, not ghostwriting. Follow your institution's and journal's academic-integrity and AI-use policies; originality, data accuracy, and integrity are the author's own responsibility.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>cli</category>
      <category>writing</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Zero-to-one brand kit with one CLI tool: from logo to social posts</title>
      <dc:creator>张洲诚（Zack.ZHANG）</dc:creator>
      <pubDate>Wed, 15 Jul 2026 08:33:42 +0000</pubDate>
      <link>https://dev.to/zackzhang/zero-to-one-brand-kit-with-one-cli-tool-from-logo-to-social-posts-160b</link>
      <guid>https://dev.to/zackzhang/zero-to-one-brand-kit-with-one-cli-tool-from-logo-to-social-posts-160b</guid>
      <description>&lt;p&gt;AI logo and mascot generators are everywhere right now, but one question kept nagging me: these tools nail a single striking image, yet brand identity was never about &lt;em&gt;one&lt;/em&gt; image. A logo, cups, cards, stickers, posters, social shots — a dozen pieces that only read as a "brand" when they share &lt;em&gt;one consistent look&lt;/em&gt;. One pretty image is easy; a consistent &lt;em&gt;set&lt;/em&gt; is the hard part.&lt;/p&gt;

&lt;p&gt;So I ran a full test, upfront about the framing: &lt;strong&gt;suppose you're building a brand's visuals from zero to one — can a single CLI carry it?&lt;/strong&gt; For a concrete target I made up an indie coffee brand, "Cloudy Coffee," and used the &lt;code&gt;bl&lt;/code&gt; CLI (Alibaba Cloud Model Studio) to take it from logo to social images.&lt;/p&gt;

&lt;h2&gt;
  
  
  What came out
&lt;/h2&gt;

&lt;p&gt;The logo — the Chinese text renders cleanly, which most non-Chinese models fail at:&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fbrand%2Flogo.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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fbrand%2Flogo.png" width="800" alt="Cloudy Coffee logo" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The mascot, Cloudy — front, side, expressions, all the same character:&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fbrand%2Fip-mascot.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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fbrand%2Fip-mascot.png" width="800" alt="Mascot design sheet" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; bailian-cli    &lt;span class="c"&gt;# needs Node.js &amp;gt;= 18&lt;/span&gt;
bl auth login &lt;span class="nt"&gt;--api-key&lt;/span&gt; sk-xxxxx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Grab a free API key from the &lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Model Studio console&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core idea: the "anchor" trick
&lt;/h2&gt;

&lt;p&gt;A general image model is stateless — it re-interprets your prompt every time, so a set drifts in style. The fix: write the brand's visual DNA as &lt;strong&gt;one fixed block&lt;/strong&gt; and paste it into every prompt, plus a fixed &lt;code&gt;--seed&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Color  : warm latte beige and caramel brown, a touch of sky blue
Char   : Cloudy, a chubby cute cloud mascot with rosy cheeks
Style  : soft hand-drawn watercolor, cozy healing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same seed + same anchors = the style stops wandering. It's like locking a picture-book character's face — except you're locking the whole brand's vibe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the set
&lt;/h2&gt;

&lt;p&gt;Logo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl image generate &lt;span class="nt"&gt;--model&lt;/span&gt; qwen-image-2.0-pro &lt;span class="nt"&gt;--size&lt;/span&gt; 1:1 &lt;span class="nt"&gt;--seed&lt;/span&gt; 88 &lt;span class="nt"&gt;--watermark&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Minimalist coffee brand logo, a cloud merged with a coffee cup, warm latte beige and caramel with sky blue, soft watercolor, Chinese text '云朵咖啡' and 'Cloudy Coffee', white background"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A 3x3 sticker pack — nine emotions, one cloud:&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fbrand%2Femoji-pack.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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fbrand%2Femoji-pack.png" width="800" alt="Sticker pack" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;VI / merchandise flat-lay:&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fbrand%2Fvi-merch.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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fbrand%2Fvi-merch.png" width="800" alt="VI merchandise" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Other assets only change &lt;code&gt;--size&lt;/code&gt; (3:4 social, 9:16 poster) and the scene — anchors and seed stay fixed.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Consistency isn't 100%.&lt;/strong&gt; Anchors + seed hold the overall style; fine details still drift.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text can break.&lt;/strong&gt; Short CJK titles are usually fine; long strings produce typos — generate a few and pick.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commercial use needs due diligence.&lt;/strong&gt; AI image copyright and font licensing vary — verify before trademarking or large-scale use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No full VI spec.&lt;/strong&gt; A complete brand book is still a professional job.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://bailian.console.aliyun.com/cli?source_channel=cli_github&amp;amp;" rel="noopener noreferrer"&gt;Install bl&lt;/a&gt; | &lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Get a free API key&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The whole trick: &lt;strong&gt;encode your brand's color, character, and style as fixed anchors, add a fixed seed, and let the model paint everything in one consistent world.&lt;/strong&gt; Swap in your own brand and run it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Based on hands-on testing with Bailian CLI (bl 1.4.2). Brand case is fictional for demonstration.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cli</category>
    </item>
    <item>
      <title>I Built an AI Storybook Generator for My Kid With One CLI</title>
      <dc:creator>张洲诚（Zack.ZHANG）</dc:creator>
      <pubDate>Tue, 14 Jul 2026 05:45:37 +0000</pubDate>
      <link>https://dev.to/zackzhang/i-built-an-ai-storybook-generator-for-my-kid-with-one-cli-4kli</link>
      <guid>https://dev.to/zackzhang/i-built-an-ai-storybook-generator-for-my-kid-with-one-cli-4kli</guid>
      <description>&lt;p&gt;It's summer break, and I wanted to make a personalized picture book for my 5-year-old. Every tool I tried fell short the same way: "AI storybook" apps generate images, but the hero's face changes every other page — and there's no narration, no video, no way to make it an interactive, tappable book.&lt;/p&gt;

&lt;p&gt;I ended up doing the whole thing with one command-line tool: &lt;strong&gt;Bailian CLI (&lt;code&gt;bl&lt;/code&gt;)&lt;/strong&gt;. It writes the story, generates consistent illustrations, synthesizes narration, and I wrapped it into an interactive HTML book. Here's how.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; bailian-cli   &lt;span class="c"&gt;# needs Node.js &amp;gt;= 18&lt;/span&gt;
bl auth login &lt;span class="nt"&gt;--api-key&lt;/span&gt; sk-xxxxx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Grab a free key from the &lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Model Studio console&lt;/a&gt; (free credits are enough to run all of this).&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 — Write the story
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl text chat &lt;span class="nt"&gt;--model&lt;/span&gt; qwen3.7-max &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--system&lt;/span&gt; &lt;span class="s2"&gt;"You are a children's picture-book author. Warm, simple language for a 5-year-old."&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--message&lt;/span&gt; &lt;span class="s2"&gt;"Write a 3-act short story 'Xiaoyu and the Firefly', 2-3 sentences per act."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2 — Consistent illustrations (the whole game)
&lt;/h2&gt;

&lt;p&gt;The trick to keeping the same character across pages: bake the look into a fixed &lt;strong&gt;anchor&lt;/strong&gt; you reuse in every prompt, plus the same &lt;code&gt;--seed&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;ANCHOR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"A cute 5-year-old girl named Xiaoyu, round face, big eyes, short black bob hair with a red hairpin, yellow dress, white sneakers, soft watercolor picture book"&lt;/span&gt;

bl image generate &lt;span class="nt"&gt;--model&lt;/span&gt; qwen-image-2.0-pro &lt;span class="nt"&gt;--size&lt;/span&gt; 4:3 &lt;span class="nt"&gt;--seed&lt;/span&gt; 71 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$ANCHOR&lt;/span&gt;&lt;span class="s2"&gt;, standing in a meadow at dusk holding a glowing lantern, one firefly nearby"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only swap the scene; the hero stays put:&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fedu%2Fstorybook-1.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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fedu%2Fstorybook-1.png" width="800" alt="Picture book scene 1: Xiaoyu with a lantern meets a firefly at dusk" height="584"&gt;&lt;/a&gt;&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fedu%2Fstorybook-2.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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fedu%2Fstorybook-2.png" width="800" alt="Picture book scene 2: Xiaoyu follows the firefly into the forest" height="584"&gt;&lt;/a&gt;&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fedu%2Fstorybook-3.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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fedu%2Fstorybook-3.png" width="800" alt="Picture book scene 3: fireflies surround Xiaoyu and light up the night" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Same Xiaoyu across all three. &lt;code&gt;qwen-image-2.0-pro&lt;/code&gt; even renders in-image text well — here's a 4-panel comic with speech bubbles:&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fedu%2Fcomic-yoyo.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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fedu%2Fcomic-yoyo.png" width="800" alt="Four-panel comic: a boy learns the yo-yo from failure to success" height="1096"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 — Narration
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl speech synthesize &lt;span class="nt"&gt;--text&lt;/span&gt; &lt;span class="s2"&gt;"At dusk, Xiaoyu strolled across the meadow with a little lantern..."&lt;/span&gt; &lt;span class="nt"&gt;--voice&lt;/span&gt; &amp;lt;voice_id&amp;gt; &lt;span class="nt"&gt;--out&lt;/span&gt; voice1.mp3
&lt;span class="c"&gt;# bl speech synthesize --list-voices  # to pick a voice&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4 — Assemble the interactive book
&lt;/h2&gt;

&lt;p&gt;Drop each act's &lt;code&gt;{image, text, audio}&lt;/code&gt; into a small HTML template with page-flip + play buttons:&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fedu%2Fstorybook-html.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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fedu%2Fstorybook-html.png" width="800" alt="Interactive HTML storybook UI: title bar, illustration, narration, prev/play/next buttons" height="811"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;~200 lines of HTML; the images and audio are all &lt;code&gt;bl&lt;/code&gt; output. &lt;strong&gt;From "write me a firefly story" to a tappable e-book — without opening a single app.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus: it's also a tutor
&lt;/h2&gt;

&lt;p&gt;Same &lt;code&gt;bl text chat&lt;/code&gt;, different persona:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl text chat &lt;span class="nt"&gt;--system&lt;/span&gt; &lt;span class="s2"&gt;"You are an IELTS speaking examiner."&lt;/span&gt; &lt;span class="nt"&gt;--message&lt;/span&gt; &lt;span class="s2"&gt;"Score this answer on fluency, vocabulary, grammar, pronunciation and suggest fixes: 'I very like play basketball on weekend.'"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Honest limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Consistency isn't 100% — generate a few, pick the best.&lt;/li&gt;
&lt;li&gt;Video (&lt;code&gt;video generate&lt;/code&gt;) is async; poll with &lt;code&gt;bl video task get&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Assembling PDF/video/HTML is a separate step (template included).&lt;/li&gt;
&lt;li&gt;Adults should vet the content — AI is the pen, not the author.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bailian.console.aliyun.com/cli?source_channel=cli_github" rel="noopener noreferrer"&gt;Install Bailian CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Get a free API key&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;All examples run on Bailian CLI (bl 1.4.2); illustrations, comic, and the book UI are real &lt;code&gt;bl&lt;/code&gt; output. &lt;a href="https://www.alibabacloud.com/help/zh/model-studio/model-pricing" rel="noopener noreferrer"&gt;Model Studio pricing&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The AI Image Toolkit: One CLI for Background Removal, Portraits, Manga, and 3D</title>
      <dc:creator>张洲诚（Zack.ZHANG）</dc:creator>
      <pubDate>Fri, 10 Jul 2026 10:56:32 +0000</pubDate>
      <link>https://dev.to/zackzhang/the-ai-image-toolkit-one-cli-for-background-removal-portraits-manga-and-3d-320h</link>
      <guid>https://dev.to/zackzhang/the-ai-image-toolkit-one-cli-for-background-removal-portraits-manga-and-3d-320h</guid>
      <description>&lt;p&gt;AI image editing tools are everywhere, but each does only one thing. Remove.bg does cutouts. Miaoya does portraits. Midjourney does generation. To chain 5 needs, you switch between 5 platforms.&lt;/p&gt;

&lt;p&gt;Bailian CLI packs 28+ image capabilities into one CLI. Here are 10 tested scenarios.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; bailian-cli
bl config &lt;span class="nb"&gt;set &lt;/span&gt;api_key YOUR_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Get your key from the &lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Model Studio console&lt;/a&gt; — free credits for new accounts.&lt;/p&gt;

&lt;h2&gt;
  
  
  6 Core Scenarios
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Background Removal
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl image edit &lt;span class="nt"&gt;--input&lt;/span&gt; photo.jpg &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Automatically detect the person and remove the background, preserving edge details including hair strands"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fresized%2F22-matting-compare.png%3Fv%3D1" 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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fresized%2F22-matting-compare.png%3Fv%3D1" width="720" alt="Background removal before/after" height="720"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. AI Object Removal
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl image edit &lt;span class="nt"&gt;--input&lt;/span&gt; cat.jpg &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Remove the sofa and clutter in the background, replace with clean Japanese-style minimalist living room, keep only the orange cat"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fresized%2F31-erase-compare.png%3Fv%3D1" 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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fresized%2F31-erase-compare.png%3Fv%3D1" width="760" alt="AI object removal before/after" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Style Transfer
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl image edit &lt;span class="nt"&gt;--input&lt;/span&gt; street.jpg &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Convert this real city street photo into Japanese anime style, Studio Ghibli style, bright blue sky and fluffy white clouds"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2F%25E7%25A4%25BA%25E6%2584%258F%25E5%259B%25BE%2F34-%25E9%25A3%258E%25E6%25A0%25BC%25E8%25BF%2581%25E7%25A7%25BB-s4_compare.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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2F%25E7%25A4%25BA%25E6%2584%258F%25E5%259B%25BE%2F34-%25E9%25A3%258E%25E6%25A0%25BC%25E8%25BF%2581%25E7%25A7%25BB-s4_compare.png" width="800" alt="Style transfer before/after" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. AI Portrait
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl image generate &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Generate 5 vintage film photography shots, visible film grain, authentic lighting, retro tones, Fujifilm filter"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2F%25E8%25BE%2593%25E5%2587%25BA%25E9%2599%2584%25E4%25BB%25B6%2FAI%25E5%2586%2599%25E7%259C%259F%25E7%2594%259F%25E6%2588%2590%2F178-AI%25E5%2586%2599%25E7%259C%259F%25E7%2594%259F%25E6%2588%2590-edited_%25E5%25A4%258D%25E5%258F%25A4%25E8%2583%25B6%25E7%2589%2587%25E6%2591%2584%25E5%25BD%25B1%252C%25E8%2583%25B6%25E7%2589%2587%25E9%25A2%2597%25E7%25B2%2592%25E7%25BA%25B9%25E7%2590%2586%25E4%25BA%25A4%25E7%25BB%2587%252C%25E5%25AF%258C%25E5%25A3%25AB%25E6%25BB%25A4%25E9%2595%259C_1778569939934.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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2F%25E8%25BE%2593%25E5%2587%25BA%25E9%2599%2584%25E4%25BB%25B6%2FAI%25E5%2586%2599%25E7%259C%259F%25E7%2594%259F%25E6%2588%2590%2F178-AI%25E5%2586%2599%25E7%259C%259F%25E7%2594%259F%25E6%2588%2590-edited_%25E5%25A4%258D%25E5%258F%25A4%25E8%2583%25B6%25E7%2589%2587%25E6%2591%2584%25E5%25BD%25B1%252C%25E8%2583%25B6%25E7%2589%2587%25E9%25A2%2597%25E7%25B2%2592%25E7%25BA%25B9%25E7%2590%2586%25E4%25BA%25A4%25E7%25BB%2587%252C%25E5%25AF%258C%25E5%25A3%25AB%25E6%25BB%25A4%25E9%2595%259C_1778569939934.png" width="800" alt="AI portrait generation result" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Manga Generation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl image generate &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Generate a 4-panel manga about a cat programmer's day, cute healing style"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fresized%2F104-manga-strip.png%3Fv%3D1" 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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2Fresized%2F104-manga-strip.png%3Fv%3D1" width="760" alt="Manga generation result" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. 3D Figure
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl image generate &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Generate Pikachu 3D figure, ABS or PVC or resin material, high detail, smooth surface"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2F%25E8%25BE%2593%25E5%2587%25BA%25E9%2599%2584%25E4%25BB%25B6%2F171-3D%25E6%2589%258B%25E5%258A%259E%25E7%2594%259F%25E6%2588%2590-4b5c8ce1-551a-43fa-a4be-3bb774750d7c.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%2Fwan27.oss-cn-beijing.aliyuncs.com%2Fbailian_cli_operation%2F%25E8%25BE%2593%25E5%2587%25BA%25E9%2599%2584%25E4%25BB%25B6%2F171-3D%25E6%2589%258B%25E5%258A%259E%25E7%2594%259F%25E6%2588%2590-4b5c8ce1-551a-43fa-a4be-3bb774750d7c.png" width="800" alt="3D figure generation result" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Case&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Single-Image LoRA&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bl image edit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Character consistency generation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI Headshot&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bl image edit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;T-shirt to business suit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9-Grid Comic&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bl image generate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Photo to comic strip&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time Machine&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bl image edit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;B&amp;amp;W to color&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Batch Processing
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;file &lt;span class="k"&gt;in &lt;/span&gt;photos/&lt;span class="k"&gt;*&lt;/span&gt;.jpg&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;bl image edit &lt;span class="nt"&gt;--input&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Remove background"&lt;/span&gt; &lt;span class="nt"&gt;--output&lt;/span&gt; &lt;span class="s2"&gt;"output/cutout_&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;basename&lt;/span&gt; &lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Cost
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operation&lt;/th&gt;
&lt;th&gt;CLI&lt;/th&gt;
&lt;th&gt;Traditional&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Background removal&lt;/td&gt;
&lt;td&gt;$0.07/image&lt;/td&gt;
&lt;td&gt;Photoshop 30 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI portrait&lt;/td&gt;
&lt;td&gt;$0.07/image&lt;/td&gt;
&lt;td&gt;$1.40/shot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manga&lt;/td&gt;
&lt;td&gt;$0.07/image&lt;/td&gt;
&lt;td&gt;$70-300/strip&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3D figure&lt;/td&gt;
&lt;td&gt;$0.07/image&lt;/td&gt;
&lt;td&gt;$70-300/figure&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Requires CLI basics 2. Text rendering errors 3. Details may mutate 4. 3D is render, not model file&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://bailian.console.aliyun.com/cli?source_channel=cli_github" rel="noopener noreferrer"&gt;Install&lt;/a&gt; | &lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Free API Key&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Built a 6-Step E-Commerce Visual Pipeline Using Only CLI Commands</title>
      <dc:creator>张洲诚（Zack.ZHANG）</dc:creator>
      <pubDate>Thu, 09 Jul 2026 06:09:52 +0000</pubDate>
      <link>https://dev.to/zackzhang/i-built-a-6-step-e-commerce-visual-pipeline-using-only-cli-commands-i48</link>
      <guid>https://dev.to/zackzhang/i-built-a-6-step-e-commerce-visual-pipeline-using-only-cli-commands-i48</guid>
      <description>

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;E-commerce product listing requires visual assets at scale. Each SKU needs: 5 white-background shots, 4 lifestyle scenes, 3 model photos, 2 marketing banners, and 1 showcase video.&lt;/p&gt;

&lt;p&gt;Industry pricing (2026 China market reference): basic product photography runs &lt;strong&gt;$110-700/set&lt;/strong&gt;, full shoots with models and video reach &lt;strong&gt;$1,400+&lt;/strong&gt;. For 20 products, that's tens of thousands just on visuals.&lt;/p&gt;

&lt;p&gt;As a developer, when I see repetitive work, I think about scripting. So I went looking for an automation-first solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why GUI Tools Failed Me
&lt;/h2&gt;

&lt;p&gt;Every AI image tool I tried only solved one step:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tool A does background removal, not model try-on&lt;/li&gt;
&lt;li&gt;Tool B generates great images but loses product details&lt;/li&gt;
&lt;li&gt;Tool C is full-featured but costs $30-70/month with image caps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The real problem wasn't quality — it was the &lt;strong&gt;manual pipeline between tools&lt;/strong&gt;. Download from A, upload to B, download from B, upload to C. Repeat 20 times.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Fix: CLI = Scriptable = Batchable
&lt;/h2&gt;

&lt;p&gt;I discovered Bailian CLI (&lt;code&gt;bl&lt;/code&gt;) — it wraps image generation, image editing, and video generation into a single command-line tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; bailian-cli
bl config &lt;span class="nb"&gt;set &lt;/span&gt;api_key YOUR_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Get a free API key&lt;/a&gt; — starter credits cover this entire tutorial.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  My 6-Step Pipeline
&lt;/h2&gt;

&lt;p&gt;Product: Vintage brown leather crossbody bag.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: White-background product shot
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl image generate &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"vintage brown leather crossbody bag, white background, product photography, 45-degree angle"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;For example: &lt;em&gt;"Generate 4 e-commerce hero images in different scene styles, covering dining, kitchen, home, and café scenarios"&lt;/em&gt; — just describe what you need in plain language.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 2: Lifestyle scene
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl image edit &lt;span class="nt"&gt;--image&lt;/span&gt; ./product-white.png &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Place bag on rustic café table, warm lighting, lifestyle feel"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;For example: &lt;em&gt;"Generate a suitable background for the product in the image, conveying a refreshing, cool sensation"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 3: Virtual model try-on
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl image edit &lt;span class="nt"&gt;--image&lt;/span&gt; ./product-white.png &lt;span class="nt"&gt;--reference&lt;/span&gt; ./model-photo.png &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Model wearing this crossbody bag naturally, maintain pose"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;For example: &lt;em&gt;"Virtual try-on of clothing onto my own body, keeping my face, body shape, and pose unchanged"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 4: Style variants
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl image edit &lt;span class="nt"&gt;--image&lt;/span&gt; ./scene.png &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"6 style variants: warm soft, cool minimal, vintage film, Japanese fresh, dark luxury, vibrant Instagram"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;For example: &lt;em&gt;"Generate 6 different style variants: warm soft-light, cool minimal, vintage film, fresh Japanese, dark luxury, vibrant Instagram"&lt;/em&gt; — exact same wording works.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 5: Marketing banner
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl image generate &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"E-commerce banner, bag centered, bold '50% OFF', gold accents, dark background"&lt;/span&gt; &lt;span class="nt"&gt;--size&lt;/span&gt; 1280x720
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;For example: &lt;em&gt;"Generate a high-quality e-commerce marketing poster suitable for Taobao and Xiaohongshu platforms"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 6: Product video
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl video generate &lt;span class="nt"&gt;--image&lt;/span&gt; ./scene.png &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Product rotating on turntable, warm lighting, bokeh"&lt;/span&gt; &lt;span class="nt"&gt;--duration&lt;/span&gt; 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;For example: &lt;em&gt;"Generate a product showcase video suitable for Douyin/TikTok and Kuaishou platforms"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Batch Mode
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;product &lt;span class="k"&gt;in &lt;/span&gt;crossbody-bag tote backpack wallet belt&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;bl image generate &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;product&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;, white background, product photography"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--output&lt;/span&gt; &lt;span class="s2"&gt;"./output/&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;product&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;-main.png"&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;20 SKUs done in one coffee break.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost Comparison
&lt;/h2&gt;

&lt;p&gt;Based on &lt;a href="https://www.alibabacloud.com/help/zh/model-studio/model-pricing" rel="noopener noreferrer"&gt;Bailian official pricing&lt;/a&gt; (July 2026): &lt;code&gt;qwen-image-2.0-pro&lt;/code&gt; = $0.071676/image, &lt;code&gt;wan2.6-i2v&lt;/code&gt; 720P = $0.086012/sec.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Traditional (China market)&lt;/th&gt;
&lt;th&gt;CLI (official pricing)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Total per SKU&lt;/td&gt;
&lt;td&gt;~$780-1,850&lt;/td&gt;
&lt;td&gt;~$1.44&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time per SKU&lt;/td&gt;
&lt;td&gt;5-7 days&lt;/td&gt;
&lt;td&gt;15-20 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch capability&lt;/td&gt;
&lt;td&gt;Linear&lt;/td&gt;
&lt;td&gt;Scriptable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Traditional pricing: 2026 industry survey data. CLI cost: 15 images × $0.072 + 5s video × $0.086.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Honest Take
&lt;/h2&gt;

&lt;p&gt;Key limitations to note:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Works great for&lt;/strong&gt;: Small-to-medium sellers, daily listings, flash sale prep&lt;br&gt;
&lt;strong&gt;Limitations&lt;/strong&gt;: Text rendering occasionally glitches, fine metal details (buckles/zippers) can "mutate", luxury goods still need real photography&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://bailian.console.aliyun.com/cli?source_channel=cli_github" rel="noopener noreferrer"&gt;Install CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Free API key&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're the "script everything" type, this might be the highest-ROI tool discovery of the year for e-commerce visuals.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I've Been Trying to Write AI Video Prompts for Months. They All Sucked Until I Found a Formula.</title>
      <dc:creator>张洲诚（Zack.ZHANG）</dc:creator>
      <pubDate>Mon, 06 Jul 2026 03:50:20 +0000</pubDate>
      <link>https://dev.to/zackzhang/ive-been-trying-to-write-ai-video-prompts-for-months-they-all-sucked-until-i-found-a-formula-4c54</link>
      <guid>https://dev.to/zackzhang/ive-been-trying-to-write-ai-video-prompts-for-months-they-all-sucked-until-i-found-a-formula-4c54</guid>
      <description>&lt;h2&gt;
  
  
  The Problem Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;Everyone's posting AI-generated videos — characters speaking with lip-sync, manga panels coming alive, virtual idols dancing. The pitch: "just describe what you want."&lt;/p&gt;

&lt;p&gt;I tried. For months. Here's what I got:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Character's face morphed by frame 2&lt;/li&gt;
&lt;li&gt;"Slowly looks up" became "violent head shake"&lt;/li&gt;
&lt;li&gt;Voice-over sounded like Google Translate&lt;/li&gt;
&lt;li&gt;Same prompt, 3 runs, 3 completely different results&lt;/li&gt;
&lt;li&gt;No idea what to include or how long the prompt should be&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tutorials were either too vague ("be detailed") or too technical (parameter tuning from line 1).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The real issue: video prompts are structurally different from text/image prompts.&lt;/strong&gt; You need to simultaneously control visuals, motion, audio, camera, and consistency constraints — in the right order, at the right length.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Found
&lt;/h2&gt;

&lt;p&gt;A Skill in the Model Studio official repo called &lt;strong&gt;happyhorse-prompt-studio&lt;/strong&gt;. It doesn't teach you theory — it &lt;strong&gt;asks you questions and assembles the prompt for you&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;4-phase flow:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Inspiration Menu
&lt;/h3&gt;

&lt;p&gt;Shows you 4 "flavors" of what HappyHorse can do:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Flavor&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A · Voiced Manga Drama&lt;/td&gt;
&lt;td&gt;Characters talk to each other, with voice + lip-sync&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B · Character Voice PV&lt;/td&gt;
&lt;td&gt;Single character self-introduction, 8-10 sec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C · Manga Panel Motion&lt;/td&gt;
&lt;td&gt;Static manga panel starts breathing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D · Virtual Idol MV&lt;/td&gt;
&lt;td&gt;Idol performance with choreography&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  2. Discovery
&lt;/h3&gt;

&lt;p&gt;Asks you conversationally: character appearance, scene, emotion, dialogue, voice type, art style, camera.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Prompt Assembly
&lt;/h3&gt;

&lt;p&gt;Assembles using the &lt;strong&gt;HappyHorse Formula&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scene + Subject + Motion + Audio + Quality
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key techniques:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;@「Image n」&lt;/code&gt; syntax locks character identity across shots&lt;/li&gt;
&lt;li&gt;Dialogue ≤15 characters (split shots if longer)&lt;/li&gt;
&lt;li&gt;Japanese prompts work best (HappyHorse is JP-optimized)&lt;/li&gt;
&lt;li&gt;Always end with &lt;code&gt;キャラの顔・髪・衣装が変わらない&lt;/code&gt; (face/hair/outfit stays unchanged)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Quality Check
&lt;/h3&gt;

&lt;p&gt;Auto-reviews: completeness, compliance, cost estimate, optimization tips.&lt;/p&gt;




&lt;h2&gt;
  
  
  Before vs. After
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Writing myself&lt;/th&gt;
&lt;th&gt;With Prompt Studio&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Attempts needed&lt;/td&gt;
&lt;td&gt;10-20 before one usable&lt;/td&gt;
&lt;td&gt;2-3 to satisfaction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time per prompt&lt;/td&gt;
&lt;td&gt;1-2 hours (research + trial)&lt;/td&gt;
&lt;td&gt;5-10 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Character consistency&lt;/td&gt;
&lt;td&gt;Collapsed by frame 2&lt;/td&gt;
&lt;td&gt;R2V syntax locks it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Common pitfalls&lt;/td&gt;
&lt;td&gt;Learned by failing&lt;/td&gt;
&lt;td&gt;Built-in troubleshooting&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Honest Limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No guarantee of perfection on first try (AI video has inherent randomness)&lt;/li&gt;
&lt;li&gt;Can't replace your creativity (character design is still yours)&lt;/li&gt;
&lt;li&gt;Max ~30 seconds per generation&lt;/li&gt;
&lt;li&gt;Requires API key (free tier available)&lt;/li&gt;
&lt;li&gt;Japanese prompts get best results; CN/EN work but JP is optimized&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add modelstudioai/skills &lt;span class="nt"&gt;--skill&lt;/span&gt; happyhorse-prompt-studio &lt;span class="nt"&gt;-g&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then tell your AI assistant: "I want to make a video with HappyHorse"&lt;/p&gt;

&lt;p&gt;Execute the assembled prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bl video generate &lt;span class="nt"&gt;--image&lt;/span&gt; ./char.png &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"[assembled prompt]"&lt;/span&gt; &lt;span class="nt"&gt;--download&lt;/span&gt; output.mp4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/modelstudioai/skills/tree/main/skills/happyhorse-prompt-studio?source_channel=hh_github" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bailian.console.aliyun.com/cn-beijing?tab=demohouse#/experience/t2v?source_channel=hh_github" rel="noopener noreferrer"&gt;HappyHorse 1.1 Experience Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bailian.console.aliyun.com/?tab=model#/api-key?source_channel=hh_github" rel="noopener noreferrer"&gt;Get free API Key&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/modelstudioai/awesome-happyhorse-prompts" rel="noopener noreferrer"&gt;Prompt reference library&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Open-source Skill. Free tier available. Results subject to model randomness.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>videogeneration</category>
      <category>promptengineering</category>
      <category>creativecoding</category>
    </item>
    <item>
      <title>I've Been Watching Vibe Coding Posts for Months. I Finally Shipped Something Playable</title>
      <dc:creator>张洲诚（Zack.ZHANG）</dc:creator>
      <pubDate>Fri, 03 Jul 2026 10:51:31 +0000</pubDate>
      <link>https://dev.to/zackzhang/ive-been-watching-vibe-coding-posts-for-months-i-finally-shipped-something-playable-fbf</link>
      <guid>https://dev.to/zackzhang/ive-been-watching-vibe-coding-posts-for-months-i-finally-shipped-something-playable-fbf</guid>
      <description>&lt;h2&gt;
  
  
  The Vibe Coding Gap
&lt;/h2&gt;

&lt;p&gt;My feed has been full of "I built X with AI in one afternoon" posts for months. Chrome extensions, SaaS tools, mini-games — everyone seemed to be shipping.&lt;/p&gt;

&lt;p&gt;I wanted to make an interactive fiction game. Branching story, multiple endings, character art, music. A visual novel you play in the browser.&lt;/p&gt;

&lt;p&gt;So I tried the standard vibe coding approach:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;"Build me a branching story engine in React"&lt;/strong&gt; → AI wrote something. It ran. Then I spent 3 days debugging state management bugs in the branching logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Generate character portraits"&lt;/strong&gt; → Got images, but each one looked like a different art style. No consistency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Add background music"&lt;/strong&gt; → AI suggested downloading royalty-free tracks. Now I'm managing audio files and dealing with licensing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Make choices meaningful"&lt;/strong&gt; → The branching logic AI wrote had fake branches everywhere — choose A or B, see the same next scene.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After two weeks: a broken prototype with inconsistent art and no audio. The "vibe" was gone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Realization: vibe coding is great for single-domain tasks. Multi-domain projects (story + logic + art + audio + frontend) fall apart because each prompt is isolated.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What novel-game Does Differently
&lt;/h2&gt;

&lt;p&gt;Found &lt;a href="https://github.com/modelstudioai/skills" rel="noopener noreferrer"&gt;novel-game&lt;/a&gt; in Alibaba Cloud's Model Studio Skills repo. It's not a "prompt AI to help you code" workflow. It's a &lt;strong&gt;pre-packaged pipeline&lt;/strong&gt; that handles the entire interactive fiction production at once.&lt;/p&gt;

&lt;p&gt;One input:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use novel-game to create an interactive fiction game.
Genre: Sci-fi thriller. Programmer discovers company AI has become sentient.
Player decides what to do. 15 minutes. Image mode. Include BGM.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One output (25 minutes later): a complete, playable game in the browser.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Got vs What Vibe Coding Gave Me
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;My 2-week vibe coding attempt&lt;/th&gt;
&lt;th&gt;novel-game (25 min)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Branching&lt;/td&gt;
&lt;td&gt;Buggy, fake branches&lt;/td&gt;
&lt;td&gt;Real forks (choice = different scenes)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Art&lt;/td&gt;
&lt;td&gt;Inconsistent styles&lt;/td&gt;
&lt;td&gt;Batch-generated, consistent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audio&lt;/td&gt;
&lt;td&gt;Gave up&lt;/td&gt;
&lt;td&gt;Procedural Web Audio (zero files)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Save system&lt;/td&gt;
&lt;td&gt;Didn't get to it&lt;/td&gt;
&lt;td&gt;Auto-save + 3 manual slots&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mobile&lt;/td&gt;
&lt;td&gt;Didn't get to it&lt;/td&gt;
&lt;td&gt;Portrait-first, touch-ready&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Status&lt;/td&gt;
&lt;td&gt;Broken prototype&lt;/td&gt;
&lt;td&gt;Playable game&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Why It Works Where Generic Vibe Coding Didn't
&lt;/h2&gt;

&lt;p&gt;The difference: &lt;strong&gt;novel-game embeds game design expertise, not just code generation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Things I didn't know I needed until I hit them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Choice = fork" principle — every major option must lead to genuinely different scenes (no fake branches)&lt;/li&gt;
&lt;li&gt;When to merge branches back vs let them diverge to separate endings&lt;/li&gt;
&lt;li&gt;Genre → visual theme inference (sci-fi → minimalist modern, wuxia → ink wash)&lt;/li&gt;
&lt;li&gt;Procedural audio that matches scene mood without external files&lt;/li&gt;
&lt;li&gt;Asset pre-generation (zero API calls at runtime)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are lessons indie game devs learn over months. novel-game packages them into the pipeline. You skip the learning tax.&lt;/p&gt;




&lt;h2&gt;
  
  
  Limitations (being honest)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Art style is "digital painting" — you can't guarantee anime style or photorealism&lt;/li&gt;
&lt;li&gt;BGM is procedural — loops become noticeable in longer sessions&lt;/li&gt;
&lt;li&gt;Only works for interactive fiction / visual novels (not action games)&lt;/li&gt;
&lt;li&gt;Costs money — my 15-min game was ~$2. Free credits cover the first one.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; bailian-cli
bl auth login
npx skills add modelstudioai/skills &lt;span class="nt"&gt;--skill&lt;/span&gt; novel-game &lt;span class="nt"&gt;-g&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Needs: Node.js &amp;gt;= 18 + &lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Free API Key&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;If you've been watching vibe coding posts and wondering why your own attempts don't produce finished products — it might not be you. Generic "tell AI to write code" breaks down on multi-domain projects.&lt;/p&gt;

&lt;p&gt;The answer (at least for interactive fiction) isn't better prompting. It's &lt;strong&gt;domain-specific packaging&lt;/strong&gt; — someone already figured out the hard parts and wrapped them into a pipeline.&lt;/p&gt;

&lt;p&gt;25 minutes vs 2 weeks. Same person, same idea, different approach.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/modelstudioai/skills" rel="noopener noreferrer"&gt;modelstudioai/skills&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Free API Key: &lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Get one&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bailian CLI: &lt;a href="https://bailian.console.aliyun.com/cli?source_channel=cli_github&amp;amp;" rel="noopener noreferrer"&gt;Install&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>gamedev</category>
      <category>vibecoding</category>
      <category>interactivefliction</category>
    </item>
    <item>
      <title>I Wanted to Try AI Video But Kept Getting Stuck. This Tool Got Me My First Complete Video in 12 Minutes</title>
      <dc:creator>张洲诚（Zack.ZHANG）</dc:creator>
      <pubDate>Wed, 01 Jul 2026 10:29:22 +0000</pubDate>
      <link>https://dev.to/zackzhang/i-wanted-to-try-ai-video-but-kept-getting-stuck-this-tool-got-me-my-first-complete-video-in-12-3iok</link>
      <guid>https://dev.to/zackzhang/i-wanted-to-try-ai-video-but-kept-getting-stuck-this-tool-got-me-my-first-complete-video-in-12-3iok</guid>
      <description>&lt;h2&gt;
  
  
  The Gap Between "Wanting to Try" and "Actually Doing It"
&lt;/h2&gt;

&lt;p&gt;You've probably seen AI-generated videos on social media. Sora, HappyHorse, Kling — the results look amazing. You want to try it too.&lt;/p&gt;

&lt;p&gt;But then you hit a wall:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Which model?&lt;/strong&gt; text-to-video? image-to-video? What resolution? What parameters?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How much will it cost?&lt;/strong&gt; API pricing is per-second. One video requires multiple model calls. What if the result sucks?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where's the full path?&lt;/strong&gt; Tutorials teach you to generate a 5-second clip. Then what? Script? Editing? Voiceover? Music?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Other creators make it look easy&lt;/strong&gt; — but they clearly spent months learning. You don't have months.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result: you bookmark 20 tutorials, register 3 accounts, and never produce a single complete video.&lt;/p&gt;




&lt;h2&gt;
  
  
  What If Someone Packaged All That Experience For You?
&lt;/h2&gt;

&lt;p&gt;That's exactly what &lt;strong&gt;spark-video&lt;/strong&gt; does.&lt;/p&gt;

&lt;p&gt;It's a Skill from Alibaba Cloud's Model Studio (Bailian) official repository. It takes the accumulated best practices from experienced AI video creators — model selection, shot design, quality control, editing — and packages them into an automated pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you do:&lt;/strong&gt; Type one sentence → confirm 4 times → get a complete mp4.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Write script → design shots → select models → render → quality check (auto-reshoot bad frames) → stitch → add voiceover + BGM → output.&lt;/p&gt;




&lt;h2&gt;
  
  
  My First Video (12 Minutes, Zero Prior Experience)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use spark-video to create a 30-second video.
Content: A cat watching a sunset on a city rooftop. Warm, cozy vibe. 16:9.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What happened:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AI wrote a 4-shot script → asked "OK?" → I said yes&lt;/li&gt;
&lt;li&gt;AI designed each shot + showed cost estimate (~$1.50) → "OK?" → yes&lt;/li&gt;
&lt;li&gt;AI rendered all shots (one auto-reshooted due to low quality score) → "OK?" → yes&lt;/li&gt;
&lt;li&gt;AI stitched final video with BGM → "Final version OK?" → yes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;12 minutes later: I had my first complete AI video.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No model selection. No parameter tuning. No editing skills needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Works for Beginners
&lt;/h2&gt;

&lt;p&gt;The design philosophy is: &lt;strong&gt;hide complexity, expose decisions&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;You decide&lt;/th&gt;
&lt;th&gt;spark-video handles&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;What video you want&lt;/td&gt;
&lt;td&gt;Script writing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"OK" or "change this"&lt;/td&gt;
&lt;td&gt;Shot design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"OK" or "too expensive"&lt;/td&gt;
&lt;td&gt;Model selection + rendering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"OK" or "reshoot that"&lt;/td&gt;
&lt;td&gt;Quality control + retries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"OK" or "tweak audio"&lt;/td&gt;
&lt;td&gt;Stitching + voiceover + BGM&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  On Cost (The #1 Fear)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Cost estimate shown &lt;strong&gt;before&lt;/strong&gt; rendering starts&lt;/li&gt;
&lt;li&gt;Typical 30-second video: $1-3&lt;/li&gt;
&lt;li&gt;New users get free credits — first video essentially costs nothing&lt;/li&gt;
&lt;li&gt;Compare: randomly calling APIs yourself without best practices = 10x wasted spend on failed attempts&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Installation (3 Minutes)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; bailian-cli
bl auth login
npx skills add modelstudioai/skills &lt;span class="nt"&gt;--skill&lt;/span&gt; spark-video &lt;span class="nt"&gt;-g&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Requirements: Node.js + &lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Bailian API Key&lt;/a&gt; (free) + ffmpeg&lt;/p&gt;

&lt;p&gt;Or just tell your AI assistant:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Install spark-video &lt;span class="k"&gt;for &lt;/span&gt;me. Handle Node.js, bailian-cli, and ffmpeg setup.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Under the Hood (Optional Reading)
&lt;/h2&gt;

&lt;p&gt;For the technically curious, spark-video uses a multi-agent architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Producer&lt;/strong&gt;: Orchestrator (no production work, only routing)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screenwriter&lt;/strong&gt;: Script generation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Director&lt;/strong&gt;: Shot design + render prompt engineering&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cast&lt;/strong&gt;: Character consistency management (prevents "face changing" between shots)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clip-Review / VFX-Review&lt;/strong&gt;: Automated QA via vision models (score ≥ 7.0 = pass)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stitch&lt;/strong&gt;: ffmpeg composition + TTS + BGM mixing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Key patterns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DAG scheduling (parallel across scene groups, serial within groups for continuity)&lt;/li&gt;
&lt;li&gt;Retry-with-escalation (3 auto-retries, then escalate to user)&lt;/li&gt;
&lt;li&gt;Cost gate (GATE 2 shows estimate before spending)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But you don't need to know any of this to use it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Is This For?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Anyone who's been &lt;strong&gt;wanting to try AI video but hasn't started&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;People who find existing tools too complex or too expensive to experiment with&lt;/li&gt;
&lt;li&gt;Content creators who want to &lt;strong&gt;skip the trial-and-error phase&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not for: feature films, frame-perfect animation, photorealistic human faces.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Barrier
&lt;/h2&gt;

&lt;p&gt;The barrier to AI video creation was never talent or technical skill. It was &lt;strong&gt;not having a simple enough starting point&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;spark-video is that starting point. Expert methods, officially verified, packaged for beginners.&lt;/p&gt;

&lt;p&gt;Your first AI video is 10 minutes away.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/modelstudioai/skills" rel="noopener noreferrer"&gt;modelstudioai/skills&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bailian CLI: &lt;a href="https://bailian.console.aliyun.com/cli?source_channel=cli_github&amp;amp;" rel="noopener noreferrer"&gt;Install&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - API Key: &lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Free&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;title: "AI Video Production in One Prompt: From Script to Final MP4 in 10 Minutes"&lt;br&gt;
published: true&lt;br&gt;
description: "How spark-video turns your AI Agent into a full video production pipeline — screenplay, storyboard, render, QA, and stitch, all automated."&lt;br&gt;
tags: ["ai", "video", "productivity", "tutorial"]&lt;br&gt;
cover_image: ""&lt;/p&gt;
&lt;h2&gt;
  
  
  canonical_url: "&lt;a href="https://github.com/modelstudioai/skills/tree/main/skills/spark-video" rel="noopener noreferrer"&gt;https://github.com/modelstudioai/skills/tree/main/skills/spark-video&lt;/a&gt;"
&lt;/h2&gt;
&lt;h1&gt;
  
  
  AI Video Production in One Prompt
&lt;/h1&gt;
&lt;h2&gt;
  
  
  The Problem Nobody's Solving
&lt;/h2&gt;

&lt;p&gt;Here's what AI video tools look like in 2026:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sora/Kling&lt;/strong&gt;: Generate stunning 5-10 second clips. Then you write the script yourself, stitch clips yourself, add voiceover yourself, mix audio yourself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CapCut/templates&lt;/strong&gt;: Select a template, drag in your assets. Creative freedom? Zero.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The gap: &lt;strong&gt;There's no tool that takes "I want a product ad" and delivers a complete MP4.&lt;/strong&gt; Until now.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Is spark-video?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/modelstudioai/skills" rel="noopener noreferrer"&gt;spark-video&lt;/a&gt; is an AI Agent Skill that turns your coding assistant (Qwen Code, Claude Code, Cursor, etc.) into a full video production pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your one-sentence premise
        ↓
Screenwriter (writes multi-scene script)
        ↓
Director (creates shot-by-shot storyboard)
        ↓
HappyHorse model (renders each shot in parallel)
        ↓
Auto QA (vision model scores each clip, retries if &amp;lt; 7/10)
        ↓
ffmpeg stitch + TTS voiceover + BGM mix
        ↓
Complete MP4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You confirm at 4 gates. Creative control stays with you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real Examples
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Product ad&lt;/strong&gt; — input:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use spark-video to create a premium wireless headphone ad.
Product image: ~/headphone.webp
Copy: "AirWave Pro — adaptive noise cancellation, spatial audio, 28h battery."
16:9. Loop BGM.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result: 30-second product ad. &lt;strong&gt;12 minutes. ~$1 in API costs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explainer&lt;/strong&gt; — input:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pop-science video, under 3 min: why cats always land on their feet.
Narration mode.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result: 3-minute explainer with TTS voiceover.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vertical short drama&lt;/strong&gt; — input:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Suspense: programmer works late, elevator comes from nonexistent floor B1.
9:16 vertical. Drama mode.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result: 2-minute vertical short for TikTok/Reels.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture (Why It's Different)
&lt;/h2&gt;

&lt;p&gt;The key insight: &lt;strong&gt;spark-video is not a video generator. It's a video production Agent.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6 Sub-Skills
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Producer&lt;/strong&gt;: Orchestrator, manages 4 confirmation gates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screenwriter&lt;/strong&gt;: Writes multi-scene screenplay&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Director&lt;/strong&gt;: Creates JSON storyboard per scene&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cast&lt;/strong&gt;: Manages character consistency (cast.json)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clip-Review&lt;/strong&gt;: Auto-QA with vision model scoring&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stitch&lt;/strong&gt;: ffmpeg concat + audio mixing&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  DAG-based Parallel Rendering
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;chain_groups&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;S01-001&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;S01-002&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;S01-003&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;  &lt;span class="c1"&gt;# sequential (frame continuity)
&lt;/span&gt;    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;S02-001&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;S02-002&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;              &lt;span class="c1"&gt;# parallel with above
&lt;/span&gt;    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;S03-001&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;                          &lt;span class="c1"&gt;# parallel with above
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Within a chain group: sequential (last frame → first frame chaining).&lt;br&gt;
Between chain groups: parallel (up to 4 concurrent).&lt;/p&gt;

&lt;h3&gt;
  
  
  Auto QA + Escalation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Render → Vision model scores → &amp;gt;= 7.0 → ACCEPT
                              → &amp;lt; 7.0  → rewrite prompt → retry (max 3)
                                       → exhausted → escalate to Director
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; bailian-cli &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; bl auth login
npx skills add modelstudioai/skills &lt;span class="nt"&gt;--skill&lt;/span&gt; spark-video &lt;span class="nt"&gt;-g&lt;/span&gt;

&lt;span class="c"&gt;# Use (in your AI Agent)&lt;/span&gt;
&lt;span class="s2"&gt;"Use spark-video to make a product ad. Project: demo, episode 1.
 Product: smart watch. Selling points: 7-day battery, blood oxygen. 30s, 16:9."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;: Node.js &amp;gt;= 18, &lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;API Key (free)&lt;/a&gt;, ffmpeg.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Use
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Use case&lt;/th&gt;
&lt;th&gt;Fit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Product ads (30s-2min)&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Explainers (1-5min)&lt;/td&gt;
&lt;td&gt;Great&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Short dramas (1-3min)&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Social media content&lt;/td&gt;
&lt;td&gt;Great&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30+ min long-form&lt;/td&gt;
&lt;td&gt;Not ideal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Photorealistic live-action&lt;/td&gt;
&lt;td&gt;Not ideal&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/modelstudioai/skills" rel="noopener noreferrer"&gt;modelstudioai/skills&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CLI: &lt;a href="https://bailian.console.aliyun.com/cli?source_channel=cli_github&amp;amp;" rel="noopener noreferrer"&gt;https://bailian.console.aliyun.com/cli?source_channel=cli_github&amp;amp;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;API Key: &lt;a href="https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&amp;amp;tab=app#/api-key" rel="noopener noreferrer"&gt;Free signup&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full tutorial: &lt;a href="https://modelstudioai.github.io/guide/" rel="noopener noreferrer"&gt;modelstudioai.github.io/guide/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>video</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
