<?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: runartree.com</title>
    <description>The latest articles on DEV Community by runartree.com (@hyun_soolee_0c4754e81463).</description>
    <link>https://dev.to/hyun_soolee_0c4754e81463</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%2F3864531%2F5aae0916-2020-4656-92a6-5daba3d36e03.png</url>
      <title>DEV Community: runartree.com</title>
      <link>https://dev.to/hyun_soolee_0c4754e81463</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hyun_soolee_0c4754e81463"/>
    <language>en</language>
    <item>
      <title>Daily Korean Zodiac Horoscope — Jul 17: best day for Rat!</title>
      <dc:creator>runartree.com</dc:creator>
      <pubDate>Thu, 16 Jul 2026 22:51:36 +0000</pubDate>
      <link>https://dev.to/hyun_soolee_0c4754e81463/daily-korean-zodiac-horoscope-jul-17-best-day-for-rat-5d1c</link>
      <guid>https://dev.to/hyun_soolee_0c4754e81463/daily-korean-zodiac-horoscope-jul-17-best-day-for-rat-5d1c</guid>
      <description>&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%2Frunartree.com%2Fimages%2Flogo_good.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%2Frunartree.com%2Fimages%2Flogo_good.png" alt="Runartree K-Saju" width="434" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Daily Korean Zodiac Horoscope — July 17, 2026 (Fri)
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Today's day pillar:&lt;/strong&gt; 壬辰 — a Yang Water / Dragon day&lt;/p&gt;

&lt;p&gt;In Korean Four Pillars astrology (K-Saju), each day carries its own energy. How that energy harmonizes or clashes with your zodiac sign's branch shapes the flow of your day. Here's today's reading for all 12 signs — take it lightly, and have fun with it. 🙂&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;Best signs today:&lt;/strong&gt; 🐭 Rat, 🐵 Monkey, 🐔 Rooster&lt;/p&gt;

&lt;p&gt;⚠️ &lt;strong&gt;Signs that should tread carefully:&lt;/strong&gt; 🐲 Dragon, 🐴 Horse, 🐮 Ox, 🐶 Dog&lt;/p&gt;




&lt;h2&gt;
  
  
  🐭 Rat — Good ★★★★☆ (78/100)
&lt;/h2&gt;

&lt;p&gt;A Three Harmony (三合) alignment with today's stem-branch puts the wind at your back for teamwork and joint projects. In five-element terms, today's energy stands shoulder to shoulder with yours — your usual ability carries the day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Good · &lt;strong&gt;Love&lt;/strong&gt; Good · &lt;strong&gt;Health&lt;/strong&gt; Good · &lt;strong&gt;Work&lt;/strong&gt; Excellent · &lt;strong&gt;Supportive hours&lt;/strong&gt; 1–3 AM&lt;/p&gt;

&lt;p&gt;⚠️ &lt;em&gt;Do not get too complacent if you were born in:&lt;/em&gt; 1996 (stem clash with today's stem)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐮 Ox — Caution ★★☆☆☆ (48/100)
&lt;/h2&gt;

&lt;p&gt;A Break (破) relation brings small misalignments — schedule slips, minor losses or breakage. Re-checking things is your lucky charm today. Your element controls today's — you can take charge of things, but watch out for overwork and going it alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Caution · &lt;strong&gt;Love&lt;/strong&gt; Caution · &lt;strong&gt;Health&lt;/strong&gt; Caution · &lt;strong&gt;Work&lt;/strong&gt; Caution · &lt;strong&gt;Supportive hours&lt;/strong&gt; 11 PM–1 AM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;A little less pressure if you were born in:&lt;/em&gt; 1997 (stem harmony with today's stem)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐯 Tiger — Steady ★★★☆☆ (68/100)
&lt;/h2&gt;

&lt;p&gt;In five-element terms, today's energy supports yours, so help from mentors and the people around you is easier to receive. Looking only at the earthly branches, there is no direct harmony or clash with today's stem-branch. Rather than forcing big moves, work with the five-element flow and keep things balanced.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Good · &lt;strong&gt;Work&lt;/strong&gt; Good · &lt;strong&gt;Supportive hours&lt;/strong&gt; 9–11 PM&lt;/p&gt;

&lt;p&gt;⚠️ &lt;em&gt;A bit bumpier if you were born in:&lt;/em&gt; 1986 (stem clash with today's stem)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐰 Rabbit — Good ★★★★☆ (75/100)
&lt;/h2&gt;

&lt;p&gt;A Harm (害) relation invites misunderstandings with people close to you. If feelings get bruised, clear the air the same day. In five-element terms, today's energy supports yours, so help from mentors and the people around you is easier to receive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Good · &lt;strong&gt;Love&lt;/strong&gt; Good · &lt;strong&gt;Health&lt;/strong&gt; Good · &lt;strong&gt;Work&lt;/strong&gt; Excellent · &lt;strong&gt;Supportive hours&lt;/strong&gt; 7–9 PM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1987 (stem harmony with today's stem)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐲 Dragon — Caution ★★☆☆☆ (54/100)
&lt;/h2&gt;

&lt;p&gt;Today's branch mirrors your own (伏吟, 'hidden echo'). Familiar routines flow smoothly, but this is a day to consolidate rather than launch something new. Self-Punishment (自刑) energy makes you overly hard on yourself today. Don't chase perfection — aim for 80% and stop there. Your element controls today's — you can take charge of things, but watch out for overwork and going it alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Caution · &lt;strong&gt;Health&lt;/strong&gt; Caution · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Supportive hours&lt;/strong&gt; 5–7 PM&lt;/p&gt;

