<?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: TreeLin</title>
    <description>The latest articles on DEV Community by TreeLin (@treelin).</description>
    <link>https://dev.to/treelin</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%2F4001662%2F07c2b3e7-c27b-4cad-a66d-23b0798d8773.jpg</url>
      <title>DEV Community: TreeLin</title>
      <link>https://dev.to/treelin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/treelin"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>TreeLin</dc:creator>
      <pubDate>Thu, 25 Jun 2026 06:50:35 +0000</pubDate>
      <link>https://dev.to/treelin/-351e</link>
      <guid>https://dev.to/treelin/-351e</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/treelin/turn-any-novel-into-a-playable-browser-game-in-30-minutes-meet-novel-game-skill-57f1" class="crayons-story__hidden-navigation-link"&gt;Turn any novel into a playable browser game in 30 minutes — meet novel-game skill&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/treelin" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4001662%2F07c2b3e7-c27b-4cad-a66d-23b0798d8773.jpg" alt="treelin profile" class="crayons-avatar__image" width="150" height="150"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/treelin" class="crayons-story__secondary fw-medium m:hidden"&gt;
              TreeLin
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                TreeLin
                
              
              &lt;div id="story-author-preview-content-3984989" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/treelin" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4001662%2F07c2b3e7-c27b-4cad-a66d-23b0798d8773.jpg" class="crayons-avatar__image" alt="" width="150" height="150"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;TreeLin&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/treelin/turn-any-novel-into-a-playable-browser-game-in-30-minutes-meet-novel-game-skill-57f1" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/treelin/turn-any-novel-into-a-playable-browser-game-in-30-minutes-meet-novel-game-skill-57f1" id="article-link-3984989"&gt;
          Turn any novel into a playable browser game in 30 minutes — meet novel-game skill
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/treelin/turn-any-novel-into-a-playable-browser-game-in-30-minutes-meet-novel-game-skill-57f1" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/treelin/turn-any-novel-into-a-playable-browser-game-in-30-minutes-meet-novel-game-skill-57f1#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Turn any novel into a playable browser game in 30 minutes — meet novel-game skill</title>
      <dc:creator>TreeLin</dc:creator>
      <pubDate>Thu, 25 Jun 2026 06:05:50 +0000</pubDate>
      <link>https://dev.to/treelin/turn-any-novel-into-a-playable-browser-game-in-30-minutes-meet-novel-game-skill-57f1</link>
      <guid>https://dev.to/treelin/turn-any-novel-into-a-playable-browser-game-in-30-minutes-meet-novel-game-skill-57f1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;A new ModelStudio Skill ships today — feed it any novel or short story and it scaffolds a full React SPA with branching scenes, AI-generated portraits, cinematic cutscenes, optional TTS narration, procedural Web Audio music, and save slots. Then you open &lt;code&gt;localhost&lt;/code&gt; and play.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/modelstudioai/skills" rel="noopener noreferrer"&gt;github.com/modelstudioai/skills&lt;/a&gt;&lt;br&gt;
Skill path: &lt;a href="https://github.com/modelstudioai/skills/tree/main/skills/novel-game" rel="noopener noreferrer"&gt;&lt;code&gt;skills/novel-game/&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
By &lt;a href="https://github.com/modelstudioai" rel="noopener noreferrer"&gt;ModelStudioAI&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What it actually does
&lt;/h2&gt;

&lt;p&gt;In one sentence: &lt;strong&gt;hand your Agent a novel, get back a playable browser game you can share with a friend.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is not "generate a plot synopsis and call it interactive". It is not "here is a prompt, go paste it into some web UI". The &lt;code&gt;novel-game&lt;/code&gt; skill literally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scaffolds a real React project with full scene graph, character roster, branching choices, endings, and a save system;&lt;/li&gt;
&lt;li&gt;generates &lt;em&gt;every asset&lt;/em&gt; offline via the &lt;code&gt;bl&lt;/code&gt; CLI — character portraits as 5-second looping videos or "breathing" still images, cutscenes as 1080p video or Ken-Burns-style stills, narration via TTS, BGM and SFX procedurally synthesized through Web Audio (no external audio files);&lt;/li&gt;
&lt;li&gt;downloads everything to &lt;code&gt;public/assets/&lt;/code&gt; so the running game makes &lt;strong&gt;zero API calls&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;spins up the dev server. Open the browser, play it, on desktop or mobile.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A typical run produces 8–10 scenes, 3–5 branching endings, 6–8 AI portraits, 5–8 AI cutscenes, a procedural soundtrack, and three manual save slots plus autosave.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;It is the first true end-to-end demo of the &lt;code&gt;bl&lt;/code&gt; multimodal stack.&lt;/strong&gt; Earlier first-party skills lean on a single modality — docs lookup, prompt studio, financial agent, single-shot short-form video. &lt;code&gt;novel-game&lt;/code&gt; is the first that wires video + image + speech + procedural audio + frontend engineering into a single pipeline whose output you can click on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It pushes "Agent Skill" from tool-call to product delivery.&lt;/strong&gt; Most skills today expose an API. This one delegates a creative pipeline and hands back a runnable web app. That is a different abstraction altogether.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is the cleanest "show, don't tell" demo we have.&lt;/strong&gt; Walking a stakeholder through a live run beats ten slides — &lt;em&gt;the Agent literally turned a novel into a game while we watched&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The pipeline in six steps
&lt;/h2&gt;

