<?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>Forem: Zem</title>
    <description>The latest articles on Forem by Zem (@zem_734b3fabd88c).</description>
    <link>https://forem.com/zem_734b3fabd88c</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2534100%2Fa2ce1c53-6c87-47c4-b861-dcfaaceb79a7.png</url>
      <title>Forem: Zem</title>
      <link>https://forem.com/zem_734b3fabd88c</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/zem_734b3fabd88c"/>
    <language>en</language>
    <item>
      <title>I built a product that turns GitHub PRs into changelog videos</title>
      <dc:creator>Zem</dc:creator>
      <pubDate>Fri, 06 Feb 2026 13:44:00 +0000</pubDate>
      <link>https://forem.com/zem_734b3fabd88c/i-built-a-product-that-turns-github-prs-into-changelog-videos-l1i</link>
      <guid>https://forem.com/zem_734b3fabd88c/i-built-a-product-that-turns-github-prs-into-changelog-videos-l1i</guid>
      <description>&lt;p&gt;Every time we ship a feature, the same thing happens:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dev merges PR ✅&lt;/li&gt;
&lt;li&gt;Dev writes changelog... maybe ❌&lt;/li&gt;
&lt;li&gt;PM asks "what shipped last week?" 🤦&lt;/li&gt;
&lt;li&gt;Stakeholders still confused 🤷&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Sound familiar?&lt;/p&gt;

&lt;p&gt;I got tired of this loop, so I built &lt;strong&gt;PushPlay&lt;/strong&gt; — it watches your GitHub repo and automatically generates short video changelogs when PRs get merged.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F530o8ko7hiv1k9owa74e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F530o8ko7hiv1k9owa74e.png" alt="Pushplay Hero" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Detects changes&lt;/strong&gt; — Analyzes your PR diff to understand what actually changed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writes a script&lt;/strong&gt; — AI generates a concise, non-technical explanation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Renders a video&lt;/strong&gt; — Professional-looking 30-60s video with voiceover&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Posts to your PR&lt;/strong&gt; — Comments with a link to the video&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No more "can someone explain what this release does?" in Slack.&lt;/p&gt;

&lt;h2&gt;
  
  
  What was hard to build
&lt;/h2&gt;

&lt;p&gt;A few things that took longer than expected:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding diffs semantically&lt;/strong&gt; — A PR diff tells you &lt;em&gt;what lines changed&lt;/em&gt;, not &lt;em&gt;what the change means&lt;/em&gt;. Getting an AI to understand "this adds a search bar with autocomplete" vs "modified 47 lines in 3 files" required a lot of prompt engineering and context about the codebase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extracting real UI components&lt;/strong&gt; — I didn't want to use screenshots. The video actually renders your React components live. That means parsing your code, resolving imports, handling dependencies — and making it work without access to your full node_modules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syncing audio with animations&lt;/strong&gt; — The voiceover length varies based on the script. The animations need to match. Getting the timing right so the UI appears exactly when the narrator mentions it was a rabbit hole.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Making it look good automatically&lt;/strong&gt; — No one wants to manually design each video. The template system needs to make any UI look decent regardless of colors, sizing, or complexity. Still iterating on this one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick example
&lt;/h2&gt;

&lt;p&gt;Here's what a generated video looks like for a simple PR that adds a search feature:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This update introduces a new search bar to the dashboard. Users can now search across all projects instantly, with results appearing as you type. The search supports filtering by date and status."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;30 seconds, professional voiceover, animated UI showing the actual component.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why video?
&lt;/h2&gt;

&lt;p&gt;Written changelogs are great for developers. But:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PMs skim them&lt;/li&gt;
&lt;li&gt;Stakeholders skip them&lt;/li&gt;
&lt;li&gt;Users never see them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A 30-second video gets watched. It's shareable. It shows, not tells.&lt;/p&gt;

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

&lt;p&gt;If you're shipping regularly and tired of the "what changed?" question:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.pushplay.dev" rel="noopener noreferrer"&gt;pushplay.dev&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's free to try — connect a repo and generate your first video in minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback welcome
&lt;/h2&gt;

&lt;p&gt;This started as a scratch-my-own-itch project. Would love to hear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is this a pain point for your team?&lt;/li&gt;
&lt;li&gt;What would make this more useful?&lt;/li&gt;
&lt;li&gt;Any features that would make you actually fall in love with it?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drop a comment or reach out on &lt;a href="https://twitter.com/Zem01_" rel="noopener noreferrer"&gt;Twitter/X&lt;/a&gt; 🙏&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Building in public. More updates coming.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