&lt;p&gt;⚠️ &lt;em&gt;A bit bumpier if you were born in:&lt;/em&gt; 1976 (stem clash with today's stem)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐍 Snake — Steady ★★★☆☆ (57/100)
&lt;/h2&gt;

&lt;p&gt;Today's element presses on yours — play defense, keep things solid, and avoid overreach. Looking only at the earthly branches, there is no direct harmony or clash with today's stem-branch. Rather than forcing big moves, work with the five-element flow and keep things balanced.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Caution · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Supportive hours&lt;/strong&gt; 3–5 PM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1977 (stem harmony with today's stem)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐴 Horse — Caution ★★☆☆☆ (50/100)
&lt;/h2&gt;

&lt;p&gt;Today's element presses on yours — play defense, keep things solid, and avoid overreach. Looking only at the earthly branches, there is no direct harmony or clash with today's stem-branch. Rather than forcing big moves, work with the five-element flow and keep things balanced.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Caution · &lt;strong&gt;Love&lt;/strong&gt; Caution · &lt;strong&gt;Health&lt;/strong&gt; Caution · &lt;strong&gt;Work&lt;/strong&gt; Caution · &lt;strong&gt;Supportive hours&lt;/strong&gt; 1–3 PM&lt;/p&gt;

&lt;p&gt;⚠️ &lt;em&gt;A bit bumpier if you were born in:&lt;/em&gt; 1966, 2026 (stem clash with today's stem)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔮 A zodiac reading is the shared current for everyone born under the same sign. Curious about &lt;strong&gt;your personal Four Pillars (Saju) chart&lt;/strong&gt;, calculated from your exact birth date and time? &lt;a href="https://runartree.com/en/?utm_source=devto&amp;amp;utm_medium=post&amp;amp;utm_campaign=zodiac_daily" rel="noopener noreferrer"&gt;Get a free reading at Runartree K-Saju&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎁 &lt;strong&gt;New member event — sign up now and get 2,000P instantly!&lt;/strong&gt; That unlocks the premium Comprehensive Reading (1,900P) for free. (1P = ₩1)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;+2,000P instantly on sign-up&lt;/li&gt;
&lt;li&gt;+50P daily just for checking your free fortune&lt;/li&gt;
&lt;li&gt;+500P monthly for writing a free-reading review&lt;/li&gt;
&lt;li&gt;20% points back when you review a paid reading&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Review rewards are granted after approval.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  🐑 Sheep — Steady ★★★☆☆ (60/100)
&lt;/h2&gt;

&lt;p&gt;Your element controls today's — you can take charge of things, but watch out for overwork and going it alone. Looking only at the earthly branches, there is no direct harmony or clash with today's stem-branch. Rather than forcing big moves, work with the five-element flow and keep things balanced.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Supportive hours&lt;/strong&gt; 11 AM–1 PM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1967 (stem harmony with today's stem)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐵 Monkey — Good ★★★★☆ (76/100)
&lt;/h2&gt;

&lt;p&gt;A Three Harmony (三合) alignment with today's stem-branch puts the wind at your back for teamwork and joint projects. Your element feeds today's energy — great for expressing, creating, and pitching, but pace yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Good · &lt;strong&gt;Love&lt;/strong&gt; Good · &lt;strong&gt;Health&lt;/strong&gt; Good · &lt;strong&gt;Work&lt;/strong&gt; Excellent · &lt;strong&gt;Supportive hours&lt;/strong&gt; 9–11 AM&lt;/p&gt;

&lt;p&gt;⚠️ &lt;em&gt;Do not get too complacent if you were born in:&lt;/em&gt; 1956, 2016 (stem clash with today's stem)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐔 Rooster — Good ★★★★☆ (76/100)
&lt;/h2&gt;

&lt;p&gt;Your branch forms a Six Harmony (六合) with today's stem-branch — allies and connections work in your favor. A great day for cooperation, contracts, and meetings. Your element feeds today's energy — great for expressing, creating, and pitching, but pace yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Good · &lt;strong&gt;Love&lt;/strong&gt; Excellent · &lt;strong&gt;Health&lt;/strong&gt; Good · &lt;strong&gt;Work&lt;/strong&gt; Good · &lt;strong&gt;Supportive hours&lt;/strong&gt; 7–9 AM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1957, 2017 (stem harmony with today's stem)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐶 Dog — Caution ★★☆☆☆ (40/100)
&lt;/h2&gt;

&lt;p&gt;Your branch clashes (沖) with today's stem-branch — expect changes and movement. If you can, postpone big decisions, contract signings, and major spending by a day. Your element controls today's — you can take charge of things, but watch out for overwork and going it alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Take care · &lt;strong&gt;Love&lt;/strong&gt; Caution · &lt;strong&gt;Health&lt;/strong&gt; Take care · &lt;strong&gt;Work&lt;/strong&gt; Caution · &lt;strong&gt;Supportive hours&lt;/strong&gt; 5–7 AM&lt;/p&gt;

&lt;p&gt;⚠️ &lt;em&gt;A bit bumpier if you were born in:&lt;/em&gt; 1946, 2006 (stem clash with today's stem)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐷 Pig — Steady ★★★☆☆ (61/100)
&lt;/h2&gt;

&lt;p&gt;Wonjin (怨嗔, 'quiet resentment') energy can make you irritable for no clear reason. Skip the emotional reactions and the day passes just fine. In five-element terms, today's energy stands shoulder to shoulder with yours — your usual ability carries the day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Supportive hours&lt;/strong&gt; 3–5 AM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1947, 2007 (stem harmony with today's stem)&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This reading is generated from today's stem-branch and its harmony/clash (合·沖·刑·破·害) and five-element relations with each zodiac branch — deterministic rules, no AI improvisation. For fun and reference only.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Tzuyu's 2026 Fortune: A Korean Four Pillars (Saju) Reading</title>
      <dc:creator>runartree.com</dc:creator>
      <pubDate>Thu, 09 Jul 2026 11:19:00 +0000</pubDate>
      <link>https://dev.to/hyun_soolee_0c4754e81463/tzuyus-2026-fortune-a-korean-four-pillars-saju-reading-23nn</link>
      <guid>https://dev.to/hyun_soolee_0c4754e81463/tzuyus-2026-fortune-a-korean-four-pillars-saju-reading-23nn</guid>
      <description>&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%2Frunartree.com%2Fimages%2Flogo_good.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%2Frunartree.com%2Fimages%2Flogo_good.png" alt="Runartree K-Saju" width="434" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Tzuyu's 2026 Fortune — A Korean Four Pillars (Saju) Reading
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Four Pillars of Destiny (Saju) is Korea's traditional astrology. Normally, birth date and time form eight characters; because the birth time is unknown here, this is a three-pillar reading.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How this was generated: a deterministic rule engine — lunar-calendar math → Ten Gods mapping → branch-interaction detection (harmony/clash/punishment) → Twelve Life Stages → climate balancing. Same input, same output, every time. No LLM in the loop.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Overall: a steady year · Wealth: not a wealth year — build capacity · Love: a Peach Blossom year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Birth chart (birth time unknown — three-pillar reading):&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hour&lt;/th&gt;
&lt;th&gt;Day&lt;/th&gt;
&lt;th&gt;Month&lt;/th&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;丁酉&lt;/td&gt;
&lt;td&gt;庚午&lt;/td&gt;
&lt;td&gt;己卯&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Day Master / Indirect Wealth&lt;/td&gt;
&lt;td&gt;Direct Wealth / Friend&lt;/td&gt;
&lt;td&gt;Eating God / Indirect Resource&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🔍 The Chart Itself
&lt;/h2&gt;

&lt;p&gt;The Day Master (the character that stands for the person) is &lt;strong&gt;丁&lt;/strong&gt; — think &lt;em&gt;candlelight in the dark&lt;/em&gt;: quiet devotion and detail, with real fire underneath.&lt;/p&gt;

&lt;p&gt;Element distribution: &lt;strong&gt;Water&lt;/strong&gt; does not appear among the visible three-pillar characters — the related themes, wisdom &amp;amp; adaptability, become areas to develop over time.&lt;/p&gt;

&lt;p&gt;The core classical theme is &lt;strong&gt;Wealth-heavy, weak Day Master&lt;/strong&gt; (&lt;em&gt;jaeda-sinyak&lt;/em&gt;, 財多身弱). Money and opportunity are easy to notice here, but carrying too much alone becomes the risk. The chart stabilizes when support, structure, and rest are built before expansion.&lt;/p&gt;

&lt;p&gt;Special stars (&lt;em&gt;shinsal&lt;/em&gt;) detected in this chart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Heavenly Noble (天乙貴人)&lt;/strong&gt; — the top benefactor star: someone always extends a hand at the worst moment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Peach Blossom (桃花)&lt;/strong&gt; — magnetic charm that draws eyes and affection&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌟 2026 Overall
&lt;/h2&gt;

&lt;p&gt;For Tzuyu, 2026 (丙午) reads as &lt;strong&gt;a steady year&lt;/strong&gt;. The energy arriving this year is that of &lt;strong&gt;peers, competition, and independence&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On the Twelve Life Stages cycle, this year lands on &lt;strong&gt;Prime (建祿) — self-made strength&lt;/strong&gt; — active energy is present, but it needs guardrails, timing, and recovery.&lt;/p&gt;

&lt;p&gt;A Break relation enters the chart — small schedule or promise mismatches should not be left unattended.&lt;/p&gt;

&lt;p&gt;Year pillar (early life and public/social contact) forms a Break relation with this year, so reconfirming plans and promises becomes protective.&lt;/p&gt;

&lt;p&gt;Month pillar (career, parents, and social foundation) is touched by Self-Punishment, so pressure from within that area needs pacing and perspective.&lt;/p&gt;

&lt;p&gt;From a climate-balancing view, this chart benefits from &lt;strong&gt;Water&lt;/strong&gt; to balance its seasonal tone. This year's &lt;strong&gt;Fire&lt;/strong&gt; energy moves in a different direction, so consciously building Water-oriented habits helps keep the year balanced. Those balancing habits help the temperature of the chart, but they do not automatically make the Day Master strong; recovery, structure, and pacing still come before expansion.&lt;/p&gt;

&lt;h2&gt;
  
  
  💰 Wealth
&lt;/h2&gt;

&lt;p&gt;On a three-pillar basis, the chart is rich in Wealth Stars — opportunities and money talk never stop. The discipline to stop at 80% of the appetite is what protects the wallet.&lt;/p&gt;

&lt;p&gt;Both &lt;strong&gt;direct and indirect wealth stars&lt;/strong&gt; are present — the textbook play is stable income as the floor, opportunistic bets on top.&lt;/p&gt;

&lt;p&gt;Wealth Stars appear in the Month pillar (career, parents, and social foundation) and the Day pillar (self and partner). In plain English: money themes are tied to career foundations and public activity, daily life, partnership, and practical responsibility.&lt;/p&gt;

&lt;p&gt;2026 is not a Wealth Star year for this chart — better spent building future earning capacity than chasing windfalls.&lt;/p&gt;

&lt;h2&gt;
  
  
  💞 Love
&lt;/h2&gt;

&lt;p&gt;In a female chart, the relationship star is the Officer Star. The relationship star is not loud on the surface of this chart — bonds tend to deepen over time rather than start dramatically.&lt;/p&gt;

&lt;p&gt;No special harmony or clash touches the spouse palace this year — love flows without major turbulence, shaped by one's own effort.&lt;/p&gt;

&lt;p&gt;The spouse palace (day branch) holds &lt;strong&gt;酉&lt;/strong&gt; with the surface Ten-God role of &lt;em&gt;Indirect Wealth&lt;/em&gt;. This gives close relationships a practical, trust-and-responsibility flavor: reliability, shared resources, and concrete support matter.&lt;/p&gt;

&lt;p&gt;Looking into the hidden stems of the spouse palace, we find &lt;strong&gt;庚&lt;/strong&gt; (Direct Wealth), &lt;strong&gt;辛&lt;/strong&gt; (Indirect Wealth). That makes first impressions less reliable than what emerges over time.&lt;/p&gt;

&lt;p&gt;The natal chart itself carries &lt;strong&gt;Peach Blossom&lt;/strong&gt; — built-in magnetism. Clear boundaries help that charm stay useful instead of turning into noise.&lt;/p&gt;

&lt;p&gt;On top of that, 2026 is a &lt;strong&gt;Peach Blossom (桃花) year&lt;/strong&gt; for this chart — charm that draws not just romance but public attention.&lt;/p&gt;




&lt;p&gt;Curious how the rule engine works under the hood (branch-interaction tables, Ten-God mapping, the whole pipeline)? Ask in the comments — happy to write a technical breakdown.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔮 Curious what &lt;em&gt;your&lt;/em&gt; chart says? &lt;a href="https://runartree.com/en/?utm_source=devto&amp;amp;utm_medium=post&amp;amp;utm_campaign=star_saju" rel="noopener noreferrer"&gt;Get a free K-Saju reading at Runartree&lt;/a&gt; — calculated from your exact birth date and time, no sign-up needed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Generated from lunar-calendar math and classical Saju rules (Ten Gods, branch interactions, Twelve Stages, climate balance). For fun and reference.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;#astrology&lt;/code&gt; &lt;code&gt;#korea&lt;/code&gt; &lt;code&gt;#sideproject&lt;/code&gt; &lt;code&gt;#algorithms&lt;/code&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Chaeyoung's 2026 Fortune: A Korean Four Pillars (Saju) Reading</title>
      <dc:creator>runartree.com</dc:creator>
      <pubDate>Wed, 08 Jul 2026 11:15:00 +0000</pubDate>
      <link>https://dev.to/hyun_soolee_0c4754e81463/chaeyoungs-2026-fortune-a-korean-four-pillars-saju-reading-3jic</link>
      <guid>https://dev.to/hyun_soolee_0c4754e81463/chaeyoungs-2026-fortune-a-korean-four-pillars-saju-reading-3jic</guid>
      <description>&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%2Frunartree.com%2Fimages%2Flogo_good.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%2Frunartree.com%2Fimages%2Flogo_good.png" alt="Runartree K-Saju" width="434" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Chaeyoung's 2026 Fortune — A Korean Four Pillars (Saju) Reading
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Four Pillars of Destiny (Saju) is Korea's traditional astrology. Normally, birth date and time form eight characters; because the birth time is unknown here, this is a three-pillar reading.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How this was generated: a deterministic rule engine — lunar-calendar math → Ten Gods mapping → branch-interaction detection (harmony/clash/punishment) → Twelve Life Stages → climate balancing. Same input, same output, every time. No LLM in the loop.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Overall: a year that calls for care · Wealth: not a wealth year — build capacity · Love: a Peach Blossom year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Birth chart (birth time unknown — three-pillar reading):&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hour&lt;/th&gt;
&lt;th&gt;Day&lt;/th&gt;
&lt;th&gt;Month&lt;/th&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;乙巳&lt;/td&gt;
&lt;td&gt;戊辰&lt;/td&gt;
&lt;td&gt;己卯&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Day Master / Hurting Officer&lt;/td&gt;
&lt;td&gt;Direct Wealth / Direct Wealth&lt;/td&gt;
&lt;td&gt;Indirect Wealth / Friend&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🔍 The Chart Itself
&lt;/h2&gt;

&lt;p&gt;The Day Master (the character that stands for the person) is &lt;strong&gt;乙&lt;/strong&gt; — think &lt;em&gt;a resilient vine&lt;/em&gt;: flexibility that bends without breaking, plus a sharp practical instinct.&lt;/p&gt;

&lt;p&gt;Element distribution: the chart runs heavy on &lt;strong&gt;Earth&lt;/strong&gt; ×3 — that becomes the engine here: trust &amp;amp; mediation. Meanwhile &lt;strong&gt;Metal&lt;/strong&gt; and &lt;strong&gt;Water&lt;/strong&gt; do not appear among the visible three-pillar characters — the related themes, decisiveness &amp;amp; finishing, wisdom &amp;amp; adaptability, become areas to develop over time.&lt;/p&gt;

&lt;p&gt;The core classical theme is &lt;strong&gt;Wealth-heavy, weak Day Master&lt;/strong&gt; (&lt;em&gt;jaeda-sinyak&lt;/em&gt;, 財多身弱). Money and opportunity are easy to notice here, but carrying too much alone becomes the risk. The chart stabilizes when support, structure, and rest are built before expansion.&lt;/p&gt;

&lt;p&gt;Special stars (&lt;em&gt;shinsal&lt;/em&gt;) detected in this chart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Post Horse (驛馬)&lt;/strong&gt; — the star of movement, travel, and restless drive&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yang Blade (羊刃)&lt;/strong&gt; — decisive force and strong self-protection&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌟 2026 Overall
&lt;/h2&gt;

&lt;p&gt;For Chaeyoung, 2026 (丙午) reads as &lt;strong&gt;a year that calls for care&lt;/strong&gt;. The energy arriving this year is that of &lt;strong&gt;expression and creative output&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On the Twelve Life Stages cycle, this year lands on &lt;strong&gt;Birth (長生) — rising energy&lt;/strong&gt; — active energy is present, but it needs guardrails, timing, and recovery.&lt;/p&gt;

&lt;p&gt;A Break relation enters the chart — small schedule or promise mismatches should not be left unattended.&lt;/p&gt;

&lt;p&gt;Year pillar (early life and public/social contact) forms a Break relation with this year, so reconfirming plans and promises becomes protective.&lt;/p&gt;

&lt;h2&gt;
  
  
  💰 Wealth
&lt;/h2&gt;

&lt;p&gt;On a three-pillar basis, the chart is rich in Wealth Stars — opportunities and money talk never stop. The discipline to stop at 80% of the appetite is what protects the wallet.&lt;/p&gt;

&lt;p&gt;The wealth stars here lean &lt;strong&gt;direct (正財)&lt;/strong&gt; — compound-interest money: steady income, careful management, time as the ally.&lt;/p&gt;

&lt;p&gt;Wealth Stars appear in the Year pillar (early life and public/social contact) and the Month pillar (career, parents, and social foundation). In plain English: money themes are tied to early social experience, career foundations and public activity.&lt;/p&gt;

&lt;p&gt;2026 is not a Wealth Star year for this chart — better spent building future earning capacity than chasing windfalls.&lt;/p&gt;

&lt;h2&gt;
  
  
  💞 Love
&lt;/h2&gt;

&lt;p&gt;In a female chart, the relationship star is the Officer Star. The relationship star is not loud on the surface of this chart — bonds tend to deepen over time rather than start dramatically.&lt;/p&gt;

&lt;p&gt;No special harmony or clash touches the spouse palace this year — love flows without major turbulence, shaped by one's own effort.&lt;/p&gt;

&lt;p&gt;The spouse palace (day branch) holds &lt;strong&gt;巳&lt;/strong&gt; with the surface Ten-God role of &lt;em&gt;Hurting Officer&lt;/em&gt;. This points to relationships that last longer when both sides respect each other's space.&lt;/p&gt;

&lt;p&gt;Looking into the hidden stems of the spouse palace, we find &lt;strong&gt;戊&lt;/strong&gt; (Direct Wealth), &lt;strong&gt;庚&lt;/strong&gt; (Direct Officer), &lt;strong&gt;丙&lt;/strong&gt; (Hurting Officer). So the relationship star is not absent; it is tucked inside the spouse palace, which favors bonds that develop gradually rather than dramatically.&lt;/p&gt;

&lt;p&gt;On top of that, 2026 is a &lt;strong&gt;Peach Blossom (桃花) year&lt;/strong&gt; for this chart — charm that draws not just romance but public attention.&lt;/p&gt;




&lt;p&gt;Curious how the rule engine works under the hood (branch-interaction tables, Ten-God mapping, the whole pipeline)? Ask in the comments — happy to write a technical breakdown.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔮 Curious what &lt;em&gt;your&lt;/em&gt; chart says? &lt;a href="https://runartree.com/en/?utm_source=devto&amp;amp;utm_medium=post&amp;amp;utm_campaign=star_saju" rel="noopener noreferrer"&gt;Get a free K-Saju reading at Runartree&lt;/a&gt; — calculated from your exact birth date and time, no sign-up needed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Generated from lunar-calendar math and classical Saju rules (Ten Gods, branch interactions, Twelve Stages, climate balance). For fun and reference.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;#astrology&lt;/code&gt; &lt;code&gt;#korea&lt;/code&gt; &lt;code&gt;#sideproject&lt;/code&gt; &lt;code&gt;#algorithms&lt;/code&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Dahyun's 2026 Fortune: A Korean Four Pillars (Saju) Reading</title>
      <dc:creator>runartree.com</dc:creator>
      <pubDate>Tue, 07 Jul 2026 11:11:00 +0000</pubDate>
      <link>https://dev.to/hyun_soolee_0c4754e81463/dahyuns-2026-fortune-a-korean-four-pillars-saju-reading-4bfj</link>
      <guid>https://dev.to/hyun_soolee_0c4754e81463/dahyuns-2026-fortune-a-korean-four-pillars-saju-reading-4bfj</guid>
      <description>&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%2Frunartree.com%2Fimages%2Flogo_good.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%2Frunartree.com%2Fimages%2Flogo_good.png" alt="Runartree K-Saju" width="434" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Dahyun's 2026 Fortune — A Korean Four Pillars (Saju) Reading
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Four Pillars of Destiny (Saju) is Korea's traditional astrology. Normally, birth date and time form eight characters; because the birth time is unknown here, this is a three-pillar reading.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How this was generated: a deterministic rule engine — lunar-calendar math → Ten Gods mapping → branch-interaction detection (harmony/clash/punishment) → Twelve Life Stages → climate balancing. Same input, same output, every time. No LLM in the loop.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Overall: a cautious rebuilding year · Wealth: not a wealth year — build capacity · Love: calm waters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Birth chart (birth time unknown — three-pillar reading):&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hour&lt;/th&gt;
&lt;th&gt;Day&lt;/th&gt;
&lt;th&gt;Month&lt;/th&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;乙亥&lt;/td&gt;
&lt;td&gt;丁巳&lt;/td&gt;
&lt;td&gt;戊寅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Day Master / Direct Resource&lt;/td&gt;
&lt;td&gt;Eating God / Hurting Officer&lt;/td&gt;
&lt;td&gt;Direct Wealth / Rob Wealth&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🔍 The Chart Itself
&lt;/h2&gt;

&lt;p&gt;The Day Master (the character that stands for the person) is &lt;strong&gt;乙&lt;/strong&gt; — think &lt;em&gt;a resilient vine&lt;/em&gt;: flexibility that bends without breaking, plus a sharp practical instinct.&lt;/p&gt;

&lt;p&gt;Element distribution: &lt;strong&gt;Metal&lt;/strong&gt; does not appear among the visible three-pillar characters — the related themes, decisiveness &amp;amp; finishing, become areas to develop over time.&lt;/p&gt;

&lt;p&gt;Special stars (&lt;em&gt;shinsal&lt;/em&gt;) detected in this chart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Post Horse (驛馬)&lt;/strong&gt; — the star of movement, travel, and restless drive&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌟 2026 Overall
&lt;/h2&gt;

&lt;p&gt;For Dahyun, 2026 (丙午) reads as &lt;strong&gt;a cautious rebuilding year&lt;/strong&gt;. The energy arriving this year is that of &lt;strong&gt;expression and creative output&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On the Twelve Life Stages cycle, this year lands on &lt;strong&gt;Birth (長生) — rising energy&lt;/strong&gt; — active energy is present, but it needs guardrails, timing, and recovery.&lt;/p&gt;

&lt;p&gt;One side of a Three Harmony pattern gathers allies and momentum, but the year still favors careful pacing over unchecked expansion.&lt;/p&gt;

&lt;p&gt;Year pillar (early life and public/social contact) forms one side of a Three Harmony pattern, bringing allies and momentum into that area. Keep the scope clear and grow it step by step.&lt;/p&gt;

&lt;p&gt;From a climate-balancing view, this chart benefits from &lt;strong&gt;Water&lt;/strong&gt; to balance its seasonal tone. This year's &lt;strong&gt;Fire&lt;/strong&gt; energy moves in a different direction, so consciously building Water-oriented habits helps keep the year balanced. Those balancing habits help the temperature of the chart, but they do not automatically make the Day Master strong; recovery, structure, and pacing still come before expansion.&lt;/p&gt;

&lt;h2&gt;
  
  
  💰 Wealth
&lt;/h2&gt;

&lt;p&gt;Wealth Stars sit in healthy proportion — money grows through steady management rather than sudden windfalls.&lt;/p&gt;

&lt;p&gt;The wealth stars here lean &lt;strong&gt;direct (正財)&lt;/strong&gt; — compound-interest money: steady income, careful management, time as the ally.&lt;/p&gt;

&lt;p&gt;Wealth Stars appear in the Year pillar (early life and public/social contact). In plain English: money themes are tied to early social experience.&lt;/p&gt;

&lt;p&gt;2026 is not a Wealth Star year for this chart — better spent building future earning capacity than chasing windfalls.&lt;/p&gt;

&lt;h2&gt;
  
  
  💞 Love
&lt;/h2&gt;

&lt;p&gt;In a female chart, the relationship star is the Officer Star. The relationship star is not loud on the surface of this chart — bonds tend to deepen over time rather than start dramatically.&lt;/p&gt;

&lt;p&gt;No special harmony or clash touches the spouse palace this year — love flows without major turbulence, shaped by one's own effort.&lt;/p&gt;

&lt;p&gt;The spouse palace (day branch) holds &lt;strong&gt;亥&lt;/strong&gt; with the surface Ten-God role of &lt;em&gt;Direct Resource&lt;/em&gt;. This points to relationships that last longer when both sides respect each other's space.&lt;/p&gt;

&lt;p&gt;Looking into the hidden stems of the spouse palace, we find &lt;strong&gt;戊&lt;/strong&gt; (Direct Wealth), &lt;strong&gt;甲&lt;/strong&gt; (Rob Wealth), &lt;strong&gt;壬&lt;/strong&gt; (Direct Resource). That makes first impressions less reliable than what emerges over time.&lt;/p&gt;




&lt;p&gt;Curious how the rule engine works under the hood (branch-interaction tables, Ten-God mapping, the whole pipeline)? Ask in the comments — happy to write a technical breakdown.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔮 Curious what &lt;em&gt;your&lt;/em&gt; chart says? &lt;a href="https://runartree.com/en/?utm_source=devto&amp;amp;utm_medium=post&amp;amp;utm_campaign=star_saju" rel="noopener noreferrer"&gt;Get a free K-Saju reading at Runartree&lt;/a&gt; — calculated from your exact birth date and time, no sign-up needed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Generated from lunar-calendar math and classical Saju rules (Ten Gods, branch interactions, Twelve Stages, climate balance). For fun and reference.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;#astrology&lt;/code&gt; &lt;code&gt;#korea&lt;/code&gt; &lt;code&gt;#sideproject&lt;/code&gt; &lt;code&gt;#algorithms&lt;/code&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Mina's 2026 Fortune: A Korean Four Pillars (Saju) Reading</title>
      <dc:creator>runartree.com</dc:creator>
      <pubDate>Mon, 06 Jul 2026 11:10:00 +0000</pubDate>
      <link>https://dev.to/hyun_soolee_0c4754e81463/minas-2026-fortune-a-korean-four-pillars-saju-reading-3hjm</link>
      <guid>https://dev.to/hyun_soolee_0c4754e81463/minas-2026-fortune-a-korean-four-pillars-saju-reading-3hjm</guid>
      <description>&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%2Frunartree.com%2Fimages%2Flogo_good.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%2Frunartree.com%2Fimages%2Flogo_good.png" alt="Runartree K-Saju" width="434" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Mina's 2026 Fortune — A Korean Four Pillars (Saju) Reading
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Four Pillars of Destiny (Saju) is Korea's traditional astrology. Normally, birth date and time form eight characters; because the birth time is unknown here, this is a three-pillar reading.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How this was generated: a deterministic rule engine — lunar-calendar math → Ten Gods mapping → branch-interaction detection (harmony/clash/punishment) → Twelve Life Stages → climate balancing. Same input, same output, every time. No LLM in the loop.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Overall: a year that calls for care · Wealth: not a wealth year — build capacity · Love: a Peach Blossom year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Birth chart (birth time unknown — three-pillar reading):&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hour&lt;/th&gt;
&lt;th&gt;Day&lt;/th&gt;
&lt;th&gt;Month&lt;/th&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;乙丑&lt;/td&gt;
&lt;td&gt;癸卯&lt;/td&gt;
&lt;td&gt;丁丑&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Day Master / Indirect Wealth&lt;/td&gt;
&lt;td&gt;Indirect Resource / Friend&lt;/td&gt;
&lt;td&gt;Eating God / Indirect Wealth&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🔍 The Chart Itself
&lt;/h2&gt;

&lt;p&gt;The Day Master (the character that stands for the person) is &lt;strong&gt;乙&lt;/strong&gt; — think &lt;em&gt;a resilient vine&lt;/em&gt;: flexibility that bends without breaking, plus a sharp practical instinct.&lt;/p&gt;

&lt;p&gt;Element distribution: &lt;strong&gt;Metal&lt;/strong&gt; does not appear among the visible three-pillar characters — the related themes, decisiveness &amp;amp; finishing, become areas to develop over time.&lt;/p&gt;

&lt;p&gt;The core classical theme is &lt;strong&gt;Wealth-heavy, weak Day Master&lt;/strong&gt; (&lt;em&gt;jaeda-sinyak&lt;/em&gt;, 財多身弱). Money and opportunity are easy to notice here, but carrying too much alone becomes the risk. The chart stabilizes when support, structure, and rest are built before expansion.&lt;/p&gt;

&lt;p&gt;Special stars (&lt;em&gt;shinsal&lt;/em&gt;) detected in this chart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Canopy (華蓋)&lt;/strong&gt; — artistry paired with solitude&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌟 2026 Overall
&lt;/h2&gt;

&lt;p&gt;For Mina, 2026 (丙午) reads as &lt;strong&gt;a year that calls for care&lt;/strong&gt;. The energy arriving this year is that of &lt;strong&gt;expression and creative output&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On the Twelve Life Stages cycle, this year lands on &lt;strong&gt;Birth (長生) — rising energy&lt;/strong&gt; — active energy is present, but it needs guardrails, timing, and recovery.&lt;/p&gt;

&lt;p&gt;A Harm relation touches the natal chart — small misunderstandings with nearby people deserve early clarification.&lt;/p&gt;

&lt;p&gt;Wonjin energy stirs irritability — don't answer feelings with feelings.&lt;/p&gt;

&lt;p&gt;Year pillar (early life and public/social contact) is touched by Harm, so misunderstandings with people tied to that area need quick clarification.&lt;/p&gt;

&lt;p&gt;Year pillar (early life and public/social contact) is touched by Wonjin, so vague irritation in that area should not be turned into a final judgment too quickly.&lt;/p&gt;

&lt;p&gt;Month pillar (career, parents, and social foundation) forms a Break relation with this year, so reconfirming plans and promises becomes protective.&lt;/p&gt;

&lt;h2&gt;
  
  
  💰 Wealth
&lt;/h2&gt;

&lt;p&gt;On a three-pillar basis, the chart is rich in Wealth Stars — opportunities and money talk never stop. The discipline to stop at 80% of the appetite is what protects the wallet.&lt;/p&gt;

&lt;p&gt;The wealth stars here lean &lt;strong&gt;indirect (偏財)&lt;/strong&gt; — money that circulates: business, investing, dealmaking. Big swings, so building a 'keep' structure comes first.&lt;/p&gt;

&lt;p&gt;Wealth Stars appear in the Year pillar (early life and public/social contact) and the Day pillar (self and partner). In plain English: money themes are tied to early social experience, daily life, partnership, and practical responsibility.&lt;/p&gt;

&lt;p&gt;2026 is not a Wealth Star year for this chart — better spent building future earning capacity than chasing windfalls.&lt;/p&gt;

&lt;h2&gt;
  
  
  💞 Love
&lt;/h2&gt;

&lt;p&gt;In a female chart, the relationship star is the Officer Star. The relationship star is not loud on the surface of this chart — bonds tend to deepen over time rather than start dramatically.&lt;/p&gt;

&lt;p&gt;A Harm relation touches the spouse palace — skip the messengers and have important conversations face to face.&lt;/p&gt;

&lt;p&gt;Wonjin energy brushes the spouse palace — small irritations loom large, but most dissolve if you sleep on them.&lt;/p&gt;

&lt;p&gt;The spouse palace (day branch) holds &lt;strong&gt;丑&lt;/strong&gt; with the surface Ten-God role of &lt;em&gt;Indirect Wealth&lt;/em&gt;. This gives close relationships a practical, trust-and-responsibility flavor: reliability, shared resources, and concrete support matter.&lt;/p&gt;

&lt;p&gt;Looking into the hidden stems of the spouse palace, we find &lt;strong&gt;癸&lt;/strong&gt; (Indirect Resource), &lt;strong&gt;辛&lt;/strong&gt; (Seven Killings), &lt;strong&gt;己&lt;/strong&gt; (Indirect Wealth). So the relationship star is not absent; it is tucked inside the spouse palace, which favors bonds that develop gradually rather than dramatically.&lt;/p&gt;

&lt;p&gt;On top of that, 2026 is a &lt;strong&gt;Peach Blossom (桃花) year&lt;/strong&gt; for this chart — charm that draws not just romance but public attention.&lt;/p&gt;




&lt;p&gt;Curious how the rule engine works under the hood (branch-interaction tables, Ten-God mapping, the whole pipeline)? Ask in the comments — happy to write a technical breakdown.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔮 Curious what &lt;em&gt;your&lt;/em&gt; chart says? &lt;a href="https://runartree.com/en/?utm_source=devto&amp;amp;utm_medium=post&amp;amp;utm_campaign=star_saju" rel="noopener noreferrer"&gt;Get a free K-Saju reading at Runartree&lt;/a&gt; — calculated from your exact birth date and time, no sign-up needed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Generated from lunar-calendar math and classical Saju rules (Ten Gods, branch interactions, Twelve Stages, climate balance). For fun and reference.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;#astrology&lt;/code&gt; &lt;code&gt;#korea&lt;/code&gt; &lt;code&gt;#sideproject&lt;/code&gt; &lt;code&gt;#algorithms&lt;/code&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Jihyo's 2026 Fortune: A Korean Four Pillars (Saju) Reading</title>
      <dc:creator>runartree.com</dc:creator>
      <pubDate>Sun, 05 Jul 2026 11:30:00 +0000</pubDate>
      <link>https://dev.to/hyun_soolee_0c4754e81463/jihyos-2026-fortune-a-korean-four-pillars-saju-reading-3k25</link>
      <guid>https://dev.to/hyun_soolee_0c4754e81463/jihyos-2026-fortune-a-korean-four-pillars-saju-reading-3k25</guid>
      <description>&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%2Frunartree.com%2Fimages%2Flogo_good.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%2Frunartree.com%2Fimages%2Flogo_good.png" alt="Runartree K-Saju" width="434" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Jihyo's 2026 Fortune — A Korean Four Pillars (Saju) Reading
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Four Pillars of Destiny (Saju) is Korea's traditional astrology. Normally, birth date and time form eight characters; because the birth time is unknown here, this is a three-pillar reading.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How this was generated: a deterministic rule engine — lunar-calendar math → Ten Gods mapping → branch-interaction detection (harmony/clash/punishment) → Twelve Life Stages → climate balancing. Same input, same output, every time. No LLM in the loop.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Overall: a steady year · Wealth: not a wealth year — build capacity · Love: the spouse palace lights up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Birth chart (birth time unknown — three-pillar reading):&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hour&lt;/th&gt;
&lt;th&gt;Day&lt;/th&gt;
&lt;th&gt;Month&lt;/th&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;甲戌&lt;/td&gt;
&lt;td&gt;辛丑&lt;/td&gt;
&lt;td&gt;丙子&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Day Master / Indirect Wealth&lt;/td&gt;
&lt;td&gt;Direct Officer / Direct Wealth&lt;/td&gt;
&lt;td&gt;Eating God / Direct Resource&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🔍 The Chart Itself
&lt;/h2&gt;

&lt;p&gt;The Day Master (the character that stands for the person) is &lt;strong&gt;甲&lt;/strong&gt; — think &lt;em&gt;a towering tree&lt;/em&gt;: straight-growing drive and pride — the type that breaks before it bends.&lt;/p&gt;

&lt;p&gt;By visible elements, the chart looks fairly balanced. But once season and rooting are considered, the Day Master leans weak. That makes pacing, support systems, and recovery more important than the surface balance suggests.&lt;/p&gt;

&lt;p&gt;The core classical theme is &lt;strong&gt;Wealth-heavy, weak Day Master&lt;/strong&gt; (&lt;em&gt;jaeda-sinyak&lt;/em&gt;, 財多身弱). Money and opportunity are easy to notice here, but carrying too much alone becomes the risk. The chart stabilizes when support, structure, and rest are built before expansion.&lt;/p&gt;

&lt;p&gt;Special stars (&lt;em&gt;shinsal&lt;/em&gt;) detected in this chart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Heavenly Noble (天乙貴人)&lt;/strong&gt; — the top benefactor star: someone always extends a hand at the worst moment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canopy (華蓋)&lt;/strong&gt; — artistry paired with solitude&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌟 2026 Overall
&lt;/h2&gt;

&lt;p&gt;For Jihyo, 2026 (丙午) reads as &lt;strong&gt;a steady year&lt;/strong&gt;. The energy arriving this year is that of &lt;strong&gt;expression and creative output&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On the Twelve Life Stages cycle, this year lands on &lt;strong&gt;Death (死) — closure and consolidation&lt;/strong&gt; — not literal death, but a phase better spent consolidating than expanding.&lt;/p&gt;

&lt;p&gt;A clash with the natal chart makes this a year of movement and change — pick the timing of big decisions carefully.&lt;/p&gt;

&lt;p&gt;A Harm relation touches the natal chart — small misunderstandings with nearby people deserve early clarification.&lt;/p&gt;

&lt;p&gt;Year pillar (early life and public/social contact) is hit by a clash, so that area is more prone to movement, change, and redirection.&lt;/p&gt;

&lt;p&gt;Month pillar (career, parents, and social foundation) is touched by Harm, so misunderstandings with people tied to that area need quick clarification.&lt;/p&gt;

&lt;p&gt;Month pillar (career, parents, and social foundation) is touched by Wonjin, so vague irritation in that area should not be turned into a final judgment too quickly.&lt;/p&gt;

&lt;p&gt;From a climate-balancing view, this year's &lt;strong&gt;Fire&lt;/strong&gt; energy is the element this chart needs to cool, warm, or otherwise balance its seasonal tone. That helps the temperature of the chart, but it does not automatically make the Day Master strong; recovery, structure, and pacing still come before expansion.&lt;/p&gt;

&lt;h2&gt;
  
  
  💰 Wealth
&lt;/h2&gt;

&lt;p&gt;On a three-pillar basis, the chart is rich in Wealth Stars — opportunities and money talk never stop. The discipline to stop at 80% of the appetite is what protects the wallet.&lt;/p&gt;

&lt;p&gt;Both &lt;strong&gt;direct and indirect wealth stars&lt;/strong&gt; are present — the textbook play is stable income as the floor, opportunistic bets on top.&lt;/p&gt;

&lt;p&gt;Wealth Stars appear in the Month pillar (career, parents, and social foundation) and the Day pillar (self and partner). In plain English: money themes are tied to career foundations and public activity, daily life, partnership, and practical responsibility.&lt;/p&gt;

&lt;p&gt;2026 is not a Wealth Star year for this chart — better spent building future earning capacity than chasing windfalls.&lt;/p&gt;

&lt;h2&gt;
  
  
  💞 Love
&lt;/h2&gt;

&lt;p&gt;In a female chart, the relationship star is the Officer Star. The relationship star sits in balance — given an occasion, bonds form naturally.&lt;/p&gt;

&lt;p&gt;This year's branch forms one side of a Three Harmony pattern with the spouse palace — introductions and gatherings open doors.&lt;/p&gt;

&lt;p&gt;The spouse palace (day branch) holds &lt;strong&gt;戌&lt;/strong&gt; with the surface Ten-God role of &lt;em&gt;Indirect Wealth&lt;/em&gt;. This gives close relationships a practical, trust-and-responsibility flavor: reliability, shared resources, and concrete support matter.&lt;/p&gt;

&lt;p&gt;Looking into the hidden stems of the spouse palace, we find &lt;strong&gt;辛&lt;/strong&gt; (Direct Officer), &lt;strong&gt;丁&lt;/strong&gt; (Hurting Officer), &lt;strong&gt;戊&lt;/strong&gt; (Indirect Wealth). The relationship star also appears inside the spouse palace, which favors bonds that develop gradually rather than dramatically.&lt;/p&gt;




&lt;p&gt;Curious how the rule engine works under the hood (branch-interaction tables, Ten-God mapping, the whole pipeline)? Ask in the comments — happy to write a technical breakdown.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔮 Curious what &lt;em&gt;your&lt;/em&gt; chart says? &lt;a href="https://runartree.com/en/?utm_source=devto&amp;amp;utm_medium=post&amp;amp;utm_campaign=star_saju" rel="noopener noreferrer"&gt;Get a free K-Saju reading at Runartree&lt;/a&gt; — calculated from your exact birth date and time, no sign-up needed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Generated from lunar-calendar math and classical Saju rules (Ten Gods, branch interactions, Twelve Stages, climate balance). For fun and reference.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;#astrology&lt;/code&gt; &lt;code&gt;#korea&lt;/code&gt; &lt;code&gt;#sideproject&lt;/code&gt; &lt;code&gt;#algorithms&lt;/code&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Daily Korean Zodiac Horoscope — Jul 5: best day for Rat!</title>
      <dc:creator>runartree.com</dc:creator>
      <pubDate>Sat, 04 Jul 2026 21:30:00 +0000</pubDate>
      <link>https://dev.to/hyun_soolee_0c4754e81463/daily-korean-zodiac-horoscope-jul-5-best-day-for-rat-38bg</link>
      <guid>https://dev.to/hyun_soolee_0c4754e81463/daily-korean-zodiac-horoscope-jul-5-best-day-for-rat-38bg</guid>
      <description>&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%2Frunartree.com%2Fimages%2Flogo_good.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%2Frunartree.com%2Fimages%2Flogo_good.png" alt="Runartree K-Saju" width="434" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Daily Korean Zodiac Horoscope — July 5, 2026 (Sun)
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Today's day pillar:&lt;/strong&gt; 庚辰 — a Yang Metal / Dragon day&lt;/p&gt;

&lt;p&gt;In Korean Four Pillars astrology (K-Saju), each day carries its own energy. How that energy harmonizes or clashes with your zodiac sign's branch shapes the flow of your day. Here's today's reading for all 12 signs — take it lightly, and have fun with it. 🙂&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;Best signs today:&lt;/strong&gt; 🐭 Rat, 🐔 Rooster, 🐵 Monkey&lt;/p&gt;

&lt;p&gt;⚠️ &lt;strong&gt;Signs that should tread carefully:&lt;/strong&gt; 🐶 Dog, 🐰 Rabbit&lt;/p&gt;




&lt;h2&gt;
  
  
  🐭 Rat — Good ★★★★☆ (82/100)
&lt;/h2&gt;

&lt;p&gt;A Three Harmony (三合) alignment with today's pillar puts the wind at your back for teamwork and joint projects. Today's element nourishes yours, so support from mentors and the people around you comes easily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Excellent · &lt;strong&gt;Love&lt;/strong&gt; Good · &lt;strong&gt;Health&lt;/strong&gt; Excellent · &lt;strong&gt;Work&lt;/strong&gt; Excellent · &lt;strong&gt;Lucky hours&lt;/strong&gt; 1–3 AM&lt;/p&gt;

&lt;p&gt;⚠️ &lt;em&gt;A bit bumpier if you were born in:&lt;/em&gt; 1984 (stem clash with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐮 Ox — Steady ★★★☆☆ (58/100)
&lt;/h2&gt;

&lt;p&gt;A Break (破) relation brings small misalignments — schedule slips, minor losses or breakage. Re-checking things is your lucky charm today. Your element feeds today's energy — great for expressing, creating, and pitching, but pace yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Caution · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 11 PM–1 AM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1985 (stem harmony with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐯 Tiger — Caution ★★☆☆☆ (52/100)
&lt;/h2&gt;

&lt;p&gt;Today's element presses on yours — play defense, keep things solid, and avoid overreach. No major harmony or clash with today's pillar — a calm, even day. Consistency is your best strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Caution · &lt;strong&gt;Love&lt;/strong&gt; Caution · &lt;strong&gt;Health&lt;/strong&gt; Caution · &lt;strong&gt;Work&lt;/strong&gt; Caution · &lt;strong&gt;Lucky hours&lt;/strong&gt; 9–11 PM&lt;/p&gt;

&lt;p&gt;⚠️ &lt;em&gt;A bit bumpier if you were born in:&lt;/em&gt; 1974 (stem clash with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐰 Rabbit — Caution ★★☆☆☆ (46/100)
&lt;/h2&gt;

&lt;p&gt;A Harm (害) relation invites misunderstandings with people close to you. If feelings get bruised, clear the air the same day. Today's element presses on yours — play defense, keep things solid, and avoid overreach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Caution · &lt;strong&gt;Love&lt;/strong&gt; Take care · &lt;strong&gt;Health&lt;/strong&gt; Caution · &lt;strong&gt;Work&lt;/strong&gt; Caution · &lt;strong&gt;Lucky hours&lt;/strong&gt; 7–9 PM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1975 (stem harmony with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐲 Dragon — Steady ★★★☆☆ (61/100)
&lt;/h2&gt;

&lt;p&gt;Today's branch mirrors your own (伏吟, 'hidden echo'). Familiar routines flow smoothly, but this is a day to consolidate rather than launch something new. Self-Punishment (自刑) energy makes you overly hard on yourself today. Don't chase perfection — aim for 80% and stop there. Your element feeds today's energy — great for expressing, creating, and pitching, but pace yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 5–7 PM&lt;/p&gt;

&lt;p&gt;⚠️ &lt;em&gt;A bit bumpier if you were born in:&lt;/em&gt; 1964, 2024 (stem clash with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐍 Snake — Steady ★★★☆☆ (57/100)
&lt;/h2&gt;

&lt;p&gt;Your element controls today's — you can take charge of things, but watch out for overwork and going it alone. No major harmony or clash with today's pillar — a calm, even day. Consistency is your best strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 3–5 PM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1965, 2025 (stem harmony with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐴 Horse — Steady ★★★☆☆ (57/100)
&lt;/h2&gt;

&lt;p&gt;Your element controls today's — you can take charge of things, but watch out for overwork and going it alone. No major harmony or clash with today's pillar — a calm, even day. Consistency is your best strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 1–3 PM&lt;/p&gt;

&lt;p&gt;⚠️ &lt;em&gt;A bit bumpier if you were born in:&lt;/em&gt; 1954, 2014 (stem clash with today's pillar)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔮 A zodiac reading is the shared current for everyone born under the same sign. Curious about &lt;strong&gt;your personal Four Pillars (Saju) chart&lt;/strong&gt;, calculated from your exact birth date and time? &lt;a href="https://runartree.com/en/?utm_source=devto&amp;amp;utm_medium=post&amp;amp;utm_campaign=zodiac_daily" rel="noopener noreferrer"&gt;Get a free reading at Runartree K-Saju&lt;/a&gt; — no sign-up needed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  🐑 Sheep — Steady ★★★☆☆ (64/100)
&lt;/h2&gt;

&lt;p&gt;Your element feeds today's energy — great for expressing, creating, and pitching, but pace yourself. No major harmony or clash with today's pillar — a calm, even day. Consistency is your best strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 11 AM–1 PM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1955, 2015 (stem harmony with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐵 Monkey — Good ★★★★☆ (78/100)
&lt;/h2&gt;

&lt;p&gt;A Three Harmony (三合) alignment with today's pillar puts the wind at your back for teamwork and joint projects. In five-element terms, today's energy stands shoulder to shoulder with yours — your usual ability carries the day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Good · &lt;strong&gt;Love&lt;/strong&gt; Good · &lt;strong&gt;Health&lt;/strong&gt; Good · &lt;strong&gt;Work&lt;/strong&gt; Excellent · &lt;strong&gt;Lucky hours&lt;/strong&gt; 9–11 AM&lt;/p&gt;

&lt;p&gt;⚠️ &lt;em&gt;A bit bumpier if you were born in:&lt;/em&gt; 1944, 2004 (stem clash with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐔 Rooster — Good ★★★★☆ (81/100)
&lt;/h2&gt;

&lt;p&gt;Your branch forms a Six Harmony (六合) with today's pillar — allies and connections work in your favor. A great day for cooperation, contracts, and meetings. In five-element terms, today's energy stands shoulder to shoulder with yours — your usual ability carries the day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Good · &lt;strong&gt;Love&lt;/strong&gt; Excellent · &lt;strong&gt;Health&lt;/strong&gt; Good · &lt;strong&gt;Work&lt;/strong&gt; Excellent · &lt;strong&gt;Lucky hours&lt;/strong&gt; 7–9 AM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1945, 2005 (stem harmony with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐶 Dog — Caution ★★☆☆☆ (49/100)
&lt;/h2&gt;

&lt;p&gt;Your branch clashes (沖) with today's pillar — expect changes and movement. If you can, postpone big decisions, contract signings, and major spending by a day. Your element feeds today's energy — great for expressing, creating, and pitching, but pace yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Take care · &lt;strong&gt;Love&lt;/strong&gt; Caution · &lt;strong&gt;Health&lt;/strong&gt; Caution · &lt;strong&gt;Work&lt;/strong&gt; Caution · &lt;strong&gt;Lucky hours&lt;/strong&gt; 5–7 AM&lt;/p&gt;

&lt;p&gt;⚠️ &lt;em&gt;A bit bumpier if you were born in:&lt;/em&gt; 1994 (stem clash with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐷 Pig — Steady ★★★☆☆ (62/100)
&lt;/h2&gt;

&lt;p&gt;Wonjin (怨嗔, 'quiet resentment') energy can make you irritable for no clear reason. Skip the emotional reactions and the day passes just fine. Today's element nourishes yours, so support from mentors and the people around you comes easily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 3–5 AM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1995 (stem harmony with today's pillar)&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This reading is generated from today's day pillar and its harmony/clash (合·沖·刑·破·害) and five-element relations with each zodiac branch — deterministic rules, no AI improvisation. For fun and reference only.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Daily Korean Zodiac Horoscope — Jul 4: best day for Dog!</title>
      <dc:creator>runartree.com</dc:creator>
      <pubDate>Fri, 03 Jul 2026 23:49:55 +0000</pubDate>
      <link>https://dev.to/hyun_soolee_0c4754e81463/daily-korean-zodiac-horoscope-jul-4-best-day-for-dog-4120</link>
      <guid>https://dev.to/hyun_soolee_0c4754e81463/daily-korean-zodiac-horoscope-jul-4-best-day-for-dog-4120</guid>
      <description>&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%2Frunartree.com%2Fimages%2Flogo_good.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%2Frunartree.com%2Fimages%2Flogo_good.png" alt="Runartree K-Saju" width="434" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Daily Korean Zodiac Horoscope — July 4, 2026 (Sat)
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Today's day pillar:&lt;/strong&gt; 己卯 — a Yin Earth / Rabbit day&lt;/p&gt;

&lt;p&gt;In Korean Four Pillars astrology (K-Saju), each day carries its own energy. How that energy harmonizes or clashes with your zodiac sign's branch shapes the flow of your day. Here's today's reading for all 12 signs — take it lightly, and have fun with it. 🙂&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;Best signs today:&lt;/strong&gt; 🐶 Dog, 🐑 Sheep, 🐮 Ox&lt;/p&gt;

&lt;p&gt;⚠️ &lt;strong&gt;Signs that should tread carefully:&lt;/strong&gt; 🐔 Rooster, 🐭 Rat&lt;/p&gt;




&lt;h2&gt;
  
  
  🐭 Rat — Caution ★★☆☆☆ (42/100)
&lt;/h2&gt;

&lt;p&gt;A Punishment (刑) relation with today's pillar makes friction and disputes more likely. Choose your words carefully and double-check documents and rules. Today's element presses on yours — play defense, keep things solid, and avoid overreach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Caution · &lt;strong&gt;Love&lt;/strong&gt; Take care · &lt;strong&gt;Health&lt;/strong&gt; Take care · &lt;strong&gt;Work&lt;/strong&gt; Take care · &lt;strong&gt;Lucky hours&lt;/strong&gt; 1–3 AM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1984 (stem harmony with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐮 Ox — Steady ★★★☆☆ (66/100)
&lt;/h2&gt;

&lt;p&gt;In five-element terms, today's energy stands shoulder to shoulder with yours — your usual ability carries the day. No major harmony or clash with today's pillar — a calm, even day. Consistency is your best strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Good · &lt;strong&gt;Lucky hours&lt;/strong&gt; 11 PM–1 AM&lt;/p&gt;

&lt;h2&gt;
  
  
  🐯 Tiger — Steady ★★★☆☆ (57/100)
&lt;/h2&gt;

&lt;p&gt;Your element controls today's — you can take charge of things, but watch out for overwork and going it alone. No major harmony or clash with today's pillar — a calm, even day. Consistency is your best strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 9–11 PM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1974 (stem harmony with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐰 Rabbit — Steady ★★★☆☆ (60/100)
&lt;/h2&gt;

&lt;p&gt;Today's branch mirrors your own (伏吟, 'hidden echo'). Familiar routines flow smoothly, but this is a day to consolidate rather than launch something new. Your element controls today's — you can take charge of things, but watch out for overwork and going it alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 7–9 PM&lt;/p&gt;

&lt;h2&gt;
  
  
  🐲 Dragon — Steady ★★★☆☆ (60/100)
&lt;/h2&gt;

&lt;p&gt;A Harm (害) relation invites misunderstandings with people close to you. If feelings get bruised, clear the air the same day. In five-element terms, today's energy stands shoulder to shoulder with yours — your usual ability carries the day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Caution · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 5–7 PM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1964, 2024 (stem harmony with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐍 Snake — Steady ★★★☆☆ (64/100)
&lt;/h2&gt;

&lt;p&gt;Your element feeds today's energy — great for expressing, creating, and pitching, but pace yourself. No major harmony or clash with today's pillar — a calm, even day. Consistency is your best strategy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 3–5 PM&lt;/p&gt;

&lt;h2&gt;
  
  
  🐴 Horse — Steady ★★★☆☆ (58/100)
&lt;/h2&gt;

&lt;p&gt;A Break (破) relation brings small misalignments — schedule slips, minor losses or breakage. Re-checking things is your lucky charm today. Your element feeds today's energy — great for expressing, creating, and pitching, but pace yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Caution · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 1–3 PM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1954, 2014 (stem harmony with today's pillar)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔮 A zodiac reading is the shared current for everyone born under the same sign. Curious about &lt;strong&gt;your personal Four Pillars (Saju) chart&lt;/strong&gt;, calculated from your exact birth date and time? &lt;a href="https://runartree.com/en/?utm_source=devto&amp;amp;utm_medium=post&amp;amp;utm_campaign=zodiac_daily" rel="noopener noreferrer"&gt;Get a free reading at Runartree K-Saju&lt;/a&gt; — no sign-up needed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  🐑 Sheep — Good ★★★★☆ (78/100)
&lt;/h2&gt;

&lt;p&gt;A Three Harmony (三合) alignment with today's pillar puts the wind at your back for teamwork and joint projects. In five-element terms, today's energy stands shoulder to shoulder with yours — your usual ability carries the day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Good · &lt;strong&gt;Love&lt;/strong&gt; Good · &lt;strong&gt;Health&lt;/strong&gt; Good · &lt;strong&gt;Work&lt;/strong&gt; Excellent · &lt;strong&gt;Lucky hours&lt;/strong&gt; 11 AM–1 PM&lt;/p&gt;

&lt;h2&gt;
  
  
  🐵 Monkey — Steady ★★★☆☆ (62/100)
&lt;/h2&gt;

&lt;p&gt;Wonjin (怨嗔, 'quiet resentment') energy can make you irritable for no clear reason. Skip the emotional reactions and the day passes just fine. Today's element nourishes yours, so support from mentors and the people around you comes easily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 9–11 AM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1944, 2004 (stem harmony with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐔 Rooster — Steady ★★★☆☆ (55/100)
&lt;/h2&gt;

&lt;p&gt;Your branch clashes (沖) with today's pillar — expect changes and movement. If you can, postpone big decisions, contract signings, and major spending by a day. Today's element nourishes yours, so support from mentors and the people around you comes easily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Caution · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 7–9 AM&lt;/p&gt;

&lt;h2&gt;
  
  
  🐶 Dog — Good ★★★★☆ (81/100)
&lt;/h2&gt;

&lt;p&gt;Your branch forms a Six Harmony (六合) with today's pillar — allies and connections work in your favor. A great day for cooperation, contracts, and meetings. In five-element terms, today's energy stands shoulder to shoulder with yours — your usual ability carries the day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Good · &lt;strong&gt;Love&lt;/strong&gt; Excellent · &lt;strong&gt;Health&lt;/strong&gt; Good · &lt;strong&gt;Work&lt;/strong&gt; Excellent · &lt;strong&gt;Lucky hours&lt;/strong&gt; 5–7 AM&lt;/p&gt;

&lt;p&gt;😊 &lt;em&gt;Extra tailwind if you were born in:&lt;/em&gt; 1994 (stem harmony with today's pillar)&lt;/p&gt;

&lt;h2&gt;
  
  
  🐷 Pig — Steady ★★★☆☆ (64/100)
&lt;/h2&gt;

&lt;p&gt;A Three Harmony (三合) alignment with today's pillar puts the wind at your back for teamwork and joint projects. Today's element presses on yours — play defense, keep things solid, and avoid overreach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Money&lt;/strong&gt; Steady · &lt;strong&gt;Love&lt;/strong&gt; Steady · &lt;strong&gt;Health&lt;/strong&gt; Steady · &lt;strong&gt;Work&lt;/strong&gt; Steady · &lt;strong&gt;Lucky hours&lt;/strong&gt; 3–5 AM&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This reading is generated from today's day pillar and its harmony/clash (合·沖·刑·破·害) and five-element relations with each zodiac branch — deterministic rules, no AI improvisation. For fun and reference only.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How I Built an Automated Korean Saju (四柱) Content Pipeline with Claude Vision + Python</title>
      <dc:creator>runartree.com</dc:creator>
      <pubDate>Mon, 11 May 2026 08:49:35 +0000</pubDate>
      <link>https://dev.to/hyun_soolee_0c4754e81463/how-i-built-an-automated-korean-saju-si-zhu-content-pipeline-with-claude-vision-python-15kk</link>
      <guid>https://dev.to/hyun_soolee_0c4754e81463/how-i-built-an-automated-korean-saju-si-zhu-content-pipeline-with-claude-vision-python-15kk</guid>
      <description>&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%2Fnc89hacu06mnr3uman4f.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%2Fnc89hacu06mnr3uman4f.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: Structured Data Trapped in Images
&lt;/h2&gt;

&lt;p&gt;Korean Saju (四柱推命) content is booming. Platforms like Naver, Kakao, and a growing wave of indie astrology apps serve millions of readings per month. But the production bottleneck is brutal: every reading starts with a &lt;strong&gt;manse calendar screenshot&lt;/strong&gt; — a dense image containing the four pillars (年柱/月柱/日柱/時柱), ten-god labels (十星), twelve-stage cycle markers (十二運星), and special stars (神殺) — all rendered as overlapping hanja circles and Korean tags.&lt;/p&gt;

&lt;p&gt;If you want to publish that reading as a long-form blog post, a YouTube script, a dev.to technical explainer, or a Naver blog entry, you have to manually re-read the image, re-type the data, and re-format for each channel. For a small team running 20–30 subjects per month, that is a full-time job before any writing starts.&lt;/p&gt;

&lt;p&gt;This post documents the pipeline I built to fix that — using Claude Vision for structured extraction, a multi-stage prompt chain for content generation, and channel-specific formatters for final output. The Saju reading for SEVENTEEN member Mingyu (戊土 day master, 1997-04-06, male, unknown birth hour) served as the live QA case for the entire system.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pipeline Overview
&lt;/h2&gt;

&lt;p&gt;[Input Form Screenshot]&lt;br&gt;
        ↓&lt;br&gt;
[Claude Vision: Structured Extraction]&lt;br&gt;
        ↓&lt;br&gt;
[Validation Layer: Pillar Consistency Check]&lt;br&gt;
        ↓&lt;br&gt;
[Prompt Chain: Analysis Blocks]&lt;br&gt;
        ↓&lt;br&gt;
[Channel Formatter: dev.to / Naver / YouTube Script]&lt;br&gt;
        ↓&lt;br&gt;
[QA Gate: Guardrail Checks]&lt;br&gt;
        ↓&lt;br&gt;
[Published Output]&lt;/p&gt;

&lt;p&gt;Five stages. Each stage has a defined input schema, output schema, and failure mode. Let me walk through each.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 1 — Claude Vision Extraction
&lt;/h2&gt;

&lt;p&gt;The manse calendar image (&lt;a href="/_engine/assets/longform/2026-05-11/02_manse_calendar_complete.png" class="article-body-image-wrapper"&gt;&lt;img src="/_engine/assets/longform/2026-05-11/02_manse_calendar_complete.png" alt="Saju chart sample"&gt;&lt;/a&gt; &lt;code&gt;02_manse_calendar_complete.png&lt;/code&gt;) contains the following data classes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Subject metadata&lt;/strong&gt;: name, gender, solar date, lunar date, birth hour&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Four pillars&lt;/strong&gt;: 年柱(丁丑), 月柱(甲辰), 日柱(戊寅), 時柱(戊午) — each with hanja characters rendered inside colored circles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ten-god labels per pillar&lt;/strong&gt;: 年柱 = 正印(정인) / 劫財(겁재), 月柱 = 偏官(편관) / 比肩(비견), 日柱 = 比肩(비견) / 偏官(편관), 時柱 = 比肩(비견) / 正印(정인)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Twelve-stage cycle markers&lt;/strong&gt;: 時柱 = 帝旺(제왕), 日柱 = 長生(장생), 月柱 = 冠帶(관대), 年柱 = 養(양)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Special stars (神殺)&lt;/strong&gt;: 年柱 천을귀인(天乙貴人), 백호살(白虎殺), 화개살(華蓋殺); 月柱 백호살(白虎殺); 時柱 양인살(羊刃殺), 도화살(桃花殺); 日柱 편관(장생)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Current Daewoon (大運)&lt;/strong&gt;: 庚子(경자) — 天干 庚 = 食神(식신), 地支 子 = 正財(정재)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2026 Sewoon (歲運)&lt;/strong&gt;: 丙午(병오) — age 30, 天干 丙 = 食神(식신) marker visible, 地支 午 = 正財(정재) marker visible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The extraction prompt is a single-shot structured JSON request:&lt;/p&gt;

&lt;p&gt;Extract ALL visible hanja characters, Korean ten-god labels,&lt;br&gt;
twelve-stage cycle names, and special star names from this&lt;br&gt;
manse calendar image. Return as JSON with keys:&lt;br&gt;
subject, four_pillars, daewoon, sewoon.&lt;br&gt;
Do NOT infer. Only extract what is visually present.&lt;br&gt;
Flag any character you are less than 90% confident about.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key engineering decision&lt;/strong&gt;: the &lt;code&gt;Flag uncertainty&lt;/code&gt; instruction. Without it, Claude will confidently hallucinate a ten-god label for a pillar where the image is partially obscured. In the Mingyu test case, the birth hour was unknown (모름), so the 時柱 天干 ten-god label was rendered with a placeholder — the extractor correctly flagged this rather than guessing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 2 — Validation Layer
&lt;/h2&gt;

&lt;p&gt;Before any content generation runs, a Python validation script checks internal consistency:&lt;/p&gt;

&lt;p&gt;def validate_pillars(extracted: dict) -&amp;gt; list[str]:&lt;br&gt;
    errors = []&lt;br&gt;
    # Day master must appear in day pillar heavenly stem&lt;br&gt;
    if extracted["day_pillar"]["stem"] != extracted["day_master"]:&lt;br&gt;
        errors.append("Day master mismatch")&lt;br&gt;
    # Ten-god labels must be consistent with day master&lt;br&gt;
    # (simplified: check Friend/比肩 only appears when stem == day master element)&lt;br&gt;
    for pillar in ["year", "month", "hour"]:&lt;br&gt;
        stem = extracted[pillar]["stem"]&lt;br&gt;
        label = extracted[pillar]["stem_god"]&lt;br&gt;
        if not ten_god_consistent(extracted["day_master"], stem, label):&lt;br&gt;
            errors.append(f"{pillar} stem ten-god inconsistent: {stem} / {label}")&lt;br&gt;
    return errors&lt;/p&gt;

&lt;p&gt;In the Mingyu case, the validation caught one edge case: the 2026 Sewoon image shows 庚子 in the Daewoon column and 丙午 in the Sewoon column, but the ten-god markers in the Sewoon column are rendered at a smaller font size and partially overlap the Daewoon column. The extractor initially assigned 食神(식신) to 丙 relative to the 庚 Daewoon stem rather than relative to the 戊 day master. The validator caught the mismatch and re-ran the extraction with an explicit anchor instruction: &lt;strong&gt;always compute ten-god labels relative to the day master stem (日干), not relative to the Daewoon stem.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the single most common error in automated Saju extraction. Build the check before you build anything else.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 3 — Prompt Chain: Analysis Blocks
&lt;/h2&gt;

&lt;p&gt;Once the structured JSON is validated, the content generation runs as a &lt;strong&gt;sequential block chain&lt;/strong&gt;, not a single mega-prompt. Each block receives the validated JSON plus the output of the previous block as context.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Block&lt;/th&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core structure analysis&lt;/td&gt;
&lt;td&gt;Four pillars JSON&lt;/td&gt;
&lt;td&gt;Five-element ratio, body strength (身强/身弱), yongshin (用神)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Daewoon × Sewoon interaction&lt;/td&gt;
&lt;td&gt;Above + Daewoon/Sewoon JSON&lt;/td&gt;
&lt;td&gt;Clash (冲), combination (合), ten-god activation summary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain readings&lt;/td&gt;
&lt;td&gt;Above + domain list&lt;/td&gt;
&lt;td&gt;Career, wealth, relationships, health — each 150–200 tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Risk signals&lt;/td&gt;
&lt;td&gt;Above&lt;/td&gt;
&lt;td&gt;2–3 specific risk patterns with structural basis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quarterly strategy&lt;/td&gt;
&lt;td&gt;All above&lt;/td&gt;
&lt;td&gt;Q1–Q4 action framing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The Mingyu pipeline produced the following core structural read: 戊土(무토) day master, 土 at 50% of the five-element distribution, 木 25%, 火 25%, 金·水 at 0%. Strong body (身强) structure. 金·水 is the practical yongshin (用神) because 食傷 and 財星 are absent from the main stems and branch primary qi. The current Daewoon 庚子 brings 金·水 energy — structurally favorable — but the 2026 Sewoon 丙午 adds 火·印星 energy that reinforces the already-heavy 土, requiring output regulation rather than expansion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key prompt engineering rule here&lt;/strong&gt;: each block prompt ends with &lt;code&gt;Return only the analysis for this block. Do not summarize previous blocks. Do not add caveats not supported by the extracted data.&lt;/code&gt; This keeps token usage predictable and prevents the model from hallucinating structural details it did not extract.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 4 — Channel Formatter
&lt;/h2&gt;

&lt;p&gt;The same analysis JSON feeds three formatters in parallel:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;dev.to formatter&lt;/strong&gt; (this article): technical framing, English, markdown headers, code blocks for pipeline logic, manse calendar data cited as structured input rather than mystical oracle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Naver Blog formatter&lt;/strong&gt;: Korean, conversational tone, HTML-compatible line breaks, domain-specific vocabulary (운세, 사주, 대운), no code blocks, CTA pointing to the full reading platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;YouTube Script formatter&lt;/strong&gt;: spoken Korean, 8–12 minute target length, hook in first 30 seconds referencing the specific structural pattern (e.g., "土가 절반인 사주에서 2026년에 무슨 일이 생기는지"), chapter markers at each domain block.&lt;/p&gt;

&lt;p&gt;Each formatter has a &lt;strong&gt;channel-specific guardrail list&lt;/strong&gt; appended to the system prompt:&lt;/p&gt;

&lt;p&gt;GUARDRAILS (dev.to):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No fortune-telling framing&lt;/li&gt;
&lt;li&gt;No certainty language (must/will/definitely)&lt;/li&gt;
&lt;li&gt;No privacy speculation&lt;/li&gt;
&lt;li&gt;Cite image source for all data claims&lt;/li&gt;
&lt;li&gt;CTA = runartree.com&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Stage 5 — QA Gate
&lt;/h2&gt;

&lt;p&gt;Before any output is published, an automated QA pass checks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Certainty language scan&lt;/strong&gt;: regex for "반드시", "무조건", "절대", "확실히", "will definitely", "guaranteed" — any match blocks publication&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data consistency check&lt;/strong&gt;: every hanja character in the output must appear in the validated extraction JSON — no hallucinated pillars&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tone check&lt;/strong&gt;: sentiment classifier flags outputs that score above threshold on anxiety-inducing language&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Word count gate&lt;/strong&gt;: channel-specific minimum/maximum&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CTA presence&lt;/strong&gt;: output must contain the CTA URL exactly once&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Mingyu test case passed all five gates on the second run. The first run failed the certainty language scan because the career block used the phrase "성과가 반드시 쌓입니다" — caught, revised to "성과가 쌓이는 흐름입니다."&lt;/p&gt;




&lt;h2&gt;
  
  
  [INFO_GRAPHIC] Mingyu 2026 — Structural Snapshot
&lt;/h2&gt;

&lt;p&gt;Day Master:  戊土 (Strong Earth)  |  Body Strength: 身强&lt;br&gt;
Five Elements: 土50% / 木25% / 火25% / 金·水 0%&lt;br&gt;
Yongshin (用神): 金·Water&lt;/p&gt;

&lt;p&gt;四柱 (Four Pillars):&lt;br&gt;
  年柱: 丁(天乙貴人·白虎殺·華蓋殺) / 丑(劫財·養)&lt;br&gt;
  月柱: 甲(偏官·★) / 辰(比肩·冠帶·白虎殺)&lt;br&gt;
  日柱: 戊 / 寅(偏官·長生)&lt;br&gt;
  時柱: 戊(比肩·羊刃殺·桃花殺) / 午(正印·帝旺)&lt;/p&gt;

&lt;p&gt;Daewoon:  庚子  |  食神 / 正財  |  子↔午 冲, 子↔丑 合&lt;br&gt;
2026 Sewoon:  丙午  |  偏印 / 正印  |  午+午 double-trigger&lt;/p&gt;

&lt;p&gt;Score: 68/100  |  Flow: Upper-Mid&lt;/p&gt;




&lt;h2&gt;
  
  
  The Reversal: 天乙貴人 in 年支
&lt;/h2&gt;

&lt;p&gt;The structural story of this chart is heavy 土, absent 金·Water, strong body — sounds like a closed, self-sufficient system that resists external input. That reading is mostly correct. But the 年支 丑(축) carries 天乙貴人(Heavenly Noble Star), which is the single most reliable "unexpected door opens" marker in classical Saju. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Zi Ping Zhen Quan&lt;/em&gt; (子平真詮, Chapter on Useful Gods) notes that 貴人 stars activate most visibly when the chart is otherwise under pressure — precisely the condition created by the 子↔午 clash in the current Daewoon. The practical pipeline implication: the QA system flags 天乙貴人 as a &lt;strong&gt;positive anomaly&lt;/strong&gt; that must appear in the output, because omitting it would produce a structurally incomplete and tonally misleading read.&lt;/p&gt;




&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Anchor ten-god labels to the day master, always.&lt;/strong&gt; The most common extraction error. Build the validator before the generator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Block-chain prompts outperform single mega-prompts.&lt;/strong&gt; Smaller, sequential blocks produce more consistent structural logic and are easier to QA.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Unknown birth hour is not a blocker.&lt;/strong&gt; The 時柱 is flagged as uncertain, the analysis runs on the remaining three pillars, and the output notes the limitation explicitly. Do not hallucinate a birth hour.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Channel formatters need their own guardrail lists.&lt;/strong&gt; What is appropriate framing for a technical dev.to post is wrong for a Naver Blog post aimed at a general Korean audience, and vice versa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. The 午↔午 double-trigger is a real extraction challenge.&lt;/strong&gt; When the 時柱 地支 and the 2026 Sewoon 地支 are identical (both 午), some extractors collapse them into a single entry. The validator must check for this explicitly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Claude Vision extracts structured four-pillar data from manse calendar screenshots; validation anchors all ten-god labels to the day master stem before any content generation runs&lt;/li&gt;
&lt;li&gt;A sequential block-chain prompt architecture produces domain-specific analysis (career, wealth, relationships, health) with traceable structural basis — for Mingyu's 戊土 chart, the 2026 丙午 Sewoon adds 火·印星 pressure to an already 土-heavy structure, making output regulation the core strategic frame&lt;/li&gt;
&lt;li&gt;Channel-specific formatters and a five-gate QA pass convert the same validated JSON into dev.to, Naver Blog, and YouTube Script outputs without manual reformatting&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Want to explore this pipeline or run a reading for your own chart?&lt;/strong&gt;&lt;br&gt;
Full manse calendar generation, structured analysis, and long-form content output are available at &lt;strong&gt;&lt;a href="https://runartree.com" rel="noopener noreferrer"&gt;runartree.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article uses a published Saju reading as a technical test case for pipeline documentation purposes. Saju analysis reflects structural pattern interpretation based on classical Chinese metaphysics and does not constitute prediction, guarantee, or professional advice of any kind. All outputs should be read as probabilistic framing, not certainty.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Project link
&lt;/h2&gt;

&lt;p&gt;This article is based on an automated content workflow for a Korean Saju platform.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://runartree.com?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=saju_automation" rel="noopener noreferrer"&gt;https://runartree.com?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=saju_automation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Stack: Python, Claude Vision, channel-specific formatting, content QA&lt;/li&gt;
&lt;li&gt;Domain: Korean Saju / Bazi content automation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key lesson is simple: generation alone is not enough. A useful publishing pipeline also needs formatting, QA, tracking links, and channel-specific editorial rules.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Bazi interpretation. Not medical, legal, or investment advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bazi</category>
      <category>kpop</category>
      <category>saju</category>
      <category>korea</category>
    </item>
    <item>
      <title>Building an Automated Saju (Korean Bazi) Content Pipeline: Vision Extraction, Channel Formatting, and QA at Scale</title>
      <dc:creator>runartree.com</dc:creator>
      <pubDate>Sun, 10 May 2026 00:00:05 +0000</pubDate>
      <link>https://dev.to/hyun_soolee_0c4754e81463/building-an-automated-saju-korean-bazi-content-pipeline-vision-extraction-channel-formatting-28id</link>
      <guid>https://dev.to/hyun_soolee_0c4754e81463/building-an-automated-saju-korean-bazi-content-pipeline-vision-extraction-channel-formatting-28id</guid>
      <description>&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%2Fcmk7e68f4dvbxfmeeeha.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%2Fcmk7e68f4dvbxfmeeeha.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: Manual Saju Content Doesn't Scale
&lt;/h2&gt;

&lt;p&gt;Korean Saju (四柱, Four Pillars of Destiny) content is exploding across YouTube, blogs, and short-form video. The demand is real. The bottleneck is equally real: every piece of content requires a human practitioner to read a &lt;em&gt;manse&lt;/em&gt; (萬歲曆, traditional calendar chart), extract structured data — Day Pillar (日柱), Ten Gods (十星), 12-phase cycle (十二運星), auspicious and inauspicious spirits (神殺) — and then rewrite that data into channel-appropriate copy.&lt;/p&gt;

&lt;p&gt;For a single subject like a 2026 annual reading, a practitioner might produce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A long-form YouTube script (~2,500 words)&lt;/li&gt;
&lt;li&gt;A blog post (~1,500 words)&lt;/li&gt;
&lt;li&gt;A short-form vertical video script (~300 words)&lt;/li&gt;
&lt;li&gt;A dev-facing technical breakdown (this article)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Doing that manually for every content subject, every year, every channel, is a full-time job. This post documents the automation pipeline we built at &lt;strong&gt;Runartree&lt;/strong&gt; to solve it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the Pipeline Actually Does
&lt;/h2&gt;

&lt;p&gt;The pipeline takes two inputs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Screenshot images&lt;/strong&gt; — manse calendar renders, input confirmation screens, and long-form result pages exported from our Saju web app&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A structured content brief&lt;/strong&gt; — subject name, trigger date, topic, channel target, word count, required content blocks&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It outputs &lt;strong&gt;channel-formatted markdown or script copy&lt;/strong&gt;, validated against a QA checklist before it ever reaches a human editor.&lt;/p&gt;

&lt;p&gt;Here is the high-level flow:&lt;/p&gt;

&lt;p&gt;[Screenshot images] → [Claude Vision extraction] → [Structured JSON]&lt;br&gt;
        ↓&lt;br&gt;
[Prompt assembly] → [Claude generation] → [Raw markdown]&lt;br&gt;
        ↓&lt;br&gt;
[QA checks] → [Channel formatter] → [Final output]&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 1: Vision Extraction
&lt;/h2&gt;

&lt;p&gt;The hardest part of the pipeline is not generation — it is &lt;em&gt;reliable structured extraction&lt;/em&gt; from manse calendar screenshots.&lt;/p&gt;

&lt;p&gt;A typical manse image (see &lt;code&gt;02_manse_calendar_complete.png&lt;/code&gt; in our test set) contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Four pillars arranged in columns: 時柱 (Hour), 日柱 (Day), 月柱 (Month), 年柱 (Year)&lt;/li&gt;
&lt;li&gt;Each pillar has: Heavenly Stem (天干) hanja glyph, Earthly Branch (地支) hanja glyph, Ten God label in Korean hangul, 12-phase label in Korean hangul&lt;/li&gt;
&lt;li&gt;Auspicious/inauspicious spirit tags rendered as colored badge chips below each pillar&lt;/li&gt;
&lt;li&gt;A separate column for the current Grand Luck Cycle (大運) and Annual Luck (歲運)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The extraction prompt we use is structured as a two-pass system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pass 1 — Raw OCR with position anchoring:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You are a manse calendar OCR engine.&lt;br&gt;
For each of the six columns (Hour, Day, Month, Year, Grand Luck, Annual Luck):&lt;br&gt;
Extract: heavenly stem hanja, earthly branch hanja,&lt;br&gt;
heavenly stem ten-god label (Korean, verbatim),&lt;br&gt;
earthly branch ten-god label (Korean, verbatim),&lt;br&gt;
12-phase label (Korean, verbatim),&lt;br&gt;
all spirit/神殺 badge labels (Korean, verbatim, with column position).&lt;br&gt;
Return as JSON. Do not translate or interpret. Copy text exactly as rendered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pass 2 — Verification cross-check:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We re-send the image with the Pass 1 JSON and ask Claude to flag any field where the extracted hanja does not match the visible glyph. This catches common OCR errors like 壬/王 confusion or 己/已 confusion — both of which appear in real manse images.&lt;/p&gt;

&lt;p&gt;For the test subject in this pipeline run (양력 1996년 1월 16일, 여성, 모름시), the verified extraction produced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;年柱: 乙亥 — 上官(상관) / 比肩(비견)&lt;/li&gt;
&lt;li&gt;月柱: 己丑 — 正官(정관) / 正官(정관)&lt;/li&gt;
&lt;li&gt;日柱: 壬子 — [日主] / 劫財(겁재)&lt;/li&gt;
&lt;li&gt;時柱: 丙午 — 偏財(편재) / 正財(정재)&lt;/li&gt;
&lt;li&gt;Grand Luck (大運): 壬辰 — 比肩(비견) / 偏官(편관)&lt;/li&gt;
&lt;li&gt;Annual Luck 2026 (歲運): 丙午 — 偏財(편재) / 正財(정재)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Extracted 神殺 included: 天醫星(천의성) on Day Branch, 羊刃殺(양인살) on multiple pillars, 鬼門關殺(귀문관살) on Month Branch and Hour Branch, 桃花殺(도화살) on Day Branch, 帝旺(제왕) phase on Day Branch.&lt;/p&gt;

&lt;p&gt;One critical guard in the extraction prompt: &lt;strong&gt;verbatim label preservation&lt;/strong&gt;. If the image renders 正財 on the Hour Branch heavenly stem, the JSON must say 正財 — not 偏財, not "wealth star." Downstream generation prompts are built on this JSON, and a single mislabeled Ten God corrupts the entire interpretation chain.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 2: Structured JSON Schema
&lt;/h2&gt;

&lt;p&gt;After extraction, we normalize into a typed schema:&lt;/p&gt;

&lt;p&gt;@dataclass&lt;br&gt;
class Pillar:&lt;br&gt;
    position: str          # "year" | "month" | "day" | "hour"&lt;br&gt;
    stem_hanja: str        # e.g. "壬"&lt;br&gt;
    branch_hanja: str      # e.g. "子"&lt;br&gt;
    stem_ten_god: str      # verbatim Korean label&lt;br&gt;
    branch_ten_god: str    # verbatim Korean label&lt;br&gt;
    twelve_phase: str      # verbatim Korean label&lt;br&gt;
    spirits: list[str]     # verbatim Korean badge labels&lt;/p&gt;

&lt;p&gt;@dataclass&lt;br&gt;
class ManseChart:&lt;br&gt;
    subject_name: str&lt;br&gt;
    gender: str&lt;br&gt;
    solar_date: str&lt;br&gt;
    lunar_date: str&lt;br&gt;
    pillars: list[Pillar]  # year, month, day, hour&lt;br&gt;
    grand_luck: Pillar&lt;br&gt;
    annual_luck: Pillar&lt;br&gt;
    body_strength: str     # "신강" | "신약"&lt;br&gt;
    element_ratio: dict    # {"水": 40, "火": 25, "土": 25, ...}&lt;/p&gt;

&lt;p&gt;This schema is serialized to JSON and passed directly into generation prompts. No free-text interpretation at this stage. The schema enforces that generation prompts receive only what the image actually contained.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 3: Prompt Strategy for Long-Form Generation
&lt;/h2&gt;

&lt;p&gt;Long-form Saju content has a specific structure that readers expect. We encode this as a &lt;strong&gt;required block manifest&lt;/strong&gt; in the generation prompt:&lt;/p&gt;

&lt;p&gt;Required blocks (in order):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hook — 3 lines, reference one specific chart element&lt;/li&gt;
&lt;li&gt;One-line conclusion — Day Pillar + dominant Ten God + 2026 Annual Luck&lt;/li&gt;
&lt;li&gt;Bazi principles — cite at least 3 elements: stems, branches, Ten Gods, spirits&lt;/li&gt;
&lt;li&gt;Classical reference — one line from 滴天髓/子平真詮/窮通寶鑑/淵海子平 with source&lt;/li&gt;
&lt;li&gt;Modern interpretation — connect Annual Luck and Grand Luck to subject's domain&lt;/li&gt;
&lt;li&gt;Infographic placeholder — [INFO_GRAPHIC] tag&lt;/li&gt;
&lt;li&gt;Reversal insight — one unexpected interaction (spirit, combination, clash)&lt;/li&gt;
&lt;li&gt;Three-line summary&lt;/li&gt;
&lt;li&gt;CTA — runartree.com&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The generation prompt also carries a &lt;strong&gt;guardrail block&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Guardrails:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No speculation beyond the extracted chart&lt;/li&gt;
&lt;li&gt;No absolute certainty language (100%, definitely, certainly, guaranteed)&lt;/li&gt;
&lt;li&gt;No gossip or personal life assertions&lt;/li&gt;
&lt;li&gt;Disclaimer line required at end&lt;/li&gt;
&lt;li&gt;Use English + hanja notation for all technical terms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This guardrail block is checked post-generation by a separate QA pass (Stage 5).&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 4: Channel Formatting
&lt;/h2&gt;

&lt;p&gt;The same structured JSON and the same generation output get reformatted per channel. The formatter is a simple Python class with per-channel render methods:&lt;/p&gt;

&lt;p&gt;class ChannelFormatter:&lt;br&gt;
    def render_devto(self, content: GeneratedContent) -&amp;gt; str:&lt;br&gt;
        # YAML frontmatter + dev.to markdown&lt;br&gt;
        # Technical framing: pipeline, not fortune-telling&lt;br&gt;
        ...&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def render_blog(self, content: GeneratedContent) -&amp;gt; str:
    # Korean-language long-form
    # Dalbitnaemu tone guidelines applied
    ...

def render_shorts_script(self, content: GeneratedContent) -&amp;gt; str:
    # 300-word vertical video script
    # Hook in first 3 seconds, single CTA
    ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Channel-specific rules are encoded as formatter config, not baked into the generation prompt. This means the same generation output can be reformatted without re-running the expensive Vision + generation steps.&lt;/p&gt;

&lt;p&gt;For dev.to specifically, the formatter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strips all Korean hangul from body text&lt;/li&gt;
&lt;li&gt;Converts Ten God labels to English + hanja format: Direct Wealth(正財), Indirect Wealth(偏財), etc.&lt;/li&gt;
&lt;li&gt;Ensures frontmatter tags include &lt;code&gt;bazi&lt;/code&gt;, &lt;code&gt;kpop&lt;/code&gt;, &lt;code&gt;saju&lt;/code&gt;, &lt;code&gt;korea&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Inserts the &lt;code&gt;[INFO_GRAPHIC]&lt;/code&gt; block as a placeholder comment for the design team&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Stage 5: QA Checks
&lt;/h2&gt;

&lt;p&gt;Before any output reaches a human editor, it runs through an automated QA checklist:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Check&lt;/th&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Required blocks present&lt;/td&gt;
&lt;td&gt;Regex scan for block headers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ten God labels match extracted JSON&lt;/td&gt;
&lt;td&gt;String diff against schema&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Guardrail violations&lt;/td&gt;
&lt;td&gt;Claude classification pass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Word count within ±10% of target&lt;/td&gt;
&lt;td&gt;&lt;code&gt;len(content.split())&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hanja notation format consistent&lt;/td&gt;
&lt;td&gt;Regex: &lt;code&gt;[A-Za-z]+\([^\)]+\)&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No Korean hangul in English-channel output&lt;/td&gt;
&lt;td&gt;Unicode range check &lt;code&gt;\uAC00-\uD7A3&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CTA present&lt;/td&gt;
&lt;td&gt;String search for &lt;code&gt;runartree.com&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Disclaimer present&lt;/td&gt;
&lt;td&gt;String search for disclaimer pattern&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The guardrail violation check deserves special mention. We send the generated text back to Claude with a focused classification prompt:&lt;/p&gt;

&lt;p&gt;Does this text contain any of the following? Answer YES/NO for each:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Absolute certainty language (must, will definitely, 100%)&lt;/li&gt;
&lt;li&gt;Personal life speculation beyond the chart&lt;/li&gt;
&lt;li&gt;Anxiety-inducing predictions without mitigation&lt;/li&gt;
&lt;li&gt;Missing disclaimer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If any answer is YES, the output is flagged for human review rather than auto-published.&lt;/p&gt;




&lt;h2&gt;
  
  
  [INFO_GRAPHIC]
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Suggested asset: A four-column pillar diagram showing 壬子 Day Pillar at center, 丙午 Annual Luck 2026 on the right, with a red clash arrow between 子 and 午 branches, and a blue reinforcement arrow between 壬 Grand Luck stem and 壬 Day Stem. Labels in English + hanja. Brand colors: Runartree dark navy + gold.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Reversal: The Hour Pillar Clash Is Already in the Chart
&lt;/h2&gt;

&lt;p&gt;Here is the part that surprises most people who look at this chart for the first time.&lt;/p&gt;

&lt;p&gt;The 2026 Annual Luck pillar is 丙午. The Hour Pillar (時柱) of the natal chart is also 丙午 — identical heavenly stem and earthly branch. This means the Annual Luck is not introducing a new energy into the chart: it is &lt;strong&gt;doubling an energy that already exists natively&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When 午(오) appears in both the Hour Branch and the Annual Luck simultaneously, the clash between 午 and the Day Branch 子 is not a single external pressure — it is a resonance effect. The chart's own Hour Pillar amplifies the Annual Luck's clash against the Day Branch. In classical terms this is called 伏吟(복음), a "hidden echo," and it tends to intensify both the opportunity signal (Direct Wealth 正財 activating strongly) and the instability signal (子午沖 destabilizing the daily rhythm) beyond what either factor would produce alone.&lt;/p&gt;

&lt;p&gt;This is why the QA-flagged interpretation for this chart emphasizes energy management over opportunity chasing. The Direct Wealth(正財) and Indirect Wealth(偏財) signals are genuinely strong — but the structural amplification means the cost of overextension is also amplified.&lt;/p&gt;




&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Verbatim extraction is non-negotiable.&lt;/strong&gt; The single most common failure mode in early pipeline versions was the model "correcting" a Ten God label based on its own interpretation rather than copying the image text. A 正財 relabeled as 偏財 produces a fundamentally different interpretation. Solve this with explicit verbatim instructions and a verification pass.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Schema before generation.&lt;/strong&gt; Passing structured JSON to the generation prompt produces dramatically more consistent output than passing image descriptions. The schema enforces boundaries. Free-text descriptions invite hallucination.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Channel formatting is cheap; re-generation is expensive.&lt;/strong&gt; Invest in the formatter layer. A single generation run should feed multiple channels. Re-running Vision + generation because a channel format was wrong is a waste of API budget.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. QA catches what prompts miss.&lt;/strong&gt; Even well-crafted generation prompts occasionally produce guardrail violations. The automated QA pass is not optional — it is the last line before human review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. The disclaimer is load-bearing.&lt;/strong&gt; In Saju content, the disclaimer is not boilerplate. It is the structural element that separates a content automation pipeline from a prediction service. Every output, every channel, every time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Claude Vision + structured JSON extraction is reliable for manse calendar screenshots when verbatim extraction is enforced and a verification pass is included&lt;/li&gt;
&lt;li&gt;Required block manifests and guardrail blocks in generation prompts produce consistent, channel-appropriate long-form content&lt;/li&gt;
&lt;li&gt;Per-channel formatters decouple generation from presentation, reducing API costs significantly&lt;/li&gt;
&lt;li&gt;Automated QA on block presence, Ten God label consistency, guardrail violations, and word count catches the majority of output failures before human review&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try the Pipeline Output
&lt;/h2&gt;

&lt;p&gt;The Saju content automation pipeline described in this article powers the readings at &lt;strong&gt;&lt;a href="https://runartree.com" rel="noopener noreferrer"&gt;runartree.com&lt;/a&gt;&lt;/strong&gt;. If you are building content automation in a specialized domain — astrology, numerology, TCM, or any knowledge-dense vertical — the extraction-schema-generation-QA pattern transfers directly.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article describes a content generation pipeline and uses a publicly known public figure's birth data as a technical test case for chart extraction accuracy. All interpretations are generated outputs for pipeline demonstration purposes only. Saju readings are a traditional cultural reference framework and do not constitute predictions, advice, or guaranteed outcomes of any kind.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Project link
&lt;/h2&gt;

&lt;p&gt;This article is based on an automated content workflow for a Korean Saju platform.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://runartree.com?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=saju_automation" rel="noopener noreferrer"&gt;https://runartree.com?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=saju_automation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Stack: Python, Claude Vision, channel-specific formatting, content QA&lt;/li&gt;
&lt;li&gt;Domain: Korean Saju / Bazi content automation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key lesson is simple: generation alone is not enough. A useful publishing pipeline also needs formatting, QA, tracking links, and channel-specific editorial rules.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Bazi interpretation. Not medical, legal, or investment advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bazi</category>
      <category>kpop</category>
      <category>saju</category>
      <category>korea</category>
    </item>
    <item>
      <title>How We Built an Automated Korean Saju Content Pipeline with Claude Vision + Python</title>
      <dc:creator>runartree.com</dc:creator>
      <pubDate>Sat, 09 May 2026 11:10:30 +0000</pubDate>
      <link>https://dev.to/hyun_soolee_0c4754e81463/how-we-built-an-automated-korean-saju-content-pipeline-with-claude-vision-python-1pjk</link>
      <guid>https://dev.to/hyun_soolee_0c4754e81463/how-we-built-an-automated-korean-saju-content-pipeline-with-claude-vision-python-1pjk</guid>
      <description>&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%2Famhq4l37y6szsgdm7ma4.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%2Famhq4l37y6szsgdm7ma4.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  How We Built an Automated Korean Saju Content Pipeline with Claude Vision + Python
&lt;/h1&gt;

&lt;h2&gt;
  
  
  The Problem: Longform Content at Scale, Without Losing Precision
&lt;/h2&gt;

&lt;p&gt;Korean Saju (四柱, Four Pillars of Destiny) content is structurally rich — each reading contains a natal chart (원국), a current major cycle (대운), an annual cycle (세운), and layered interpretations across career, wealth, relationships, and health. A single public-figure reading can run 3,000–5,000 Korean words, with dozens of named variables: Heavenly Stems (天干), Earthly Branches (地支), Ten Gods (十星), and classical star markers like Heavenly Noble (天乙貴人) or Peach Blossom (桃花殺).&lt;/p&gt;

&lt;p&gt;The manual workflow looked like this: a senior analyst runs the chart → captures screenshots → writes interpretation → editor formats per channel → QA checks for factual drift. That pipeline took 4–6 hours per reading, per channel.&lt;/p&gt;

&lt;p&gt;Our goal: reduce that to under 45 minutes of human time, with zero factual hallucination on the chart data.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Architecture: Four Stages
&lt;/h2&gt;

&lt;p&gt;[Manse Calendar UI] &lt;br&gt;
    → [Claude Vision Extraction] &lt;br&gt;
        → [Prompt Chain Interpretation] &lt;br&gt;
            → [Channel Formatter] &lt;br&gt;
                → [QA Gate] &lt;br&gt;
                    → [Publish]&lt;/p&gt;

&lt;p&gt;Each stage has a distinct responsibility and a distinct failure mode. We'll walk through each.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 1 — Vision Extraction: Reading the Chart Image
&lt;/h2&gt;

&lt;p&gt;The Manse calendar (만세력) is rendered as a UI screenshot, not a structured data export. That means the ground truth for every reading lives in an image.&lt;/p&gt;

&lt;p&gt;We feed four screenshot types into Claude Vision:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Image&lt;/th&gt;
&lt;th&gt;Content&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;01_input_confirm.png&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Name, gender, solar date, birth hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;02_manse_calendar_complete.png&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full four-pillar grid with Ten Gods, 12-phase markers, star markers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;03–06_total_luck_N.png&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Longform interpretation scroll captures&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The extraction prompt is strict and non-inferential:&lt;/p&gt;

&lt;p&gt;Extract exactly what is visible in the image. &lt;br&gt;
Do not infer, translate, or rephrase any character or label.&lt;br&gt;
If the Hour Pillar Heavenly Stem Ten God reads "正財" (Direct Wealth), &lt;br&gt;
output "正財". Do not substitute "偏財".&lt;br&gt;
Output as structured JSON with keys: &lt;br&gt;
  name, gender, solar_date, lunar_date, birth_hour,&lt;br&gt;
  pillars: { year, month, day, hour } each containing &lt;br&gt;
    { stem, branch, stem_god, branch_god, twelve_phase, star_markers[] },&lt;br&gt;
  current_daewoon: { stem, branch, stem_god, branch_god },&lt;br&gt;
  annual_cycle_2026: { stem, branch, stem_god, branch_god, star_markers[] }&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt; In our live case — Kang Daniel (강다니엘), male, solar 1996-12-10, birth hour unknown — the Hour Pillar (時柱) Heavenly Stem is 甲 with Ten God label &lt;strong&gt;正財 (Direct Wealth, 정재)&lt;/strong&gt;. An early prompt version that said "identify the Ten God" without the non-substitution guard produced &lt;strong&gt;偏財 (Indirect Wealth)&lt;/strong&gt; because the model pattern-matched on 甲 relative to 辛 and computed independently. The guard clause eliminated that class of error entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extracted ground truth (live case):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Day Pillar (日柱): 辛(신) / 巳(사) — Ten Gods: 比肩(비견) / 正官(정관)&lt;/li&gt;
&lt;li&gt;Month Pillar (月柱): 庚(경) / 子(자) — Ten Gods: 劫財(겁재) / 食神(식신)&lt;/li&gt;
&lt;li&gt;Year Pillar (年柱): 丙(병) / 子(자) — Ten Gods: 正官(정관) / 食神(식신)&lt;/li&gt;
&lt;li&gt;Hour Pillar (時柱): 甲(갑) / 午(오) — Ten Gods: 正財(정재) / 偏官(편관)&lt;/li&gt;
&lt;li&gt;Current Daewoon: 甲辰(갑진) — 正財(정재) / [辰子 semi-combination, Water reinforcement]&lt;/li&gt;
&lt;li&gt;2026 Annual Cycle: 丙午(병오) — 正官(정관) / 偏官(편관)&lt;/li&gt;
&lt;li&gt;Star markers extracted: 天乙貴人(천을귀인) at Hour Branch 午, 天德貴人(천덕귀인) at Hour Branch 午, 암록(暗祿) at Month Pillar&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Stage 2 — Prompt Chain: Interpretation Without Hallucination
&lt;/h2&gt;

&lt;p&gt;Once the JSON is clean, we run a four-prompt chain. Each prompt receives only the JSON output of the previous stage plus a scoped instruction. No prompt sees the raw image again after Stage 1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt 1 — Structure Summary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Given this chart JSON, summarize the structural profile:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Day Master strength (身强/身弱)&lt;/li&gt;
&lt;li&gt;Dominant element distribution&lt;/li&gt;
&lt;li&gt;Ten God concentration (how many 官星, 食傷, 財星, 印星, 比劫)&lt;/li&gt;
&lt;li&gt;Key tensions (충/沖, 합/合, 형/刑 between pillars)
Output: structured summary, no prose yet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Kang Daniel: Day Master 辛金 is &lt;strong&gt;身弱 (weak)&lt;/strong&gt; — three 官星 (正官×2 + 偏官×1), two 食傷 (食神×2), zero 印星 in Heavenly Stems. Fire element at ~40%, Water ~30%, Metal ~20%, Wood ~10%, Earth ~0%. Critical tension: 子午沖 (子 in Year/Month Branch vs 午 in Hour Branch).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt 2 — Domain Interpretation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each domain (career, wealth, relationships, health) gets a separate sub-prompt with the structural summary as context. This prevents cross-domain contamination and makes QA easier — each block is independently auditable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt 3 — Annual Cycle Overlay&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Given the structural summary and domain interpretations,&lt;br&gt;
overlay the 2026 annual cycle (丙午).&lt;br&gt;
Identify: which existing pillars does 午 interact with?&lt;br&gt;
What does doubling of 官星 (正官 + 偏官) mean for a 身弱 Day Master?&lt;br&gt;
Do not introduce chart elements not present in the JSON.&lt;/p&gt;

&lt;p&gt;The 2026 overlay is where the most interesting dynamics surface. 丙午 年 means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Heavenly Stem 丙 = 正官 (Direct Officer) relative to 辛 Day Master&lt;/li&gt;
&lt;li&gt;Earthly Branch 午 = 偏官 (Seven Killings) relative to 辛&lt;/li&gt;
&lt;li&gt;午 repeats the Hour Branch, reactivating 天乙貴人 — unexpected support signal in a high-pressure year&lt;/li&gt;
&lt;li&gt;午 clashes with Year Branch 子 and Month Branch 子 (子午沖×2) — environmental disruption to established routines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prompt 4 — Channel Formatting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where the pipeline branches. The same interpreted content gets reformatted per channel spec. Dev.to gets English technical framing. A YouTube script gets a different cadence. A blog post gets Korean prose. The interpretation JSON is the single source of truth; formatting is downstream.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 3 — Channel Formatter
&lt;/h2&gt;

&lt;p&gt;Each channel has a spec file that the formatter reads:&lt;/p&gt;

&lt;p&gt;CHANNEL_SPECS = {&lt;br&gt;
    "devto": {&lt;br&gt;
        "language": "en",&lt;br&gt;
        "format": "markdown",&lt;br&gt;
        "tone": "technical_analytical",&lt;br&gt;
        "word_target": 1500,&lt;br&gt;
        "forbidden": ["fortune_telling_framing", "certainty_language", "gossip"],&lt;br&gt;
        "required_blocks": [&lt;br&gt;
            "hook", "conclusion_one_liner", "bazi_mechanics",&lt;br&gt;
            "classical_citation", "modern_application",&lt;br&gt;
            "infographic_placeholder", "reversal_insight",&lt;br&gt;
            "summary_three_lines", "cta"&lt;br&gt;
        ]&lt;br&gt;
    },&lt;br&gt;
    "youtube_script": { ... },&lt;br&gt;
    "blog_ko": { ... }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;The formatter prompt receives the interpretation JSON plus the channel spec and produces the final draft. Crucially, it does &lt;strong&gt;not&lt;/strong&gt; re-read the chart — it only formats what the interpretation chain already produced.&lt;/p&gt;




&lt;h2&gt;
  
  
  [INFO_GRAPHIC]
&lt;/h2&gt;

&lt;p&gt;KANG DANIEL — 辛巳 Day Pillar | 2026 丙午 Annual Cycle&lt;/p&gt;

&lt;p&gt;PILLAR GRID&lt;br&gt;
┌──────────┬──────────┬──────────┬──────────┐&lt;br&gt;
│  時柱    │  日柱    │  月柱    │  年柱    │&lt;br&gt;
│  Hour    │  Day     │  Month   │  Year    │&lt;br&gt;
├──────────┼──────────┼──────────┼──────────┤&lt;br&gt;
│  正財    │  比肩    │  劫財    │  正官    │&lt;br&gt;
│  甲 Wood │  辛 Metal│  庚 Metal│  丙 Fire │&lt;br&gt;
│  甲 (갑) │  辛 (신) │  庚 (경) │  丙 (병) │&lt;br&gt;
├──────────┼──────────┼──────────┼──────────┤&lt;br&gt;
│  偏官    │  正官    │  食神    │  食神    │&lt;br&gt;
│  午 Fire │  巳 Fire │  子 Water│  子 Water│&lt;br&gt;
│  午 (오) │  巳 (사) │  子 (자) │  子 (자) │&lt;br&gt;
└──────────┴──────────┴──────────┴──────────┘&lt;/p&gt;

&lt;p&gt;STAR MARKERS: 天乙貴人 + 天德貴人 @ 午 (Hour Branch)&lt;br&gt;
KEY TENSION: 子午沖 (Month/Year Branch vs Hour Branch)&lt;/p&gt;

&lt;p&gt;2026 OVERLAY: 丙午&lt;br&gt;
  Stem 丙 → 正官 (Direct Officer) — opportunity + accountability&lt;br&gt;
  Branch 午 → 偏官 (Seven Killings) — pressure layer&lt;br&gt;
  午 reactivates 天乙貴人 — hidden support signal&lt;br&gt;
  午 triggers 子午沖×2 — routine disruption likely&lt;/p&gt;

&lt;p&gt;DAEWOON: 甲辰 | 甲 → 正財 | 辰子 semi-combination (Water+)&lt;br&gt;
BODY STRENGTH: 身弱 | 官星×3 | 食傷×2 | 印星×0 in Stems&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 4 — QA Gate
&lt;/h2&gt;

&lt;p&gt;Before any content publishes, it passes through a five-check QA gate:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check 1 — Character Fidelity&lt;/strong&gt;&lt;br&gt;
Every Hanja character and Ten God label in the output is compared against the Stage 1 JSON. Any mismatch triggers a block. This is the 正財/偏財 guard at output level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check 2 — Certainty Language Scan&lt;/strong&gt;&lt;br&gt;
A regex + classifier pass flags phrases like "will definitely," "100%," "certain to," "absolutely." These are replaced with hedged equivalents or flagged for human review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check 3 — Gossip / Privacy Filter&lt;/strong&gt;&lt;br&gt;
Any sentence containing relationship-status assertions, health diagnoses, or financial predictions stated as fact is flagged. The filter is trained on a small dataset of problematic examples from early drafts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check 4 — Classical Citation Verification&lt;/strong&gt;&lt;br&gt;
If the interpretation chain inserted a classical text citation, the QA step verifies it matches a pre-approved citation library. Fabricated citations are a known LLM failure mode in this domain.&lt;/p&gt;

&lt;p&gt;For reference, a structurally relevant citation for this reading: &lt;em&gt;Zi Ping Zhen Quan&lt;/em&gt; (子平真詮, He Lun Qing, Qing Dynasty) discusses the 身弱 Day Master under heavy 官殺 pressure: the remedy is 印星 support; absent that, energy conservation becomes the primary strategic principle. This maps directly to the 2026 reading's core recommendation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check 5 — Word Count and Block Completeness&lt;/strong&gt;&lt;br&gt;
All nine required blocks must be present. Word count must fall within ±10% of target. Missing blocks or overruns trigger a regeneration request for the specific block, not the full piece.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Reversal: The Star Marker Nobody Expects
&lt;/h2&gt;

&lt;p&gt;The technically interesting finding in this chart — and the one most likely to be missed by a naive extraction — is that 天乙貴人 (Heavenly Noble) sits at the Hour Branch 午, the same branch that 2026's annual cycle repeats.&lt;/p&gt;

&lt;p&gt;In a year where 官星 doubles and 子午沖 fires twice, the conventional read is "high pressure, high cost." The reversal: 午 also reactivates the most powerful support star in the chart. The 2026 annual cycle is not purely adversarial — it also lights up the branch where unexpected assistance and key-moment support are structurally encoded.&lt;/p&gt;

&lt;p&gt;This is the kind of nuance that disappears if the Vision extraction is imprecise (wrong branch assignment) or if the interpretation chain doesn't cross-reference star markers against the annual cycle overlay. It's also the kind of insight that makes the content genuinely useful rather than generically cautionary.&lt;/p&gt;




&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Extraction and interpretation must be strictly separated.&lt;/strong&gt; Any prompt that does both simultaneously will drift. The model will rationalize chart data to fit an interpretation it's already building.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Non-substitution guards are not optional.&lt;/strong&gt; Especially for Ten God labels where the model has strong priors from training data. Explicit negative constraints outperform positive description alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Channel formatting is the last step, not the first.&lt;/strong&gt; Early versions tried to format while interpreting. Output quality dropped significantly. Separation of concerns applies here exactly as it does in software architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. QA is cheaper than correction.&lt;/strong&gt; A five-check gate that blocks 15% of drafts saves more time than editing published content that contains a factual error about a public figure's chart.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Star markers are high-value, low-extraction-rate data.&lt;/strong&gt; They appear as small colored badges in the UI. Without explicit Vision prompting for badge-level detail, they are systematically missed — and they often contain the most analytically interesting information.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Automated Saju content pipeline: Vision extraction → prompt chain → channel formatter → QA gate, with strict separation of concerns at each stage&lt;/li&gt;
&lt;li&gt;The critical engineering challenge is not generation quality but extraction fidelity — wrong Hanja or wrong Ten God label at Stage 1 propagates through every downstream step&lt;/li&gt;
&lt;li&gt;The 2026 reading for this case study surfaces a structurally meaningful reversal (天乙貴人 reactivation in a high-pressure 官星 year) that only appears when star marker extraction is precise and cross-referenced against the annual cycle overlay&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Explore the full Saju content platform and automated reading tools at &lt;a href="https://runartree.com" rel="noopener noreferrer"&gt;runartree.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article uses publicly available birth information and a published Saju reading as a technical case study for content pipeline automation. All interpretations reflect classical Bazi analytical frameworks and are presented as structural analysis, not predictive certainty. Individual outcomes vary and no reading should be treated as a definitive forecast.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Project link
&lt;/h2&gt;

&lt;p&gt;This article is based on an automated content workflow for a Korean Saju platform.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://runartree.com?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=saju_automation" rel="noopener noreferrer"&gt;https://runartree.com?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=saju_automation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Stack: Python, Claude Vision, channel-specific formatting, content QA&lt;/li&gt;
&lt;li&gt;Domain: Korean Saju / Bazi content automation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key lesson is simple: generation alone is not enough. A useful publishing pipeline also needs formatting, QA, tracking links, and channel-specific editorial rules.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Bazi interpretation. Not medical, legal, or investment advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bazi</category>
      <category>kpop</category>
      <category>saju</category>
      <category>korea</category>
    </item>
    <item>
      <title>How I Built an Automated Korean Saju Content Pipeline with Claude Vision and Python</title>
      <dc:creator>runartree.com</dc:creator>
      <pubDate>Fri, 08 May 2026 08:39:29 +0000</pubDate>
      <link>https://dev.to/hyun_soolee_0c4754e81463/how-i-built-an-automated-korean-saju-content-pipeline-with-claude-vision-and-python-25fn</link>
      <guid>https://dev.to/hyun_soolee_0c4754e81463/how-i-built-an-automated-korean-saju-content-pipeline-with-claude-vision-and-python-25fn</guid>
      <description>&lt;h1&gt;
  
  
  How I Built an Automated Korean Saju Content Pipeline with Claude Vision and Python
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; I needed to produce structured, channel-specific long-form content about Korean Saju (四柱推命) at scale. Instead of manually reading manse calendar screenshots and writing drafts by hand, I built a Python pipeline that ingests calendar images, extracts structured pillar data via Claude Vision, runs a multi-stage prompt chain, enforces channel formatting rules, and passes output through a QA gate before publishing. Here is exactly how it works.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. The Problem
&lt;/h2&gt;

&lt;p&gt;Korean Saju content — destiny analysis based on the Four Pillars of Birth (年柱·月柱·日柱·時柱) — is inherently data-dense. A single reading involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Six data columns&lt;/strong&gt; (year, month, day, hour, current major cycle, annual cycle) each carrying a Heavenly Stem (天干), Earthly Branch (地支), a Ten-God relationship (十星), a 12-Phase life stage (十二運星), and one or more auspicious/inauspicious markers (神殺).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Derived structural judgments&lt;/strong&gt; — chart strength (身强/身弱), dominant element distribution, repeating branch patterns (e.g., 午午午 triple resonance across day branch, hour branch, and annual branch).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Channel-specific tone&lt;/strong&gt; — a dev.to audience wants technical framing; a YouTube audience wants narrative; a Naver Blog audience wants bullet-point summaries with score tables.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Doing this manually meant: open the manse calendar app, screenshot six columns, re-read every glyph, write a 1500-word draft, reformat for the target channel, QA for factual consistency, then publish. For one subject that takes roughly three hours. At any meaningful content volume, that is not viable.&lt;/p&gt;

&lt;p&gt;The goal: reduce human time-on-task to &lt;strong&gt;prompt review + final approval&lt;/strong&gt;, with the machine handling extraction, structuring, drafting, and format enforcement.&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%2Foxgrw8nh5t52rf8spjmr.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%2Foxgrw8nh5t52rf8spjmr.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Pipeline Overview
&lt;/h2&gt;

&lt;p&gt;[Manse Calendar App]&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
[Screenshot Capture Layer]   ← 4–6 PNG files per subject&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
[Claude Vision Extraction]   ← Structured JSON: pillars, ten-gods, 12-phase,神殺&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
[Validation &amp;amp; Normalisation] ← Python: cross-check stem/branch consistency&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
[Prompt Chain: Draft Generation] ← Multi-block long-form prompt&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
[Channel Formatter]          ← dev.to / YouTube script / Naver Blog&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
[QA Gate]                    ← Hallucination checks, forbidden phrase scan&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
[Output: Markdown / SRT / HTML]&lt;/p&gt;

&lt;p&gt;Each stage is a discrete Python module. Stages are orchestrated by a simple &lt;code&gt;pipeline.py&lt;/code&gt; that passes a shared &lt;code&gt;subject_context&lt;/code&gt; dict through each step.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Screenshot Ingestion and Vision Extraction
&lt;/h2&gt;

&lt;p&gt;The manse calendar app outputs visual data, not an API. That means the entry point is always image files. For a typical subject the capture set looks like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;Content&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;01_input_confirm.png&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Name, gender, solar date, birth hour status&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;02_manse_calendar_complete.png&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full four-pillar grid with ten-gods, 12-phase, 神殺 badges&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;03_total_luck_1.png&lt;/code&gt; – &lt;code&gt;06_total_luck_4.png&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Long-form luck analysis text blocks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The Vision extraction prompt is the most critical piece of the entire pipeline. A poorly specified extraction prompt produces plausible-sounding but wrong data — and because Saju analysis is deterministic (given a birth date and gender, every pillar value is fixed), any extraction error propagates as a factual error into every downstream output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extraction prompt design principles I learned the hard way:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ask for exact glyph transcription, not interpretation.&lt;/strong&gt; The prompt says: &lt;em&gt;"Transcribe the Korean hangul label exactly as it appears in the image. If the image shows 정재, output 정재. Do not substitute 편재."&lt;/em&gt; This sounds obvious but early versions of the prompt were silently correcting what the model thought were inconsistencies — e.g., flipping a Direct Wealth (正財) label to Indirect Wealth (偏財) because the stem looked like a 偏財 stem to the model. That is catastrophic for downstream accuracy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Extract position metadata.&lt;/strong&gt; The output JSON includes not just the value but where it appears: &lt;code&gt;{"column": "hour", "layer": "ten_god_stem", "value": "편재"}&lt;/code&gt;. This lets the validation layer catch cross-column inconsistencies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Separate extraction from interpretation.&lt;/strong&gt; The Vision call only extracts. It does not judge chart strength, does not infer relationships between pillars, does not produce prose. That happens in the next stage.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Sample extraction output (simplified):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "subject": { "name": "Jang Won-young", "gender": "female", "solar_birth": "2004-08-31", "birth_hour": "unknown" },&lt;br&gt;
  "pillars": {&lt;br&gt;
    "year":  { "stem": "甲", "branch": "申", "stem_ten_god": "식신", "branch_ten_god": "편인", "twelve_phase": "장생", "spirits": ["역마살", "공망"] },&lt;br&gt;
    "month": { "stem": "壬", "branch": "申", "stem_ten_god": "비견", "branch_ten_god": "편인", "twelve_phase": "장생", "spirits": ["월덕귀인", "역마살", "공망"] },&lt;br&gt;
    "day":   { "stem": "壬", "branch": "午", "stem_ten_god": "비견", "branch_ten_god": "정재", "twelve_phase": "태",   "spirits": ["원덕귀인"] },&lt;br&gt;
    "hour":  { "stem": "丙", "branch": "午", "stem_ten_god": "편재", "branch_ten_god": "정재", "twelve_phase": "태",   "spirits": ["월공", "양인살"] }&lt;br&gt;
  },&lt;br&gt;
  "major_cycle": { "stem": "庚", "branch": "午", "stem_ten_god": "편인", "branch_ten_god": "정재", "age": 18 },&lt;br&gt;
  "annual_cycle_2026": { "stem": "丙", "branch": "午", "stem_ten_god": "편재", "branch_ten_god": "정재" }&lt;br&gt;
}&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Validation and Normalisation
&lt;/h2&gt;

&lt;p&gt;Before any prose generation touches this data, a Python validation pass runs three checks:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check 1 — Stem/branch consistency.&lt;/strong&gt; Given the day master (日主) stem, every ten-god label is mathematically deterministic. The validator recomputes expected ten-god values from the stem and flags any mismatch between the computed value and the extracted label. If Vision extracted a label that contradicts the stem relationship, the pipeline halts and logs a &lt;code&gt;EXTRACTION_CONFLICT&lt;/code&gt; error for human review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check 2 — Branch repetition detection.&lt;/strong&gt; The validator scans all six branch slots (four pillars + major cycle branch + annual cycle branch) and flags any branch that appears three or more times. In this subject's case, 午 appears in day branch, hour branch, major cycle branch, and 2026 annual cycle branch — a four-way resonance that is structurally significant and needs to be called out explicitly in the draft prompt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check 3 — Forbidden phrase pre-check.&lt;/strong&gt; A list of absolute-prohibition strings (&lt;code&gt;["반드시", "확실히", "무조건", "절대", "100%"]&lt;/code&gt; and their English equivalents) is checked against any text fields extracted from the long-form image blocks. If found, those segments are flagged for tone adjustment before they enter the draft prompt context.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Prompt Strategy for Draft Generation
&lt;/h2&gt;

&lt;p&gt;The draft generation stage uses a structured multi-block prompt. The key design decision is &lt;strong&gt;block-level responsibility&lt;/strong&gt;: each named section of the output is generated with its own instruction context, rather than asking the model to produce everything in one pass.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Block map:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Block&lt;/th&gt;
&lt;th&gt;Instruction focus&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hook (3 lines)&lt;/td&gt;
&lt;td&gt;Lead with the structurally most surprising fact from the extracted data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One-line thesis&lt;/td&gt;
&lt;td&gt;Day master + dominant ten-god + 2026 annual cycle, no hedging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mechanics section&lt;/td&gt;
&lt;td&gt;Cite at least 3 ten-gods or 神殺 with positional context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Classical reference&lt;/td&gt;
&lt;td&gt;One line from 滴天髓 / 子平真詮 / 窮通寶鑑 / 淵海子平 with source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modern application&lt;/td&gt;
&lt;td&gt;Map the trigger subject's known public activity domain to the annual cycle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infographic block&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;[INFO_GRAPHIC]&lt;/code&gt; placeholder for the design pipeline to fill&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reversal paragraph&lt;/td&gt;
&lt;td&gt;One counter-intuitive finding — a 神殺 or branch combination that cuts against the dominant narrative&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3-line summary&lt;/td&gt;
&lt;td&gt;Compress the entire reading to three sentences&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CTA&lt;/td&gt;
&lt;td&gt;Injected by the formatter, not by the draft prompt&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The prompt explicitly instructs the model: &lt;em&gt;"You are working from extracted structured data. Do not invent pillar values. Do not infer birth details not present in the extraction JSON. If a field is marked 'unknown' (e.g., birth hour), treat the hour pillar as provided and do not speculate about alternative hour values."&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Channel Formatter
&lt;/h2&gt;

&lt;p&gt;The same structured draft gets reformatted by a channel-specific formatter module. Each formatter is a Python class with a &lt;code&gt;transform(draft: str, context: dict) -&amp;gt; str&lt;/code&gt; method.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;dev.to formatter rules:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Output valid Markdown with YAML frontmatter&lt;/li&gt;
&lt;li&gt;Tags drawn from a controlled vocabulary (&lt;code&gt;bazi&lt;/code&gt;, &lt;code&gt;kpop&lt;/code&gt;, &lt;code&gt;saju&lt;/code&gt;, &lt;code&gt;korea&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;No code fences wrapping the entire document&lt;/li&gt;
&lt;li&gt;Hanja terms rendered inline with English gloss: &lt;code&gt;Indirect Wealth(偏財)&lt;/code&gt;, &lt;code&gt;Goat Blade(羊刃殺)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;All Korean hangul stripped from final output; terminology expressed in English + hanja only&lt;/li&gt;
&lt;li&gt;Target word count: 1400–1600 words; formatter trims or expands the reversal and mechanics sections to hit range&lt;/li&gt;
&lt;li&gt;CTA block appended from a template string, not from the draft&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;YouTube script formatter rules (different module):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Output plain text with &lt;code&gt;[PAUSE]&lt;/code&gt; and &lt;code&gt;[B-ROLL: X]&lt;/code&gt; markers&lt;/li&gt;
&lt;li&gt;Hangul preserved for on-screen text overlays&lt;/li&gt;
&lt;li&gt;Sentences capped at 18 words for teleprompter pacing&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. QA Gate
&lt;/h2&gt;

&lt;p&gt;The QA gate runs after formatting and before any publish call. It is not a model call — it is a deterministic rule engine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rules that cause a BLOCK (pipeline halts):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Any ten-god label in the output that contradicts the validation JSON (e.g., output says "Direct Wealth(正財)" in the hour stem position but the JSON says &lt;code&gt;편재&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Any of the forbidden certainty phrases present in the output&lt;/li&gt;
&lt;li&gt;Word count outside ±15% of target&lt;/li&gt;
&lt;li&gt;Missing required blocks (checked by scanning for section header strings)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Rules that cause a WARN (logged, human reviews before publish):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Classical reference citation present but source tag missing&lt;/li&gt;
&lt;li&gt;Infographic placeholder &lt;code&gt;[INFO_GRAPHIC]&lt;/code&gt; not replaced by the design pipeline&lt;/li&gt;
&lt;li&gt;Subject name appears in a sentence with a romantic or health-definitive predicate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The QA gate rejects roughly 8–12% of drafts on first pass, almost always due to a ten-god label drift introduced during the channel formatting step (the formatter's length-adjustment logic occasionally paraphrases a term incorrectly).&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Lessons Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Extraction fidelity is the entire foundation.&lt;/strong&gt; Every downstream error I have traced has originated in the Vision extraction stage, not in the draft generation stage. Investing in extraction prompt specificity — including explicit anti-correction instructions — pays back more than any amount of draft prompt tuning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deterministic validation beats probabilistic correction.&lt;/strong&gt; It is tempting to add a "correction" prompt that asks the model to fix inconsistencies in extracted data. Do not do this. The model will produce plausible corrections that are sometimes wrong in ways that are very hard to catch. Halt on conflict and route to human review instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Branch repetition is a structural signal, not noise.&lt;/strong&gt; When the same Earthly Branch appears four times across the pillar set and both cycle slots, that is not a coincidence to mention in passing — it is the structural centre of the reading. The pipeline now explicitly flags multi-resonance patterns and instructs the draft prompt to build the mechanics section around them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Channel formatting should never touch content semantics.&lt;/strong&gt; The formatter's job is structure and length, not meaning. Any formatter logic that could alter a ten-god label, a 神殺 name, or a classical citation needs to be moved upstream into the draft prompt or blocked entirely.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. What This Produces
&lt;/h2&gt;

&lt;p&gt;To illustrate the pipeline end-to-end, here is the kind of structured output it generates. For a subject with Day Master 壬水(Im-su / Deep Water), chart structure 身强(Shin-gang / Strong Chart), current major cycle 庚午(Gyeong-o) carrying Indirect Wealth(偏印) over Direct Wealth(正財), and 2026 annual cycle 丙午(Byeong-o) carrying Indirect Wealth(偏財) over Direct Wealth(正財):&lt;/p&gt;

&lt;p&gt;The pipeline correctly identifies that the 午 branch appearing in the day branch, hour branch, major cycle branch, and annual cycle branch simultaneously creates a four-layer resonance on the Direct Wealth(正財) position — the structural centre of the 2026 reading. It flags the Heavenly Noble(天乙貴人) marker on the month pillar as the reversal element (unexpected support arriving in high-pressure periods). It applies the Goat Blade(羊刃殺) marker on the hour pillar as a caution flag for the health and overextension blocks. And it correctly preserves the Empty Void(空亡) markers on both the year and month branches without over-interpreting them as absolute negatives.&lt;/p&gt;

&lt;p&gt;The QA gate passes the output. The formatter hits 1,487 words. Total machine time from image input to publish-ready Markdown: under 90 seconds.&lt;/p&gt;




&lt;h2&gt;
  
  
  [INFO_GRAPHIC]
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2026 Pillar Snapshot — 壬水 Day Master&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pillar&lt;/th&gt;
&lt;th&gt;Stem&lt;/th&gt;
&lt;th&gt;Branch&lt;/th&gt;
&lt;th&gt;Stem Ten-God&lt;/th&gt;
&lt;th&gt;Branch Ten-God&lt;/th&gt;
&lt;th&gt;Key Marker&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Year(年柱)&lt;/td&gt;
&lt;td&gt;甲&lt;/td&gt;
&lt;td&gt;申&lt;/td&gt;
&lt;td&gt;Eating God(食神)&lt;/td&gt;
&lt;td&gt;Indirect Wealth(偏印)&lt;/td&gt;
&lt;td&gt;Empty Void(空亡)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Month(月柱)&lt;/td&gt;
&lt;td&gt;壬&lt;/td&gt;
&lt;td&gt;申&lt;/td&gt;
&lt;td&gt;Friend(比肩)&lt;/td&gt;
&lt;td&gt;Indirect Wealth(偏印)&lt;/td&gt;
&lt;td&gt;Heavenly Noble(天乙貴人)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Day(日柱)&lt;/td&gt;
&lt;td&gt;壬&lt;/td&gt;
&lt;td&gt;午&lt;/td&gt;
&lt;td&gt;Friend(比肩)&lt;/td&gt;
&lt;td&gt;Direct Wealth(正財)&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hour(時柱)&lt;/td&gt;
&lt;td&gt;丙&lt;/td&gt;
&lt;td&gt;午&lt;/td&gt;
&lt;td&gt;Indirect Wealth(偏財)&lt;/td&gt;
&lt;td&gt;Direct Wealth(正財)&lt;/td&gt;
&lt;td&gt;Goat Blade(羊刃殺)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Major Cycle&lt;/td&gt;
&lt;td&gt;庚&lt;/td&gt;
&lt;td&gt;午&lt;/td&gt;
&lt;td&gt;Indirect Wealth(偏印)&lt;/td&gt;
&lt;td&gt;Direct Wealth(正財)&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2026 Annual&lt;/td&gt;
&lt;td&gt;丙&lt;/td&gt;
&lt;td&gt;午&lt;/td&gt;
&lt;td&gt;Indirect Wealth(偏財)&lt;/td&gt;
&lt;td&gt;Direct Wealth(正財)&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Vision extraction with explicit anti-correction instructions&lt;/strong&gt; is the single highest-leverage investment in a Saju content pipeline — garbage in, garbage out applies with unusual force when the source data is deterministic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic validation before any generative step&lt;/strong&gt; catches the errors that probabilistic models will confidently paper over.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Channel formatters should be semantically inert&lt;/strong&gt; — length and structure only, never meaning.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;Want to explore the full reading this pipeline produced, or see how the branch-resonance and 神殺 pattern analysis maps to a specific public figure's 2026 trajectory? The complete interactive manse calendar and long-form analysis are available at &lt;a href="https://runartree.com" rel="noopener noreferrer"&gt;runartree.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article discusses Saju (四柱) as a structured content domain for automation purposes. All interpretations derived from the pipeline are probabilistic pattern analyses based on classical Chinese metaphysical frameworks and should not be treated as predictive certainties or professional advice of any kind.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Project link
&lt;/h2&gt;

&lt;p&gt;This article is based on an automated content workflow for a Korean Saju platform.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://runartree.com?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=saju_automation" rel="noopener noreferrer"&gt;https://runartree.com?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=saju_automation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Stack: Python, Claude Vision, channel-specific formatting, content QA&lt;/li&gt;
&lt;li&gt;Domain: Korean Saju / Bazi content automation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key lesson is simple: generation alone is not enough. A useful publishing pipeline also needs formatting, QA, tracking links, and channel-specific editorial rules.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Bazi interpretation. Not medical, legal, or investment advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bazi</category>
      <category>kpop</category>
      <category>saju</category>
      <category>korea</category>
    </item>
  </channel>
</rss>
