<?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: TreeSoop</title>
    <description>The latest articles on Forem by TreeSoop (@treesoop).</description>
    <link>https://forem.com/treesoop</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%2F3884626%2F9a06e3ba-7a68-4c4e-b318-a564988b19b1.png</url>
      <title>Forem: TreeSoop</title>
      <link>https://forem.com/treesoop</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/treesoop"/>
    <language>en</language>
    <item>
      <title>claude2codex: migrate Claude Code config to OpenAI Codex in one command</title>
      <dc:creator>TreeSoop</dc:creator>
      <pubDate>Fri, 17 Apr 2026 14:30:13 +0000</pubDate>
      <link>https://forem.com/treesoop/claude2codex-migrate-claude-code-config-to-openai-codex-in-one-command-jlj</link>
      <guid>https://forem.com/treesoop/claude2codex-migrate-claude-code-config-to-openai-codex-in-one-command-jlj</guid>
      <description>&lt;p&gt;Our team pays ~$700/month for Claude Code Max (3 accounts). We're Claude-native. But between Claude's recent reliability issues and Codex's cost advantages for simpler workloads, we've been moving some work to Codex.&lt;/p&gt;

&lt;p&gt;Migrating turned out to be annoying — plugins, MCP servers, memory files, harness configs all live in different places with different formats.&lt;/p&gt;

&lt;p&gt;We wrote a CLI to automate it and open sourced it.&lt;/p&gt;

