<?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: 박성상</title>
    <description>The latest articles on DEV Community by 박성상 (@sungprofile).</description>
    <link>https://dev.to/sungprofile</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%2F4191820%2Fd0c8309d-b1ae-4ce8-aecd-af0f77df87fa.jpg</url>
      <title>DEV Community: 박성상</title>
      <link>https://dev.to/sungprofile</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sungprofile"/>
    <language>en</language>
    <item>
      <title>I let an AI coding agent build a 1,360-page site with a $0 server bill</title>
      <dc:creator>박성상</dc:creator>
      <pubDate>Sun, 18 Oct 2026 09:23:27 +0000</pubDate>
      <link>https://dev.to/sungprofile/i-let-an-ai-coding-agent-build-a-1300-page-ai-claudecode-serverless-webdevsite-with-a-0-server-2hd4</link>
      <guid>https://dev.to/sungprofile/i-let-an-ai-coding-agent-build-a-1300-page-ai-claudecode-serverless-webdevsite-with-a-0-server-2hd4</guid>
      <description>&lt;p&gt;I'm not a full-time developer. Over two days and 110 commits I've been running an experiment: I describe what I want in plain Korean, and an AI coding agent (Claude Code) does the planning, coding, deployment, debugging, images and short videos. The result is a Korean information site with 1,360 static pages that rebuilds itself every hour — and the server/API bill is $0 (domain and the AI subscription are separate).&lt;/p&gt;

&lt;h2&gt;
  
  
  The $0 constraint
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Hosting: GitHub Pages (static HTML) — free&lt;/li&gt;
&lt;li&gt;Login, bookmarks, visit counter, web-push subscriptions: Cloudflare Workers + D1 free tier&lt;/li&gt;
&lt;li&gt;Photo-to-ingredients recognition for a "what can I cook with my fridge" tool: a public vision model on Workers AI, capped per day to stay inside the free allocation&lt;/li&gt;
&lt;li&gt;Data: publishers' public RSS feeds (only where robots.txt allows), Upbit's public crypto API, Google Trends RSS&lt;/li&gt;
&lt;li&gt;Character art: open models on my own GPU&lt;/li&gt;
&lt;li&gt;Automation: Windows Task Scheduler on my PC, every hour: collect → process → build → git push&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Things I found interesting
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Grouping the same story across 15 news outlets.&lt;/strong&gt; The first version linked articles in a chain (A≈B, B≈C), which merged completely different stories A and C. Switching to "compare everything against a seed article" fixed it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A "verification signals" score, not a fact-check verdict.&lt;/strong&gt; Each article gets points for cross-reporting, named (vs anonymous or social-media) sources, whether numbers and double-quoted quotes in the headline actually appear in the body, and a flag when outlets report different casualty numbers for the same event. The page always says this is a reading aid, not a final judgement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Analyst reports as nodes.&lt;/strong&gt; One brokerage-report article = one node (firm, direction, old → new price target, reason tags). Nodes roll up into per-stock "reasons up / reasons down" trees.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the AI got it wrong
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A year-old article without a date slipped into an RSS feed and showed up as "today's report". Fix: resolve dates from RSS → URL → page metadata, drop anything older than 7 days, and flag implausible price-target jumps.&lt;/li&gt;
&lt;li&gt;Single quotes used for emphasis in Korean headlines were treated as quotations and penalised. Fix: only compare double-quoted text.&lt;/li&gt;
&lt;li&gt;Generated characters with odd hands. Fix: only hand-checked images are used.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full cost table, architecture and the actual instructions I gave are on the build log page (in Korean): &lt;a href="https://sungprofile.cloud/ailog/?src=devto" rel="noopener noreferrer"&gt;https://sungprofile.cloud/ailog/?src=devto&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update (Oct 18, evening)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The home page is now four themed entrances; news, money, contests, everyday-life and the AI build log each became a separate screen with its own colours and menu. The entrance matching where you came from (?src=) is shown first.&lt;/li&gt;
&lt;li&gt;Per-theme chatbots that run entirely in the browser (no model): today's issues and questionable articles; crypto prices and price-target upgrades/downgrades; subsidy search and housing-lottery schedules. Data loads only when the panel is opened.&lt;/li&gt;
&lt;li&gt;Housing-lottery helper: enter your situation → score (out of 84) + supply types worth trying + matching notices open right now.&lt;/li&gt;
&lt;li&gt;Money section: an investment-policy table checked against official sources, general age-based principles, and on-the-record expert comments grouped by topic, side by side when they disagree (not investment advice).&lt;/li&gt;
&lt;li&gt;Search clean-up: RSS feed, sitemap lastmod that only changes when a content hash changes, noindex on thin auto-generated pages, and pre-rendering JS-drawn screens to static HTML (text visible to crawlers went from 687 to 13,605 characters).&lt;/li&gt;
&lt;li&gt;Analytics: channels grouped by first touch; automated health-check traffic from overseas servers excluded (12 hits had slipped in on day one).&lt;/li&gt;
&lt;li&gt;Updated numbers: 2 days · 110 commits · 1,360 pages (about 2,400 old multilingual pages removed). Server/API cost is still $0.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>serverless</category>
      <category>webdev</category>
      <category>claudecode</category>
    </item>
  </channel>
</rss>