&lt;p&gt;The full version lives in &lt;a href="https://github.com/modelstudioai/skills/blob/main/skills/novel-game/SKILL.md" rel="noopener noreferrer"&gt;&lt;code&gt;SKILL.md&lt;/code&gt;&lt;/a&gt;. Condensed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1 · Requirements&lt;/strong&gt;. The Agent fires a single &lt;code&gt;AskUserQuestion&lt;/code&gt; with seven decisions: source material (EPUB / TXT / freeform prompt), game type (visual novel / text adventure / text RPG), UI style (pixel / cyberpunk / ink-wash / minimal), narrative POV, asset mode (video / image / hybrid — hybrid recommended), audio mode (BGM only / +SFX / +TTS narration), target duration (15 / 30 / 60+ minutes).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2 · Story design&lt;/strong&gt;. Extract 1–3 main lines, 3–5 branching choice points, 3–5 endings, 6–8 characters, 5–8 cutscene moments, plus unlockable codex entries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3 · Project scaffold&lt;/strong&gt;. &lt;code&gt;npx create-react-app&lt;/code&gt; with the canonical layout: &lt;code&gt;components/&lt;/code&gt;, &lt;code&gt;data/&lt;/code&gt;, &lt;code&gt;hooks/&lt;/code&gt;, &lt;code&gt;styles/&lt;/code&gt;, &lt;code&gt;scripts/&lt;/code&gt;, &lt;code&gt;public/assets/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4 · Data model&lt;/strong&gt;. A single &lt;code&gt;story.js&lt;/code&gt; describes the full scene graph — branching choices, flag mutations, cutscene triggers, codex unlocks, ending conditions. A sibling &lt;code&gt;generated-assets.json&lt;/code&gt; indexes every AI-generated asset with its local path and type (&lt;code&gt;video&lt;/code&gt; / &lt;code&gt;image&lt;/code&gt; / &lt;code&gt;mp3&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5 · Implementation patterns&lt;/strong&gt;. Typewriter text via timed &lt;code&gt;setInterval&lt;/code&gt; (40–50ms per char), choice panel with hover affordances, hash routing so any chapter is a deep link, &lt;code&gt;localStorage&lt;/code&gt;-backed autosave plus three manual slots, portrait component that auto-detects video vs image, cutscene component with Ken Burns for stills, mobile-aware touch targets (≥44px) and &lt;code&gt;touch-action: manipulation&lt;/code&gt;, lazy video loading with explicit memory release on unmount.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6 · Asset generation&lt;/strong&gt;. &lt;code&gt;scripts/generate-assets.sh&lt;/code&gt; drives the &lt;code&gt;bl&lt;/code&gt; CLI:&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;--download&lt;/span&gt;   &lt;span class="c"&gt;# portrait or cutscene as 5s 720p video&lt;/span&gt;
bl image generate              &lt;span class="c"&gt;# portrait or background, 768x1024 / 1920x1080&lt;/span&gt;
bl speech synthesize &lt;span class="nt"&gt;--voice&lt;/span&gt; longxiaochun   &lt;span class="c"&gt;# TTS narration&lt;/span&gt;
bl video ref                   &lt;span class="c"&gt;# multi-reference video for character consistency&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Video jobs take 2–5 minutes each, so the script submits in &lt;code&gt;--async&lt;/code&gt; mode with 3–5 concurrent jobs, then batch-downloads. Roughly a 4× wall-time speedup vs sequential.&lt;/p&gt;




&lt;h2&gt;
  
  
  What does one run cost
&lt;/h2&gt;

&lt;p&gt;Assuming a 30-minute / 15–18 scene mid-tier run in hybrid asset mode:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;th&gt;Unit&lt;/th&gt;
&lt;th&gt;Subtotal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Character portraits (image)&lt;/td&gt;
&lt;td&gt;8 × 768×1024&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bl image generate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;cents range&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Key cutscenes (720p video)&lt;/td&gt;
&lt;td&gt;5 × 5s&lt;/td&gt;
&lt;td&gt;¥0.9/s × 5s × 5&lt;/td&gt;
&lt;td&gt;≈ ¥22.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scene backgrounds (image)&lt;/td&gt;
&lt;td&gt;8 × 1920×1080&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bl image generate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;cents range&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TTS narration (optional)&lt;/td&gt;
&lt;td&gt;15 × ~30s&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bl speech synthesize&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;single-digit ¥&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Authoritative pricing is on the ModelStudio console. New accounts get free credits — plenty to walk the demo end-to-end.&lt;/p&gt;

&lt;p&gt;The headline: roughly a cup of coffee, and you have your own playable visual novel.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it in three commands
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Install the skill:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add modelstudioai/skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pick &lt;code&gt;novel-game&lt;/code&gt; from the prompt (or &lt;code&gt;--all&lt;/code&gt; to grab the whole bundle).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Wire up &lt;code&gt;bl&lt;/code&gt; and an API key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &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;Grab a key at &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.aliyun.com&lt;/a&gt; — new accounts get free credits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; Ask your favorite Agent (Claude Code / Qoder / Cursor / Cline / …) in natural language:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Adapt the Ye Wenjie arc from "The Three-Body Problem" into a visual novel,
ink-wash style, 30-minute playtime, hybrid assets.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Agent owns the rest: ask the seven decisions, design the branches, scaffold the React project, write the code, generate every asset, and &lt;code&gt;npm start&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Four engineering details worth calling out
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prompt safety&lt;/strong&gt;. Video prompts containing weapons, smoking, or explicit violence get rejected. The skill ships a built-in rewrite table — content lessons distilled from dozens of real runs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Procedural BGM&lt;/strong&gt;. Music is synthesized live via Web Audio, not pre-baked MP3s. Fixed MIDI pitch arrays, multi-voice layering, convolution reverb, ADSR envelopes, detuned pad sustains. Sounds composed; ships at zero file size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mobile gotchas&lt;/strong&gt;. iOS Safari auto-zooms inputs under 16px. &lt;code&gt;touch-action: manipulation&lt;/code&gt; to kill the 300ms click delay. &lt;code&gt;env(safe-area-inset-bottom)&lt;/code&gt; for the home indicator. Dual-bind &lt;code&gt;click&lt;/code&gt; + &lt;code&gt;touchend&lt;/code&gt; to recover responsiveness on edge browsers. All wired in by default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Video memory release&lt;/strong&gt;. When leaving a scene, &lt;code&gt;video.pause(); video.removeAttribute('src'); video.load();&lt;/code&gt; is required — without it the WebView leaks frame buffers and a 30-minute play session ends in jank.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Our bar for first-party skills is one line: &lt;strong&gt;someone shipped real output with it, and the design is worth copying.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;novel-game&lt;/code&gt; clears both bars. Author &lt;a href="https://github.com/lishengzxc" rel="noopener noreferrer"&gt;@lishengzxc&lt;/a&gt; used it to produce a complete novel-to-game adaptation — not a screenshot demo, an actual React project people have played. The pitfall guide in &lt;code&gt;SKILL.md&lt;/code&gt; is paid-for-in-real-time wisdom.&lt;/p&gt;

&lt;p&gt;If you build content, games, or interactive narratives, this is a low-cost weekend to spend.&lt;/p&gt;

&lt;p&gt;Share what you build over at &lt;a href="https://github.com/modelstudioai/skills/issues" rel="noopener noreferrer"&gt;Issues&lt;/a&gt;, or open a PR if you spot a missing tip in the SKILL.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Repo&lt;/strong&gt; · &lt;a href="https://github.com/modelstudioai/skills" rel="noopener noreferrer"&gt;github.com/modelstudioai/skills&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Skill&lt;/strong&gt; · &lt;a href="https://github.com/modelstudioai/skills/tree/main/skills/novel-game" rel="noopener noreferrer"&gt;&lt;code&gt;skills/novel-game/&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Try the model&lt;/strong&gt; · &lt;a href="https://bailian.console.aliyun.com/cn-beijing?tab=demohouse&amp;amp;source_channel=hh_github#/experience/t2v" rel="noopener noreferrer"&gt;ModelStudio HappyHorse 1.1 playground&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://github.com/modelstudioai" rel="noopener noreferrer"&gt;ModelStudioAI&lt;/a&gt; on GitHub&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