&lt;p&gt;📚 Full writeup: &lt;a href="https://treesoop.com/blog/claude2codex-migration-tool-open-source-2026" rel="noopener noreferrer"&gt;https://treesoop.com/blog/claude2codex-migration-tool-open-source-2026&lt;/a&gt;&lt;br&gt;
🔧 GitHub: &lt;a href="https://github.com/treesoop/claude2codex" rel="noopener noreferrer"&gt;https://github.com/treesoop/claude2codex&lt;/a&gt;&lt;/p&gt;

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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Claude Code&lt;/th&gt;
&lt;th&gt;→&lt;/th&gt;
&lt;th&gt;Codex&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;~/.codex/config.md&lt;/code&gt; (format converted)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;~/.claude/settings.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;codex.toml&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;~/.claude/skills/*.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.codex/prompts/*.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;~/.claude/user_profile.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Codex profile&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP server registrations&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Codex-compatible config block&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Harness trigger logic&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Best-effort port with warnings&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&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;npx claude2codex init
npx claude2codex migrate &lt;span class="nt"&gt;--dry-run&lt;/span&gt;  &lt;span class="c"&gt;# preview&lt;/span&gt;
npx claude2codex migrate            &lt;span class="c"&gt;# execute&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Who should care
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Teams running both Claude Code and Codex in hybrid mode&lt;/li&gt;
&lt;li&gt;Anyone hitting Claude Code session limits or reliability issues&lt;/li&gt;
&lt;li&gt;Teams evaluating Codex but not wanting to set up from scratch&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Results in our team
&lt;/h2&gt;

&lt;p&gt;Nine team members migrated their setups using this tool. ~95% of settings auto-converted and worked in Codex on first try. The remaining 5% were flagged in a conflict report and manually adjusted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why hybrid, not replacement
&lt;/h2&gt;

&lt;p&gt;We still default to Claude Code Max for anything requiring strong reasoning or long-horizon planning. Codex picks up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Short repetitive tasks (doc generation, test writing)&lt;/li&gt;
&lt;li&gt;Tasks where token cost matters more than depth&lt;/li&gt;
&lt;li&gt;Fallback when Claude adaptive thinking underallocates&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Details
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;MIT licensed&lt;/li&gt;
&lt;li&gt;Your original Claude config is preserved (not modified)&lt;/li&gt;
&lt;li&gt;Codex unsupported features get warnings in a report&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More from TreeSoop: &lt;a href="https://github.com/treesoop/ai-news-mcp" rel="noopener noreferrer"&gt;ai-news-mcp&lt;/a&gt;, &lt;a href="https://github.com/treesoop/hwp-mcp" rel="noopener noreferrer"&gt;hwp-mcp&lt;/a&gt;, &lt;a href="https://github.com/treesoop/whisper_transcription" rel="noopener noreferrer"&gt;whisper_transcription&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Blog: &lt;a href="https://treesoop.com/blog" rel="noopener noreferrer"&gt;https://treesoop.com/blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>claude</category>
      <category>cli</category>
      <category>openai</category>
    </item>
    <item>
      <title>Local Whisper pipeline beats paid Korean transcription services</title>
      <dc:creator>TreeSoop</dc:creator>
      <pubDate>Fri, 17 Apr 2026 14:29:35 +0000</pubDate>
      <link>https://forem.com/treesoop/local-whisper-pipeline-beats-paid-korean-transcription-services-3ke0</link>
      <guid>https://forem.com/treesoop/local-whisper-pipeline-beats-paid-korean-transcription-services-3ke0</guid>
      <description>&lt;p&gt;We were paying for Notta to transcribe Korean meetings. The Korean accuracy on technical terms was consistently bad — we were spending more time fixing transcripts than just writing notes by hand.&lt;/p&gt;

&lt;p&gt;So we built a local Whisper pipeline. Turns out it beats the paid service on Korean accuracy.&lt;/p&gt;

&lt;p&gt;📚 Full writeup: &lt;a href="https://treesoop.com/blog/whisper-transcription-local-korean-stt-2026" rel="noopener noreferrer"&gt;https://treesoop.com/blog/whisper-transcription-local-korean-stt-2026&lt;/a&gt;&lt;br&gt;
🔧 GitHub: &lt;a href="https://github.com/treesoop/whisper_transcription" rel="noopener noreferrer"&gt;https://github.com/treesoop/whisper_transcription&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 plaintext"&gt;&lt;code&gt;Audio → ffmpeg preprocessing → Whisper (large-v3) → sentence boundary post-processing → markdown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key decisions:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Whisper large-v3&lt;/strong&gt; for Korean technical vocabulary accuracy. base/small/medium all struggle with domain-specific terms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ffmpeg preprocessing&lt;/strong&gt; — 16kHz sample rate, light noise filter. Measurable accuracy bump.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sentence boundary post-processing&lt;/strong&gt; — Whisper outputs long monologues. We re-chunk using commas, conjunctions, and timestamps.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Results (30-min Korean meeting)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Technical term accuracy: noticeably better than paid service&lt;/li&gt;
&lt;li&gt;Processing speed on M1 Pro: faster than realtime&lt;/li&gt;
&lt;li&gt;Cost: zero&lt;/li&gt;
&lt;li&gt;Security: entirely local, no cloud transmission&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Most of our use cases can't legally send audio to cloud:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer meeting recordings (NDA)&lt;/li&gt;
&lt;li&gt;Legal/medical meetings (privacy laws)&lt;/li&gt;
&lt;li&gt;Strategy meetings (trade secrets)&lt;/li&gt;
&lt;li&gt;R&amp;amp;D discussions (IP)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Local-only pipeline removes all of that concern.&lt;/p&gt;

&lt;h2&gt;
  
  
  About VibeVoice
&lt;/h2&gt;

&lt;p&gt;We tested it. Didn't run stably on Apple Silicon when we tried. Skipped for this release. Will revisit if they fix Apple Silicon compatibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  TreeSoop context
&lt;/h2&gt;

&lt;p&gt;We also have a commercial Korean STT product called &lt;a href="https://github.com/treesoop" rel="noopener noreferrer"&gt;Asimula&lt;/a&gt; with domain-specific fine-tuning for medical/legal. This OSS pipeline is a good starting point if you want to validate basic Whisper quality before investing in domain tuning.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MIT licensed&lt;/li&gt;
&lt;li&gt;macOS Silicon optimized (M1/M2/M3/M4)&lt;/li&gt;
&lt;li&gt;See repo for setup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More from TreeSoop: &lt;a href="https://github.com/treesoop/ai-news-mcp" rel="noopener noreferrer"&gt;ai-news-mcp&lt;/a&gt;, &lt;a href="https://github.com/treesoop/hwp-mcp" rel="noopener noreferrer"&gt;hwp-mcp&lt;/a&gt;, &lt;a href="https://github.com/treesoop/claude2codex" rel="noopener noreferrer"&gt;claude2codex&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Blog: &lt;a href="https://treesoop.com/blog" rel="noopener noreferrer"&gt;https://treesoop.com/blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Stop burning tokens on DOM noise: a Playwright MCP optimizer layer</title>
      <dc:creator>TreeSoop</dc:creator>
      <pubDate>Fri, 17 Apr 2026 14:21:00 +0000</pubDate>
      <link>https://forem.com/treesoop/stop-burning-tokens-on-dom-noise-a-playwright-mcp-optimizer-layer-1on6</link>
      <guid>https://forem.com/treesoop/stop-burning-tokens-on-dom-noise-a-playwright-mcp-optimizer-layer-1on6</guid>
      <description>&lt;p&gt;If you've used Playwright MCP for AI browser automation, you know the pain. Every page navigation dumps the full DOM tree into the model context. Simple flows like "order 5 items from this shop" can burn hundreds of thousands of tokens on navbar/sidebar/footer noise that has nothing to do with the task.&lt;/p&gt;

&lt;p&gt;We built a small MCP layer that sits in front of Playwright and only forwards the relevant bits. Open sourced it.&lt;/p&gt;

&lt;p&gt;📚 Full writeup: &lt;a href="https://treesoop.com/blog/playwright-mcp-optimizer-token-saving-2026" rel="noopener noreferrer"&gt;https://treesoop.com/blog/playwright-mcp-optimizer-token-saving-2026&lt;/a&gt;&lt;br&gt;
🔧 GitHub: &lt;a href="https://github.com/treesoop/claude-native-plugin" rel="noopener noreferrer"&gt;https://github.com/treesoop/claude-native-plugin&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Playwright MCP serializes the full DOM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI ← {ENTIRE_DOM_JSON} ← Playwright MCP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works for QA where you need to see everything. For "browse and take an action" it's 5-10× the tokens you actually need.&lt;/p&gt;

&lt;h2&gt;
  
  
  The optimizer
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI ← {relevant_only} ← Optimizer ← {full DOM} ← Playwright MCP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three filter rules:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Interactive elements first&lt;/strong&gt;: button, input, a — not decorative div/span&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic grouping&lt;/strong&gt;: navigation / main / form / footer regions, so the model knows where it is&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Task-aware skipping&lt;/strong&gt;: if the current task is "checkout", skip sidebar recommendations and ad banners&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Measured impact
&lt;/h2&gt;

&lt;p&gt;On a "cart → checkout" flow with GPT-4: tokens dropped substantially, and round-trip latency improved as a side effect (smaller payloads → faster agent decisions).&lt;/p&gt;

&lt;p&gt;Not a silver bullet. For QA tasks where you need full DOM accuracy, use vanilla Playwright MCP. For general browsing / automation agents, this is the cheaper + faster path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tool comparison (our testing)
&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;Strength&lt;/th&gt;
&lt;th&gt;Use for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;playwright-mcp (default)&lt;/td&gt;
&lt;td&gt;Full DOM accuracy&lt;/td&gt;
&lt;td&gt;QA, complex validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;playwright-optimizer (this)&lt;/td&gt;
&lt;td&gt;Token efficiency&lt;/td&gt;
&lt;td&gt;Automation agents, browsing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vercel-browser-agent&lt;/td&gt;
&lt;td&gt;Code generation speed&lt;/td&gt;
&lt;td&gt;Simple browsing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-chrome-extension&lt;/td&gt;
&lt;td&gt;Uses logged-in session&lt;/td&gt;
&lt;td&gt;Tasks needing auth state&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We use all four for different jobs.&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; @treesoop/playwright-optimizer
claude mcp add playwright-opt &lt;span class="nt"&gt;--&lt;/span&gt; playwright-optimizer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;MIT licensed&lt;/li&gt;
&lt;li&gt;Configurable per-site presets&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--log-tokens&lt;/code&gt; flag for measurement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More OSS from TreeSoop: &lt;a href="https://github.com/treesoop/ai-news-mcp" rel="noopener noreferrer"&gt;ai-news-mcp&lt;/a&gt;, &lt;a href="https://github.com/treesoop/hwp-mcp" rel="noopener noreferrer"&gt;hwp-mcp&lt;/a&gt;, &lt;a href="https://github.com/treesoop/whisper_transcription" rel="noopener noreferrer"&gt;whisper_transcription&lt;/a&gt;, &lt;a href="https://github.com/treesoop/claude2codex" rel="noopener noreferrer"&gt;claude2codex&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Blog: &lt;a href="https://treesoop.com/blog" rel="noopener noreferrer"&gt;https://treesoop.com/blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>llm</category>
      <category>mcp</category>
    </item>
    <item>
      <title>ai-news-mcp: 17 AI trend sources auto-scraped, served via MCP</title>
      <dc:creator>TreeSoop</dc:creator>
      <pubDate>Fri, 17 Apr 2026 14:19:24 +0000</pubDate>
      <link>https://forem.com/treesoop/ai-news-mcp-17-ai-trend-sources-auto-scraped-served-via-mcp-54ga</link>
      <guid>https://forem.com/treesoop/ai-news-mcp-17-ai-trend-sources-auto-scraped-served-via-mcp-54ga</guid>
      <description>&lt;p&gt;Keeping up with AI news means scraping the same sources as everyone else — HackerNews, Reddit (r/MachineLearning, r/LocalLLaMA), ArXiv, GitHub Trending, Dev.to, Lobsters, and about 10 more. Everyone builds their own version. Seems silly.&lt;/p&gt;

&lt;p&gt;So we built one and open sourced it.&lt;/p&gt;

&lt;p&gt;📚 Full writeup: &lt;a href="https://treesoop.com/blog/ai-news-mcp-17-sources-auto-scraping-2026" rel="noopener noreferrer"&gt;https://treesoop.com/blog/ai-news-mcp-17-sources-auto-scraping-2026&lt;/a&gt;&lt;br&gt;
🔧 GitHub: &lt;a href="https://github.com/treesoop/ai-news-mcp" rel="noopener noreferrer"&gt;https://github.com/treesoop/ai-news-mcp&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;17 sources scraped every 6 hours&lt;/strong&gt; by a Mac mini in our office. Results exposed via Model Context Protocol so any MCP-compatible AI tool can query it.&lt;/p&gt;

&lt;p&gt;Sources include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HackerNews, Reddit (4 AI subs), Dev.to, Lobsters&lt;/li&gt;
&lt;li&gt;ArXiv AI, ArXiv ML&lt;/li&gt;
&lt;li&gt;GitHub Trending&lt;/li&gt;
&lt;li&gt;OpenAI, Anthropic, Google AI, Meta AI blogs&lt;/li&gt;
&lt;li&gt;TechCrunch AI, VentureBeat AI, The Verge AI&lt;/li&gt;
&lt;/ul&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;claude mcp add ai-news &lt;span class="nt"&gt;--&lt;/span&gt; npx &lt;span class="nt"&gt;-y&lt;/span&gt; @treesoop/ai-news-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Works in Claude Code, Cursor, Claude Desktop, ChatGPT — anywhere MCP is supported.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example queries
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;"Show me HackerNews top AI posts from today with 100+ points"&lt;/li&gt;
&lt;li&gt;"Summarize ArXiv AI papers about RAG from the last 24 hours"&lt;/li&gt;
&lt;li&gt;"What's trending on r/LocalLLaMA about Qwen3?"&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why bother
&lt;/h2&gt;

&lt;p&gt;Our blog agent at treesoop.com uses this MCP to decide what to write about each day. Before it existed, we were scraping manually in 5 different scripts. Now it's one call.&lt;/p&gt;

&lt;p&gt;If you run a dev newsletter, slack bot, or content agent, this probably saves you an afternoon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Details
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;MIT licensed, commercial use OK&lt;/li&gt;
&lt;li&gt;Data stored in our Supabase instance (free for public use)&lt;/li&gt;
&lt;li&gt;Self-host option in README if you want your own cadence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More TreeSoop OSS: &lt;a href="https://github.com/treesoop/hwp-mcp" rel="noopener noreferrer"&gt;hwp-mcp&lt;/a&gt;, &lt;a href="https://github.com/treesoop/whisper_transcription" rel="noopener noreferrer"&gt;whisper_transcription&lt;/a&gt;, &lt;a href="https://github.com/treesoop/claude2codex" rel="noopener noreferrer"&gt;claude2codex&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Blog: &lt;a href="https://treesoop.com/blog" rel="noopener noreferrer"&gt;https://treesoop.com/blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>news</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Introducing hwp-mcp: Korean document support for Claude via MCP</title>
      <dc:creator>TreeSoop</dc:creator>
      <pubDate>Fri, 17 Apr 2026 14:15:48 +0000</pubDate>
      <link>https://forem.com/treesoop/introducing-hwp-mcp-korean-document-support-for-claude-via-mcp-1lbg</link>
      <guid>https://forem.com/treesoop/introducing-hwp-mcp-korean-document-support-for-claude-via-mcp-1lbg</guid>
      <description>&lt;p&gt;Korean office documents (.hwp / .hwpx) are everywhere in Korean government, enterprise, and legal workflows. Until now, Claude, ChatGPT, and Cursor couldn't read them natively — a real blocker for anyone building AI systems for Korean organizations.&lt;/p&gt;

&lt;p&gt;We (TreeSoop) just released &lt;strong&gt;hwp-mcp&lt;/strong&gt;, an open source MCP server that fixes this.&lt;/p&gt;

&lt;p&gt;📚 Full writeup: &lt;a href="https://treesoop.com/blog/hwp-mcp-korean-document-ai-claude-2026" rel="noopener noreferrer"&gt;https://treesoop.com/blog/hwp-mcp-korean-document-ai-claude-2026&lt;/a&gt;&lt;br&gt;
🔧 GitHub: &lt;a href="https://github.com/treesoop/hwp-mcp" rel="noopener noreferrer"&gt;https://github.com/treesoop/hwp-mcp&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;hwp-mcp exposes these tools via the Model Context Protocol:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extract text from .hwp / .hwpx files&lt;/li&gt;
&lt;li&gt;Parse tables into structured data&lt;/li&gt;
&lt;li&gt;Pull out embedded images&lt;/li&gt;
&lt;li&gt;Find-and-replace within documents&lt;/li&gt;
&lt;li&gt;Fill template variables (name, company, date)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Works on macOS and Windows. &lt;strong&gt;No Hancom Office license required.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Install in one line
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add hwp-mcp &lt;span class="nt"&gt;--&lt;/span&gt; uvx &lt;span class="nt"&gt;--from&lt;/span&gt; hwp-mcp hwp-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Works with Claude Code, Claude Desktop, VS Code Copilot, Cursor — anywhere that supports MCP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for Korean AI adoption
&lt;/h2&gt;

&lt;p&gt;If you're building RAG systems, internal search, or document automation for Korean companies, 60–80% of the source documents will be HWP. Before hwp-mcp the options were:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Manual conversion (doesn't scale)&lt;/li&gt;
&lt;li&gt;Hancom API licensing (Windows-only, paid)&lt;/li&gt;
&lt;li&gt;Convert everything to Word org-wide (non-starter)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now you just install the MCP and Claude reads HWP natively.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we're using it for
&lt;/h2&gt;

&lt;p&gt;TreeSoop uses hwp-mcp in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Corporate RAG chatbots ingesting HWP knowledge bases&lt;/li&gt;
&lt;li&gt;Government RFP automation (RFPs are distributed as HWP)&lt;/li&gt;
&lt;li&gt;Legal contract review (Korean law firm contracts = HWP)&lt;/li&gt;
&lt;li&gt;Meeting-note template auto-fill&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  MIT licensed
&lt;/h2&gt;

&lt;p&gt;Commercial use is fine. Contributions welcome.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/treesoop/hwp-mcp" rel="noopener noreferrer"&gt;https://github.com/treesoop/hwp-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docs: included in repo README&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;TreeSoop is an AI-Native dev agency from Korea. POSTECH/KAIST team. We're building production AI agents, RAG systems, and MCP tools. More OSS: &lt;a href="https://github.com/treesoop/ai-news-mcp" rel="noopener noreferrer"&gt;ai-news-mcp&lt;/a&gt;, &lt;a href="https://github.com/treesoop/whisper_transcription" rel="noopener noreferrer"&gt;whisper_transcription&lt;/a&gt;, &lt;a href="https://github.com/treesoop/claude2codex" rel="noopener noreferrer"&gt;claude2codex&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Blog: &lt;a href="https://treesoop.com/blog" rel="noopener noreferrer"&gt;https://treesoop.com/blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>mcp</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
