<?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: Hui Chen</title>
    <description>The latest articles on DEV Community by Hui Chen (@hui_chen_2437f5c7248178f9).</description>
    <link>https://dev.to/hui_chen_2437f5c7248178f9</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%2F4005242%2F3ab731cb-d296-469c-87ae-7182c52b357b.png</url>
      <title>DEV Community: Hui Chen</title>
      <link>https://dev.to/hui_chen_2437f5c7248178f9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hui_chen_2437f5c7248178f9"/>
    <language>en</language>
    <item>
      <title>I Built ReelToText: A Link-First Transcript Generator for Short Videos</title>
      <dc:creator>Hui Chen</dc:creator>
      <pubDate>Sat, 29 Aug 2026 21:44:48 +0000</pubDate>
      <link>https://dev.to/hui_chen_2437f5c7248178f9/i-built-reeltotext-a-link-first-transcript-generator-for-short-videos-27mi</link>
      <guid>https://dev.to/hui_chen_2437f5c7248178f9/i-built-reeltotext-a-link-first-transcript-generator-for-short-videos-27mi</guid>
      <description>&lt;h1&gt;
  
  
  From One Short-Video Link to TXT, SRT, and VTT: Building ReelToText
&lt;/h1&gt;

&lt;p&gt;Short-form video is full of useful information, but speech is trapped inside playback. If you want to search a Reel, quote a creator accurately, turn a clip into captions, or study a set of videos, repeatedly pausing and typing is a poor workflow.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://reeltotext.com" rel="noopener noreferrer"&gt;ReelToText&lt;/a&gt; around a simple idea: if a video is public and you already have its link, getting its spoken content should be a link-first task. Paste one public Instagram Reel, YouTube Short, or TikTok URL. ReelToText returns readable text in the browser, plus TXT, SRT, and VTT downloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why link-first instead of upload-first?
&lt;/h2&gt;

&lt;p&gt;A typical transcription workflow asks you to download a video, find the file, upload it, wait, and then clean up another copy of the media. That is a lot of friction for a short public clip.&lt;/p&gt;

&lt;p&gt;A link-first workflow keeps the starting point users already have. It also makes product boundaries clearer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one individual public short video per request&lt;/li&gt;
&lt;li&gt;Instagram Reels, YouTube Shorts, and TikTok videos&lt;/li&gt;
&lt;li&gt;no private videos, profiles, collection pages, playlists, or batch input&lt;/li&gt;
&lt;li&gt;no permanent source-media library&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The narrower scope is intentional. A focused URL contract is easier to validate, explain, and operate than a vague promise to accept every video source.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow
&lt;/h2&gt;

&lt;p&gt;The user-facing flow is four steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Paste a supported public video link.&lt;/li&gt;
&lt;li&gt;ReelToText validates the platform and checks access, limits, and recent cached results.&lt;/li&gt;
&lt;li&gt;The service retrieves the source and transcribes the spoken audio.&lt;/li&gt;
&lt;li&gt;The result appears in the browser and can be copied or downloaded.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The default demo can be tried without an account. To submit your own video, sign in. Verified accounts receive five one-time welcome credits. Free accounts can process videos up to three minutes; active Pro and Max members can process videos up to ten minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three useful output formats
&lt;/h2&gt;

&lt;p&gt;The transcript is not only a block of text. Different jobs need different exports.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TXT is best for reading, searching, notes, summaries, translation, and writing.&lt;/li&gt;
&lt;li&gt;SRT includes numbered caption cues and timing, which works with many video editors.&lt;/li&gt;
&lt;li&gt;VTT uses WebVTT timing syntax for compatible web players and web-based caption workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tool also offers a copy action, so a result can move directly into a note or editing document. Timed formats still need review: speech-to-text can mishear names, numbers, slang, and technical terms, and cue breaks may need adjustment.&lt;/p&gt;

&lt;h2&gt;
  
  
  A small architecture with deliberate boundaries
&lt;/h2&gt;

&lt;p&gt;ReelToText uses Next.js App Router, React, and TypeScript. The transcript API route coordinates authentication, membership, credits, caching, and the transcription pipeline. Platform-specific source modules keep URL normalization and retrieval rules separate.&lt;/p&gt;

&lt;p&gt;The current pipeline uses Apify-based platform retrieval. Instagram and TikTok audio is processed temporarily and sent to OpenRouter Whisper for speech recognition. YouTube Shorts can use a timestamped caption path directly. The API streams progress stages such as access checks, cache checks, audio retrieval, transcription, and result preparation so the interface can explain what is happening.&lt;/p&gt;

&lt;p&gt;This separation matters because the external providers can change independently of the product surface. Provider details stay behind a small service boundary, while the user experience remains one URL in and one transcript out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cache behavior is part of the product
&lt;/h2&gt;

&lt;p&gt;A transcript tool needs more than a transcription call. The same public video may be requested by many people, and a successful result should not trigger paid provider work every time.&lt;/p&gt;

&lt;p&gt;ReelToText keeps recent shared transcript results for 72 hours. A user can reuse their own successful result without paying again, while a shared cached result uses one credit under the current product rules. The public demo is backed by a permanent cache so an anonymous visitor can test the workflow without starting a provider job.&lt;/p&gt;

&lt;p&gt;This also makes the cost model easier to reason about. Cache hits, owned-result reuse, provider failures, and content failures are different events. They should not all look like the same generic success or failure state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy and failure handling
&lt;/h2&gt;

&lt;p&gt;ReelToText does not create a permanent source-media library. Extracted audio is held in server memory for the active request, and the application returns the result to the browser. Media not stored does not mean that media never passes through a server; retrieval and transcription still have to happen somewhere.&lt;/p&gt;

&lt;p&gt;The service also distinguishes failures that should not cost the user from failures caused by the submitted content. Invalid URLs are rejected before provider work. Provider, network, and system failures return reserved credits. Some paid-plan content failures can use a disclosed 0.25-credit charge only after the user confirms the policy. That distinction is important for trust in any usage-based product.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned building it
&lt;/h2&gt;

&lt;p&gt;The most useful lessons so far:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make supported input narrower than your ambition. Clear rejection is better than unreliable magic.&lt;/li&gt;
&lt;li&gt;Normalize links early. Different share URLs can point to the same content, and caching depends on treating them consistently.&lt;/li&gt;
&lt;li&gt;Design exports at the same time as the transcript. TXT, SRT, and VTT serve different workflows.&lt;/li&gt;
&lt;li&gt;Treat billing states as user experience. Reservation, settlement, refund, and cache reuse need understandable outcomes.&lt;/li&gt;
&lt;li&gt;Keep the original source in view. A generated transcript is a working draft, not proof that every word, name, or timestamp is correct.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you work with short-form content and need searchable text or caption files, try &lt;a href="https://reeltotext.com" rel="noopener noreferrer"&gt;ReelToText&lt;/a&gt;. Paste one public short-video link and see whether a link-first workflow fits your process.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>ai</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Top AI Tools is a clean directory for discovering AI tools by category, pricing, and use case. Useful for comparing apps across coding, marketing, SEO, productivity, design, and automation: https://topaitools.app</title>
      <dc:creator>Hui Chen</dc:creator>
      <pubDate>Tue, 07 Jul 2026 19:08:43 +0000</pubDate>
      <link>https://dev.to/hui_chen_2437f5c7248178f9/top-ai-tools-is-a-clean-directory-for-discovering-ai-tools-by-category-pricing-and-use-case-55cf</link>
      <guid>https://dev.to/hui_chen_2437f5c7248178f9/top-ai-tools-is-a-clean-directory-for-discovering-ai-tools-by-category-pricing-and-use-case-55cf</guid>
      <description>&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://topaitools.app/en" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdxukomxvxegiferomewe.supabase.co%2Fstorage%2Fv1%2Fobject%2Fpublic%2Ftool-logos%2Fany-summary.jpg%3Ft%3D1771479342157" height="870" class="m-0" width="1522"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://topaitools.app/en" rel="noopener noreferrer" class="c-link"&gt;
            Top AI Tools: Best AI Tools Directory
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Explore Top AI Tools, a curated AI tools directory for finding, comparing, saving, and upvoting useful AI apps for business, coding, SEO, and design.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ftopaitools.app%2Ffavicon.svg" width="512" height="512"&gt;
          topaitools.app
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>I built TokenBoard to track AI coding token usage without uploading prompts or code</title>
      <dc:creator>Hui Chen</dc:creator>
      <pubDate>Sat, 27 Jun 2026 11:26:08 +0000</pubDate>
      <link>https://dev.to/hui_chen_2437f5c7248178f9/i-built-tokenboard-to-track-ai-coding-token-usage-without-uploading-prompts-or-code-39ek</link>
      <guid>https://dev.to/hui_chen_2437f5c7248178f9/i-built-tokenboard-to-track-ai-coding-token-usage-without-uploading-prompts-or-code-39ek</guid>
      <description>&lt;p&gt;AI coding tools are getting good enough that I wanted a simple way to understand usage across real work, not just guesses from billing pages.&lt;/p&gt;

&lt;p&gt;So I built TokenBoard: &lt;a href="https://token-board.com/" rel="noopener noreferrer"&gt;https://token-board.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is a small leaderboard and personal stats page for AI coding usage. The local CLI currently supports Codex and reports aggregate metrics such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tokens&lt;/li&gt;
&lt;li&gt;sessions&lt;/li&gt;
&lt;li&gt;messages&lt;/li&gt;
&lt;li&gt;models&lt;/li&gt;
&lt;li&gt;estimated cost&lt;/li&gt;
&lt;li&gt;active days&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main privacy rule is simple: TokenBoard does not upload prompts or code. It only reports usage metrics.&lt;/p&gt;

&lt;p&gt;The product is still early. Right now the collector supports Codex, and I plan to add Claude Code and other AI coding agents later. The goal is to make it easier for developers to compare usage, understand cost, and optionally share a small stats card if they want to.&lt;/p&gt;

&lt;p&gt;If you use Codex often, I would appreciate feedback on whether this is useful and what metrics would make the leaderboard or profile page better.&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://token-board.com/" rel="noopener noreferrer"&gt;https://token-board.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
