Skip to main content

vitamin-analyzer

Help users audit their supplement stack and answer the quiet question behind every vitamin bottle โ€” "Am I actually covering what I need? Am I doubling up? Is anything over the upper limit?" Guides the user on a journey to optimize their vitamin portfolio with evidence-based analysis. Activates when the user shares a supplement name, ingredient list, or Supplement Facts label photo, optionally with personal context (age, biological sex, symptoms, pregnancy, prescription drugs). Returns a Korean (default) or English markdown report covering RDA gaps, UL overages, duplicate ingredients, drug/supplement interactions, and domestic + overseas (iHerb) alternative product suggestions โ€” every medical claim backed by Tier 1โ€“2 citations from the U.S. National Institutes of Health Office of Dietary Supplements (NIH ODS), PubMed (National Library of Medicine), Cochrane Library systematic reviews, Examine.com, and the Korean Ministry of Food and Drug Safety (์‹์•ฝ์ฒ˜) public Open APIs for both domestic health functional foods (

Jump to install

Source facts

Repository
kemy-ai/vitamin-analyzer
Last source activity
July 8, 2026 at 05:32
Detected SKILL.md language
Korean
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
23 files

Showing SKILL.md

SKILL.md
Source instructions ยท Read-only preview
name
vitamin-analyzer
description
Help users audit their supplement stack and answer the quiet question behind every vitamin bottle โ€” "Am I actually covering what I need? Am I doubling up? Is anything over the upper limit?" Guides the user on a journey to optimize their vitamin portfolio with evidence-based analysis. Activates when the user shares a supplement name, ingredient list, or Supplement Facts label photo, optionally with personal context (age, biological sex, symptoms, pregnancy, prescription drugs). Returns a Korean (default) or English markdown report covering RDA gaps, UL overages, duplicate ingredients, drug/supplement interactions, and domestic + overseas (iHerb) alternative product suggestions โ€” every medical claim backed by Tier 1โ€“2 citations from the U.S. National Institutes of Health Office of Dietary Supplements (NIH ODS), PubMed (National Library of Medicine), Cochrane Library systematic reviews, Examine.com, and the Korean Ministry of Food and Drug Safety (์‹์•ฝ์ฒ˜) public Open APIs for both domestic health functional foods (C003/I2710) and OTC / prescription drugs (product approval, patient-friendly summaries, pill identification) when KFDA_HTFS_KEY / KFDA_FOODSAFETY_KEY env vars are set. Automatically routes between health-food and drug APIs so OTC multivitamins (e.g. ๋น„๋งฅ์Šค, ์•„๋กœ๋‚˜๋ฏผ, ์„ผํŠธ๋ฃธ) are correctly identified when not registered as health functional foods. Supports multiple user-named profiles (self, family, friends) and three intent modes (quick_check / quick_replace / full_analysis) to match answer depth to question depth. Persists product DB, stack JSON, and reports under ./user-data/. Declines analyses for under-12 and pets; never issues prescription-drug dosing advice.
license
MIT
version
1.3.0
# Vitamin Analyzer โ€” ๋ณด์ถฉ์ œ ๋ถ„์„ Skill > **"์ง€๊ธˆ ๋จน๋Š” ๋น„ํƒ€๋ฏผ, ์ •๋ง ๋‚˜ํ•œํ…Œ ๋งž๋Š” ๊ฑธ๊นŒ?"** > ๋ถ€์กฑํ•œ ๊ฑด ์—†๋Š”์ง€, ๋ญ˜ ์ค‘๋ณต์œผ๋กœ ๋จน๊ณ  ์žˆ์ง€๋Š” ์•Š์€์ง€, ์ƒํ•œ์„ ์„ ๋„˜๊ธด ์„ฑ๋ถ„์€ ์—†๋Š”์ง€ โ€” ๋‚ด ๋น„ํƒ€๋ฏผ ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ๊ทผ๊ฑฐ ๊ธฐ๋ฐ˜์œผ๋กœ ์ ๊ฒ€ํ•˜๊ณ  ์ตœ์ ์˜ ์กฐํ•ฉ์„ ์ฐพ์•„๊ฐ€๋Š” **ํƒ์ƒ‰ ์—ฌ์ •**์„ ๋•๋Š” Claude Skill. ํ”„๋กœํ•„(์„ ํƒ)๊ณผ ๋ณต์šฉ ์ œํ’ˆ(ํ…์ŠคํŠธ/๋ผ๋ฒจ ์‚ฌ์ง„/์ œํ’ˆ๋ช…)์„ ๋ฐ›์•„ UL ์ดˆ๊ณผยทRDA ๋ฏธ๋‹ฌยท์ค‘๋ณตยท์ƒํ˜ธ์ž‘์šฉ์„ ํ‰๊ฐ€ํ•˜๊ณ , **๊ตญ๋‚ดยทํ•ด์™ธ์—์„œ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ฒด ์ œํ’ˆ**์„ ๊ฐ€๊ฒฉยท๊ทผ๊ฑฐ์™€ ํ•จ๊ป˜ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์‹์•ฝ์ฒ˜ ๊ฑด๊ฐ•๊ธฐ๋Šฅ์‹ํ’ˆ Open API(์„ ํƒ) ์—ฐ๋™ ์‹œ ๊ตญ๋‚ด ์ œํ’ˆ์€ ์ œํ’ˆ๋ช…๋งŒ์œผ๋กœ ์ •๋ถ€ ๊ณต์‹ DB์—์„œ ์ •ํ™•ํžˆ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. --- ## 1. When to use this skill ๋ณธ ์Šคํ‚ฌ์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ž…๋ ฅ์ด ๊ฐ์ง€๋  ๋•Œ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค: - ๋ณด์ถฉ์ œ ์ œํ’ˆ๋ช… (ํ•œ/์˜) โ€” ์˜ˆ: "์„ผํŠธ๋ฃธ ์‹ค๋ฒ„ ์—ฌ์„ฑ์šฉ", "NutriCalm LiverRelax" - ์„ฑ๋ถ„ ๋ฆฌ์ŠคํŠธ ํ…์ŠคํŠธ โ€” ์˜ˆ: "๋น„ํƒ€๋ฏผ D 1000IU, ์นผ์Š˜ 500mg, ๋งˆ๊ทธ๋„ค์Š˜ 200mg" - **์„ฑ๋ถ„ํ‘œ ์‚ฌ์ง„ (Supplement Facts ํŒจ๋„)** โ€” ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ - **๋ณต์ˆ˜ ์ œํ’ˆ ์กฐํ•ฉ** โ€” 2๊ฐœ ์ด์ƒ ์ œํ’ˆ์„ ํ•œ ๋ฒˆ์— ๋ถ„์„ (์Šคํƒ ์ตœ์ ํ™”) - ์„ ํƒ์  ํ”„๋กœํ•„ โ€” ์„ฑ๋ณ„/๋‚˜์ด/์ฆ์ƒ/์ž„์‹ ยท์ˆ˜์œ /๋ณต์šฉ ์•ฝ๋ฌผ **ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ**: - ์˜์œ ์•„(<12์„ธ) ๋˜๋Š” ๋ฐ˜๋ ค๋™๋ฌผ ๋Œ€์ƒ โ†’ ยง6 ๊ฑฐ๋ถ€ ํ”„๋กœํ† ์ฝœ - ์ฒ˜๋ฐฉ์•ฝ ๋ณต์šฉ๋Ÿ‰ ์กฐ์ • ์š”์ฒญ โ†’ "์˜์‚ฌยท์•ฝ์‚ฌ ์ƒ๋‹ด ๊ถŒ๊ณ "๋กœ ์‘๋‹ต - ์‹ํ’ˆ ์˜์–‘ ๋ถ„์„ (๋ณด์ถฉ์ œ ์™ธ) โ†’ ๋ณธ ์Šคํ‚ฌ ๋ฒ”์œ„ ๋ฐ– --- ## 2. ์‚ฌ์šฉ ํ”„๋กœํ•„ ์ˆ˜์ง‘ (PRD โ€” ์„ ํƒ ์ž…๋ ฅ) ์Šคํ‚ฌ ์‹œ์ž‘ ์‹œ ์‚ฌ์šฉ์ž์—๊ฒŒ **์„ ํƒ์ ์œผ๋กœ** ํ”„๋กœํ•„์„ ์งˆ๋ฌธํ•ฉ๋‹ˆ๋‹ค. **๋ชจ๋“  ํ•„๋“œ๋Š” ์˜๋ฌด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.** ### 2-1. ์งˆ๋ฌธ ํ…œํ”Œ๋ฆฟ (ํ•œ๊ตญ์–ด) ``` ๋ณด์ถฉ์ œ ๋ถ„์„์„ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋” ์ •ํ™•ํ•œ ๋ถ„์„์„ ์œ„ํ•ด ํ”„๋กœํ•„์„ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”. (๋ชจ๋‘ ์„ ํƒ์ž…๋‹ˆ๋‹ค โ€” ๊ฑด๋„ˆ๋›ฐ์–ด๋„ ๋ฉ๋‹ˆ๋‹ค) 1. **์„ฑ๋ณ„**: ์—ฌ์„ฑ / ๋‚จ์„ฑ / ๊ธฐํƒ€ยท๋ฏธ์ž…๋ ฅ 2. **๋‚˜์ด** (๋˜๋Š” ์‹ ์ฒด๋‚˜์ด): ์˜ˆ) 35 3. **ํ˜„์žฌ ์ฆ์ƒ/๋ชฉํ‘œ**: ์˜ˆ) ํ”ผ๋กœ, ์ˆ˜๋ฉด์˜ ์งˆ, ๋ฉด์—ญ, ๊ด€์ ˆ, ํŠน๋ณ„ ์—†์Œ 4. **์ž„์‹ ยท์ˆ˜์œ  ์—ฌ๋ถ€**: ํ•ด๋‹น / ํ•ด๋‹น ์—†์Œ 5. **๋ณต์šฉ ์ค‘์ธ ์ฒ˜๋ฐฉ์•ฝ**: ์˜ˆ) ๋ ˆ๋ณดํ‹ฐ๋ก์‹ , ์™€ํŒŒ๋ฆฐ, ์—†์Œ 6. **๊ธฐ์ €์งˆํ™˜** (์„ ํƒ): ์˜ˆ) ๊ฐ‘์ƒ์„ , ๊ณ ํ˜ˆ์••, ์—†์Œ ์ž…๋ ฅํ•˜์ง€ ์•Š์€ ํ•ญ๋ชฉ์€ "์ผ๋ฐ˜ ์„ฑ์ธ" ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด์–ด์„œ ๋ถ„์„ํ•  ์ œํ’ˆ์„ ์•Œ๋ ค์ฃผ์„ธ์š”: - ์ œํ’ˆ๋ช… (์˜ˆ: "์„ผํŠธ๋ฃธ ์‹ค๋ฒ„") - ์„ฑ๋ถ„ํ‘œ ์‚ฌ์ง„ ์—…๋กœ๋“œ - ์„ฑ๋ถ„ ๋ฆฌ์ŠคํŠธ ์ง์ ‘ ์ž…๋ ฅ (์˜ˆ: "๋น„ํƒ€๋ฏผ D 1000IU, ...") - **์—ฌ๋Ÿฌ ์ œํ’ˆ์„ ํ•œ๋ฒˆ์— ๋ถ„์„ํ•˜๋ ค๋ฉด ๋ชจ๋‘ ๋‚˜์—ดํ•˜๊ฑฐ๋‚˜ ์‚ฌ์ง„์„ ์—ฌ๋Ÿฌ ์žฅ ์˜ฌ๋ ค์ฃผ์„ธ์š”** ``` ### 2-1-A. ์ œํ’ˆ ์™„์ „์„ฑ ์žฌํ™•์ธ ๋ฃจํ”„ ์‚ฌ์šฉ์ž๊ฐ€ ์ œํ’ˆ ๋ชฉ๋ก์„ ์ œ์‹œํ•œ **์งํ›„**, ์•„๋ž˜ ํ™•์ธ ์งˆ๋ฌธ์„ **๋ฐ˜๋“œ์‹œ** ์‹คํ–‰ (์ƒ๋žต ๊ธˆ์ง€): ``` ํ™•์ธ: ํ˜„์žฌ ๋งค์ผ ๋“œ์‹œ๋Š” ๋ณด์ถฉ์ œ๋Š” ์•„๋ž˜ N๊ฐœ๊ฐ€ **์ „๋ถ€**์ธ๊ฐ€์š”? - [์ œํ’ˆ1] - [์ œํ’ˆ2] - [์ œํ’ˆ3] ํ˜น์‹œ ์•„๋ž˜ ์ค‘ ๋น ์ง„ ๊ฒŒ ์žˆ๋‹ค๋ฉด ์ง€๊ธˆ ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”: - ์˜ค๋ฉ”๊ฐ€3ยทํ”ผ์‰ฌ์˜ค์ผ - ๋น„ํƒ€๋ฏผD (๋‹จ๋… ์ œํ’ˆ, ์ข…ํ•ฉ๋น„ํƒ€๋ฏผ์— ํฌํ•จ๋œ ๊ฒƒ ์™ธ) - ํ”„๋กœ๋ฐ”์ด์˜คํ‹ฑ์Šคยท์œ ์‚ฐ๊ท  - ๋งˆ๊ทธ๋„ค์Š˜ยท์นผ์Š˜ยท์ฒ ๋ถ„ (๋‹จ๋…) - ๋ฃจํ…Œ์ธยท์•„์Šคํƒ€์ž”ํ‹ด ๋“ฑ ๋ˆˆ ๋ณด์กฐ์ œ - ์ฝœ๋ผ๊ฒยทํžˆ์•Œ๋ฃจ๋ก ์‚ฐ - ์ธ„์–ด๋ธ”ยท์ ค๋ฆฌ ํ˜•ํƒœ ๋ณด์ถฉ์ œ (์žŠ๊ธฐ ์‰ฌ์›€) - ์ฃผ 1-2ํšŒ๋งŒ ๋ณต์šฉํ•˜๋Š” ์ œํ’ˆ "์ด๊ฒŒ ์ „๋ถ€" ๋˜๋Š” ์ถ”๊ฐ€ ์ œํ’ˆ์„ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๋ถ„์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ``` **๊ทœ์น™**: - ์ด ๋ฃจํ”„๋ฅผ **๊ฑฐ์น˜์ง€ ์•Š๊ณ  Phase 2๋กœ ์ง„์ž…ํ•˜์ง€ ๋ง ๊ฒƒ** - ์‚ฌ์šฉ์ž๊ฐ€ "์ „๋ถ€"๋ผ๊ณ  ํ™•์ธํ•œ ํ›„์—๋งŒ ๋ถ„์„ ์‹œ์ž‘ - ๋ถ„์„ ์ค‘๊ฐ„์— ์‚ฌ์šฉ์ž๊ฐ€ "์•„, ์ด๊ฒƒ๋„ ๋จน์–ด" ํ•˜๊ณ  ์ถ”๊ฐ€ํ•˜๋ฉด Phase 1๋กœ ๋ณต๊ท€ํ•˜์—ฌ ์ฒ˜์Œ๋ถ€ํ„ฐ ์žฌ์‚ฐ์ถœ - ์‚ฌ์œ : ์ดˆํŒ ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ฒ ๋ถ„์„ "๋จน๋Š”๋‹ค"๊ณ  ํ–ˆ์œผ๋‚˜ ์‹ค์ œ๋กœ๋Š” ์•ˆ ๋จน์—ˆ๊ณ , ์˜ค๋ฉ”๊ฐ€3๋Š” ์ค‘๊ฐ„์— ์ถ”๊ฐ€๋˜๋Š” ๋“ฑ ๋ชฉ๋ก ๋ถ€์ •ํ™•์ด ๋นˆ๋ฒˆ ### 2-2. ์งˆ๋ฌธ ํ…œํ”Œ๋ฆฟ (`--en` ์˜์–ด ์˜ต์…˜) ``` Starting the supplement analysis. For more accurate results, please share your profile (all fields are optional โ€” you can skip). 1. **Gender**: female / male / other / skip 2. **Age** (or biological age): e.g., 35 3. **Current symptoms/goals**: e.g., fatigue, sleep, immunity, joint, none 4. **Pregnancy/breastfeeding**: yes / no 5. **Prescription medications**: e.g., levothyroxine, warfarin, none 6. **Underlying conditions** (optional): e.g., thyroid, hypertension, none Unspecified fields default to "general adult". Then, provide the supplement(s) to analyze: - Product name - Upload a photo of the Supplement Facts panel - Type the ingredient list directly - **For multi-product stack analysis, list all or upload multiple photos** ``` ### 2-3. ํ”„๋กœํ•„ ์ฒ˜๋ฆฌ ๊ทœ์น™ - **์˜์œ ์•„(<12์„ธ) ๋˜๋Š” ๋ฐ˜๋ ค๋™๋ฌผ** ๊ฐ์ง€ ์‹œ โ†’ ์ฆ‰์‹œ ยง6 ๊ฑฐ๋ถ€ ํ”„๋กœํ† ์ฝœ - **์ž„์‹ ยท์ˆ˜์œ ** ์‘๋‹ต "ํ•ด๋‹น" โ†’ ๋ฆฌํฌํŠธ ์ตœ์ƒ๋‹จ์— `references/disclaimer.md` ยง3-1 ๋ฐฐ๋„ˆ ๊ฐ•์ œ ์‚ฝ์ž… - **์ฒ˜๋ฐฉ์•ฝ** ๋น„์–ด์žˆ์ง€ ์•Š์Œ โ†’ ยง3-3 ๋ฐฐ๋„ˆ ์‚ฝ์ž…, ๊ฐ ๋ณด์ถฉ์ œ-์•ฝ๋ฌผ ์Œ์— ๋Œ€ํ•ด `references/interaction-patterns.md` ๋งค์นญ - ๋ชจ๋“  ํ•„๋“œ ๋ฏธ์ž…๋ ฅ โ†’ `profile_assumption: "์ผ๋ฐ˜ ์„ฑ์ธ (19-50์„ธ, ์—ฌ์„ฑ ๊ธฐ์ค€)"` ํ”Œ๋ž˜๊ทธ --- ## 3. ํŒŒ์ดํ”„๋ผ์ธ (Phase 0-A ~ 6) ``` Phase 0-A: API ์—ฐ๊ฒฐ ์ฒดํฌ (๋งค ์„ธ์…˜ ์ตœ์ดˆ 1ํšŒ โ€” ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰) โ”œโ”€ KFDA ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์กด์žฌ โ†’ ์ฆ‰์‹œ Phase 0 ์ง„์ž… โ”œโ”€ user-data/kfda-skip.json (foreign_only) ์กด์žฌ โ†’ ์ฆ‰์‹œ Phase 0 ์ง„์ž… โ””โ”€ ๋‘˜ ๋‹ค ์—†์Œ โ†’ API ์•ˆ๋‚ด ํ™”๋ฉด ์ถœ๋ ฅ โ†’ ์‚ฌ์šฉ์ž ์„ ํƒ (A/B/C) A. ์ง€๊ธˆ ์—ฐ๋™ โ†’ ๋ฐœ๊ธ‰ ๊ฐ€์ด๋“œ ๋‹จ๊ณ„๋ณ„ ์ถœ๋ ฅ โ†’ ํ‚ค ์ž…๋ ฅ ๋Œ€๊ธฐ โ†’ ~/.env ์„ค์ • ์•ˆ๋‚ด โ†’ Phase 0 B. ์ด๋ฒˆ๋งŒ ๊ฑด๋„ˆ๋›ฐ๊ธฐ โ†’ ์ €์žฅ ์—†์Œ (๋‹ค์Œ ์„ธ์…˜ ์žฌ์•ˆ๋‚ด) โ†’ Phase 0 (KFDA ๋ฏธ์—ฐ๋™ ๋ฐฐ๋„ˆ ํฌํ•จ) C. ์˜๊ตฌ ๊ฑด๋„ˆ๋›ฐ๊ธฐ โ†’ user-data/kfda-skip.json ์ƒ์„ฑ โ†’ Phase 0 (๋ฐฐ๋„ˆ ์—†์Œ) Phase 0: ํ”„๋กœํ•„ ๊ฒฐ์ • โ””โ”€ prompts/detect-profile.md โ†’ profile_id ํ™•์ • โ””โ”€ user-data/profiles/{id}.json ๋กœ๋“œ or ์‹ ๊ทœ ์ƒ์„ฑ Phase 0.5: ์ธํ…ํŠธ ๋ผ์šฐํŒ… โ””โ”€ prompts/detect-intent.md โ†’ mode ๋ถ„๋ฅ˜ โ”œโ”€ quick_check โ†’ Phase 1ยท3๋งŒ ์ถ•์•ฝ ์‹คํ–‰ โ†’ 1~2 ๋ฌธ๋‹จ ๋‹ต๋ณ€ โ”œโ”€ quick_replace โ†’ Phase 1ยท5๋งŒ ์ถ•์•ฝ ์‹คํ–‰ โ†’ ๋Œ€์ฒดํ›„๋ณด ํ‘œ โ””โ”€ full_analysis โ†’ Phase 1~6 ์ „์ฒด ์‹คํ–‰ (์•„๋ž˜) โ†“ Phase 1: ์ž…๋ ฅ ์ˆ˜์‹  + ์ด๋ฏธ์ง€ ํŒ๋… + ์ œํ’ˆ DB ์กฐํšŒ โ”œโ”€ ๋ผ๋ฒจ ์‚ฌ์ง„ (์ตœ์šฐ์„ ) โ”œโ”€ user-data/products/ DB ์žฌ์‚ฌ์šฉ (365์ผ ์ด๋‚ด) โ”œโ”€ ํ…์ŠคํŠธ ์ž…๋ ฅ โ†’ ์ง์ ‘ ํŒŒ์‹ฑ โ”œโ”€ ์ด๋ฏธ์ง€ โ†’ prompts/parse-image.md โ†’ JSON โ””โ”€ ์ œํ’ˆ๋ช…๋งŒ โ†’ Fallback Chain (ยง4-1-3) โ†“ Phase 2: ์ •๊ทœํ™” โ””โ”€ prompts/analyze-ingredient.md ยง2 โ†’ canonical_name ๋งคํ•‘ โ””โ”€ prompts/analyze-ingredient.md ยง3 โ†’ ๋‹จ์œ„ ํ‘œ์ค€ํ™” (IUโ†’mcg ๋“ฑ) โ†“ Phase 3: ์Šคํƒ ํ•ฉ์‚ฐ + RDA/UL + ์ค‘๋ณต + deficiency_gap[] โ””โ”€ prompts/analyze-ingredient.md ยง4 / ยง5 / ยง6 / ยง4.5 (๋ถ€์กฑ) โ†“ Phase 4: ์ƒํ˜ธ์ž‘์šฉ + ๊ทผ๊ฑฐ URL ์กฐํšŒ โ””โ”€ prompts/analyze-ingredient.md ยง7 / ยง8 โ†“ Phase 5: ๋Œ€์ฒด์ œํ’ˆ ์กฐํšŒ (๊ตญ๋‚ด 5 + ํ•ด์™ธ 3, ํก์ˆ˜์œจ ๋ฐ˜์˜) โ””โ”€ references/search-templates.md ยง10-2 + bioavailability-table.md โ””โ”€ ์ฟ ํŒก/๋„ค์ด๋ฒ„ = ๊ฐ€๊ฒฉ๋งŒ / iHerb = ๊ฐ€๊ฒฉ+๋ฆฌ๋ทฐ โ†“ Phase 6: ๋ฆฌํฌํŠธ ์ƒ์„ฑ + ์ž๋™ ์ €์žฅ (ํ”„๋กœํ•„๋ณ„ ๋””๋ ‰ํ† ๋ฆฌ) โ””โ”€ prompts/report-template.md + references/disclaimer.md ยง1/ยง2 โ””โ”€ user-data/stacks/{profile_id}_latest.json (์›๋ณธ ๋ฐฑ์—…) โ””โ”€ user-data/reports/{profile_id}/YYYY-MM-DD_HHMM_analysis.md โ””โ”€ user-data/reports/{profile_id}/latest.md (symlink) ``` **๋ชจ๋“œ๋ณ„ ์‹คํ–‰ ๋ฒ”์œ„**: | ๋ชจ๋“œ | Phase 0-A | Phase 0 | 0.5 | 1 | 2 | 3 | 4 | 5 | 6 | ๋ฆฌํฌํŠธ ์ €์žฅ | |------|----------|---------|-----|---|---|---|---|---|---|------------| | quick_check | โœ… ํ•„์ˆ˜ | โœ… | โœ… | ์ถ•์•ฝ | โœ… | ์„ ํƒ ํ•ญ๋ชฉ๋งŒ | ์„ ํƒ ํ•ญ๋ชฉ๋งŒ | โŒ | ์ถ•์•ฝ | โŒ | | quick_replace | โœ… ํ•„์ˆ˜ | โœ… | โœ… | 1์ œํ’ˆ๋งŒ | โœ… | ํ•ด๋‹น ์„ฑ๋ถ„๋งŒ | โŒ | โœ… | ์ถ•์•ฝ | ์„ ํƒ | | full_analysis | โœ… ํ•„์ˆ˜ | โœ… | โœ… | ์ „์ฒด | โœ… | ์ „์ฒด | โœ… | โœ… | ์ „์ฒด | โœ… | --- ## 4. Phase๋ณ„ ์ƒ์„ธ ### Phase 0-A โ€” API ์—ฐ๊ฒฐ ์ฒดํฌ (๋งค ์„ธ์…˜ ์ตœ์ดˆ 1ํšŒ) **๋ชจ๋“  ๋ชจ๋“œ์—์„œ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰.** Phase 0๋ณด๋‹ค ์„ ํ–‰. #### ํŒ๋‹จ ์ˆœ์„œ ``` 1. KFDA_HTFS_KEY + KFDA_FOODSAFETY_KEY ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์กด์žฌ? โ†’ YES: ์ฆ‰์‹œ Phase 0 ์ง„์ž… (์ด Phase ์ข…๋ฃŒ) 2. user-data/kfda-skip.json ์กด์žฌ + reason == "foreign_only"? โ†’ YES: ์ฆ‰์‹œ Phase 0 ์ง„์ž… (์ด Phase ์ข…๋ฃŒ) 3. ๋‘˜ ๋‹ค ์•„๋‹ˆ๋ฉด: ์•„๋ž˜ ์•ˆ๋‚ด ํ™”๋ฉด ์ถœ๋ ฅ โ†’ ์„ ํƒ ๋Œ€๊ธฐ ``` #### ์•ˆ๋‚ด ํ™”๋ฉด (์ถœ๋ ฅ ํ…œํ”Œ๋ฆฟ) ``` โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” โš ๏ธ ์‹์•ฝ์ฒ˜ API ๋ฏธ์—ฐ๋™ โ€” ํ•œ๊ตญ ์ œํ’ˆ ์ •ํ™•๋„ ์ œํ•œ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” ์ด ์Šคํ‚ฌ์€ ์‹์•ฝ์ฒ˜ Open API ์—ฐ๋™์„ ๊ธฐ๋ณธ์œผ๋กœ ์„ค๊ณ„๋์Šต๋‹ˆ๋‹ค. API ์—†์ด๋„ ๋™์ž‘ํ•˜์ง€๋งŒ, ํ•œ๊ตญ ์ œํ’ˆ(๋น„๋งฅ์Šคยท์•„๋กœ๋‚˜๋ฏผยท์„ผํŠธ๋ฃธ ๋“ฑ)์˜ ์„ฑ๋ถ„ยทํ•จ๋Ÿ‰ ์ •ํ™•๋„๊ฐ€ ํฌ๊ฒŒ ๋‚ฎ์•„์ง‘๋‹ˆ๋‹ค. ํ•ญ๋ชฉ | API ์—†์Œ | API ์žˆ์Œ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€|โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€|โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ํ•œ๊ตญ ์ œํ’ˆ ์„ฑ๋ถ„ | โ˜…โ˜…โ˜†โ˜†โ˜† (์›น ๊ฒ€์ƒ‰) | โ˜…โ˜…โ˜…โ˜…โ˜… (์‹์•ฝ์ฒ˜ ๊ณต์‹ DB) ์„ฑ๋ถ„ ํ•จ๋Ÿ‰ ์ •ํ™•๋„ | ๋‚ฎ์Œ | ๋†’์Œ ์˜์•ฝํ’ˆ/๊ฑด๊ธฐ์‹ ๊ตฌ๋ถ„ | ์–ด๋ ค์›€ | ์ž๋™ ๊ตฌ๋ถ„ ์„ ํƒํ•ด ์ฃผ์„ธ์š”: A. ์ง€๊ธˆ ์—ฐ๋™ํ•˜๊ธฐ (API ํ‚ค ๋ฐœ๊ธ‰, ์•ฝ 5๋ถ„ โ€” ์Šน์ธ๊นŒ์ง€ ์ตœ๋Œ€ 2์‹œ๊ฐ„) B. ์ด๋ฒˆ๋งŒ ๊ฑด๋„ˆ๋›ฐ๊ธฐ (๋‹ค์Œ ์„ธ์…˜์— ๋‹ค์‹œ ์•ˆ๋‚ด) C. ๊ณ„์† ๊ฑด๋„ˆ๋›ฐ๊ธฐ (์™ธ๊ตญ ๋ณด์ถฉ์ œ๋งŒ ๋ถ„์„) โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” ``` #### ์„ ํƒ๋ณ„ ์ฒ˜๋ฆฌ **A โ€” ์ง€๊ธˆ ์—ฐ๋™:** ์•„๋ž˜ ๊ฐ€์ด๋“œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๊ณ , ํ‚ค ์ž…๋ ฅ์„ ๊ธฐ๋‹ค๋ฆฐ ํ›„ Phase 0 ์ง„์ž…. ``` [์‹์•ฝ์ฒ˜ API ์—ฐ๋™ ๊ฐ€์ด๋“œ] Step 1. ๊ฑด๊ฐ•๊ธฐ๋Šฅ์‹ํ’ˆ API ํ‚ค ๋ฐœ๊ธ‰ (KFDA_FOODSAFETY_KEY) 1) https://openapi.foodsafetykorea.go.kr ํšŒ์›๊ฐ€์ž… 2) C003 / I0030 / I2710 ๊ฐ๊ฐ ํ™œ์šฉ์‹ ์ฒญ 3) ๋ฐœ๊ธ‰๋œ ํ‚ค ๋ณต์‚ฌ Step 2. ์˜์•ฝํ’ˆ API ํ‚ค ๋ฐœ๊ธ‰ (KFDA_HTFS_KEY) 1) https://data.go.kr ํšŒ์›๊ฐ€์ž… 2) "์‹ํ’ˆ์˜์•ฝํ’ˆ์•ˆ์ „์ฒ˜_์˜์•ฝํ’ˆ๊ฐœ์š”์ •๋ณด" ๊ฒ€์ƒ‰ โ†’ ํ™œ์šฉ์‹ ์ฒญ 3) Encoding ํƒญ์˜ URL-encoded ํ‚ค ๋ณต์‚ฌ (%2Fยท%2B ํฌํ•จ) โš ๏ธ ์Šน์ธ๊นŒ์ง€ ์ตœ๋Œ€ 2์‹œ๊ฐ„ ์†Œ์š”. ์Šน์ธ ํ›„ ์•„๋ž˜ ์ž…๋ ฅ. Step 3. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋“ฑ๋ก (~/.env ๋˜๋Š” claude_desktop_config.json) KFDA_FOODSAFETY_KEY=๋ฐœ๊ธ‰๋ฐ›์€_ํ‚ค KFDA_HTFS_KEY=๋ฐœ๊ธ‰๋ฐ›์€_ํ‚ค ํ‚ค๋ฅผ ๋ฐ›์œผ์…จ์œผ๋ฉด "๋“ฑ๋ก ์™„๋ฃŒ"๋ผ๊ณ  ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”. (์ง€๊ธˆ ๋‹น์žฅ ๋ฐœ๊ธ‰์ด ์–ด๋ ค์šฐ๋ฉด 'B'๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ด๋ฒˆ๋งŒ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค) ``` ์‚ฌ์šฉ์ž๊ฐ€ "๋“ฑ๋ก ์™„๋ฃŒ" ์ž…๋ ฅ ์‹œ โ†’ Phase 0 ์ง„์ž… (ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” ์žฌ์‹œ์ž‘ ํ›„ ์ ์šฉ๋จ์„ ์•ˆ๋‚ด). **B โ€” ์ด๋ฒˆ๋งŒ ๊ฑด๋„ˆ๋›ฐ๊ธฐ:** - `user-data/kfda-skip.json` **์ €์žฅํ•˜์ง€ ์•Š์Œ** (๋‹ค์Œ ์„ธ์…˜ ์žฌ์•ˆ๋‚ด ๋ณด์žฅ) - Phase 0 ์ง„์ž…. ๋ฆฌํฌํŠธ ์ƒ๋‹จ์— KFDA ๋ฏธ์—ฐ๋™ ๋ฐฐ๋„ˆ 1ํšŒ ์‚ฝ์ž…. **C โ€” ์˜๊ตฌ ๊ฑด๋„ˆ๋›ฐ๊ธฐ (์™ธ๊ตญ ์ œํ’ˆ ์ „์šฉ):** - `user-data/kfda-skip.json` ์ƒ์„ฑ: ```json { "reason": "foreign_only", "skipped_at": "YYYY-MM-DD" } ``` - Phase 0 ์ง„์ž…. ์ดํ›„ ์„ธ์…˜์—์„œ ์ด Phase ์žฌ์‹คํ–‰ ์•ˆ ํ•จ. #### ๊ทœ์น™ - ์ด Phase๋Š” **์„ธ์…˜ ๋‚ด 1ํšŒ๋งŒ** ์‹คํ–‰ (๊ฐ™์€ ์„ธ์…˜์—์„œ ๋‘ ๋ฒˆ์งธ ์ฟผ๋ฆฌ๋ถ€ํ„ฐ๋Š” ์Šคํ‚ต) - ์‚ฌ์šฉ์ž๊ฐ€ ๋จผ์ € ๋ณด์ถฉ์ œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด๋„ **์ด Phase๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ•œ ๋’ค** ๋ถ„์„ ์‹œ์ž‘ - "๋‚˜์ค‘์—", "๋ฌด์‹œ", "๊ดœ์ฐฎ์•„" ๊ฐ™์€ ์šฐํšŒ ํ‘œํ˜„ โ†’ B ์„ ํƒ์œผ๋กœ ์ฒ˜๋ฆฌ (์ €์žฅ ์—†์Œ) --- ### Phase 0 โ€” ํ”„๋กœํ•„ ๊ฒฐ์ • ๋ชจ๋“  ์‚ฌ์šฉ์ž ๋ฐœํ™”์— ๋Œ€ํ•ด **๊ฐ€์žฅ ๋จผ์ €** ์‹คํ–‰. ๋ถ„์„ ๋Œ€์ƒ ํ”„๋กœํ•„์„ ํ™•์ •. 1. `user-data/profiles/_index.json` ์ฝ๊ธฐ (์—†์œผ๋ฉด ๋นˆ ์ธ๋ฑ์Šค ์ƒ์„ฑ) 2. `prompts/detect-profile.md` ํ”„๋กฌํ”„ํŠธ๋กœ ๋ฐœํ™” ๋ถ„๋ฅ˜ โ†’ `decision` ์ˆ˜์‹  3. `decision` ๋ณ„ ์ฒ˜๋ฆฌ: | decision | ์ฒ˜๋ฆฌ | |----------|------| | `match` | `profiles/{id}.json` + `stacks/{id}_latest.json` ๋กœ๋“œ, "์ง€๋‚œ๋ฒˆ OO ๋“œ์‹œ๋˜ '{display_name}' ๋งž์œผ์‹ ๊ฐ€์š”?" 1ํšŒ ํ™•์ธ (์„ธ์…˜ ๋‚ด 2๋ถ„ ์ด๋‚ด ์žฌ์ฐธ์กฐ๋Š” ์ƒ๋žต) | | `default` | `default_profile_id` ์‚ฌ์šฉ. ์ฒซ ๋ฐฉ๋ฌธ์ด๋ฉด `display_name`์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์งˆ๋ฌธ ํ›„ ์‹ ๊ทœ ์ƒ์„ฑ | | `needs_new_profile` | ํ”„๋กœํ•„๋ช… ์งˆ๋ฌธ โ†’ slug ๋ณ€ํ™˜ โ†’ `_index.json` ์ถ”๊ฐ€ + `{id}.json` ์‹ ๊ทœ (demographics๋Š” Phase 1์—์„œ) | | `ambiguous` | ํ›„๋ณด ๋ชฉ๋ก ์ œ์‹œ, ์‚ฌ์šฉ์ž ์„ ํƒ ํ›„ ์žฌ์ง„์ž… | | `reject_scope` | ์˜์œ ์•„ยท๋ฐ˜๋ ค๋™๋ฌผ ๊ฑฐ๋ถ€ ๋ฌธ๊ตฌ ์ถœ๋ ฅ ํ›„ ์ข…๋ฃŒ (ยง6 ๊ฑฐ๋ถ€ ํ”„๋กœํ† ์ฝœ๊ณผ ๋™์ผ) | **ํ”„๋ผ์ด๋ฒ„์‹œ ์›์น™**: profile JSON์€ ๋กœ์ปฌ์—๋งŒ ์ €์žฅ. WebSearch ์ฟผ๋ฆฌ์—๋Š” ๋น„์‹๋ณ„ ์ •๋ณด๋งŒ ์‚ฌ์šฉ (์˜ˆ: ์—ฐ๋ น๋Œ€ยท์„ฑ๋ณ„ยท์ผ๋ฐ˜ ์ฆ์ƒ ํ‚ค์›Œ๋“œ). **์Šคํ‚ค๋งˆ**: `references/user-data-schema.md` ์ฐธ์กฐ. --- ### Phase 0.5 โ€” ์ธํ…ํŠธ ๋ผ์šฐํŒ… Phase 0 ์งํ›„ ์‹คํ–‰. ์‚ฌ์šฉ์ž ๋ฐœํ™”์˜ ๊นŠ์ด์— ๋งž๋Š” ๋ชจ๋“œ๋ฅผ ์„ ํƒ. 1. `prompts/detect-intent.md` ํ”„๋กฌํ”„ํŠธ ์‹คํ–‰ โ†’ `mode`, `target`, `suggestion_message` ์ˆ˜์‹  2. ๋ชจ๋“œ๋ณ„ ๋ถ„๊ธฐ: | mode | ๋‹ค์Œ ๋‹จ๊ณ„ | |------|----------| | `quick_check` | Phase 1ยท3 ์ถ•์•ฝ ์ง„์ž…. `target.ingredient_ids`๋งŒ RDA/UL ์กฐํšŒ. ๋‹ต๋ณ€ ๋ง๋ฏธ์— `suggestion_message` 1๋ฌธ์žฅ | | `quick_replace` | Phase 1ยท5 ์ถ•์•ฝ ์ง„์ž…. `target.product_keys[0]`์˜ ํ•ต์‹ฌ ์„ฑ๋ถ„ ์ค‘์‹ฌ ๋Œ€์ฒดํ›„๋ณด 5+3. `suggestion_message`๋กœ ํ’€ ๋ถ„์„ ์ œ์•ˆ | | `full_analysis` | ๊ธฐ์กด Phase 1~6 ์ „์ฒด ์‹คํ–‰. `suggestion_message` = null | **ํ•ต์‹ฌ ์›์น™ (CLAUDE.md ยง2-1 + L10 ๊ตํ›ˆ)**: - ํ’€ ๋ถ„์„์„ **๊ฐ•์ œ ์œ ๋„ํ•˜์ง€ ์•Š์Œ**. ์ œ์•ˆ๋งŒ. - ๋ชจํ˜ธํ•  ๋•Œ ๋ผ์ดํŠธ ๋ชจ๋“œ ํŽธํ–ฅ (`quick_check` ์šฐ์„ ) - ํ’€ ๋ถ„์„ ์งํ›„ 10๋ถ„ ์ด๋‚ด ๊ฐ™์€ ํ”„๋กœํ•„ ์งˆ๋ฌธ์€ `escalation_allowed: false` โ†’ ์ œ์•ˆ ์ƒ๋žต --- ### Phase 1 โ€” ์ž…๋ ฅ ์ˆ˜์‹  #### 4-1-1. ํ…์ŠคํŠธ ์ž…๋ ฅ ์‚ฌ์šฉ์ž๊ฐ€ ์„ฑ๋ถ„ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ…์ŠคํŠธ๋กœ ์ž…๋ ฅํ•˜๋ฉด ๊ทธ๋Œ€๋กœ `ingredients[]` ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜: ``` "๋น„ํƒ€๋ฏผ D 1000IU, ์นผ์Š˜ 500mg, ๋งˆ๊ทธ๋„ค์Š˜ 200mg" โ†’ [{ raw_name: "๋น„ํƒ€๋ฏผ D", amount: 1000, unit: "IU" }, ...] ``` #### 4-1-2. ์ด๋ฏธ์ง€ ์ž…๋ ฅ - `prompts/parse-image.md` ํ”„๋กฌํ”„ํŠธ๋กœ Claude native vision ํ˜ธ์ถœ - JSON ์ถœ๋ ฅ ์ˆ˜์‹  โ†’ `overall_confidence` ํ™•์ธ - `medium`/`low` ๋˜๋Š” `partial` โ†’ ยง4-1-2-a ์žฌํ™•์ธ ํ”Œ๋กœ์šฐ ##### 4-1-2-a. ์žฌํ™•์ธ ํ”Œ๋กœ์šฐ `requires_user_confirmation: true` ์‹œ: ``` ์„ฑ๋ถ„ํ‘œ ์ด๋ฏธ์ง€ ์ผ๋ถ€๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํŒ๋…ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆ๋ช…ํ™•ํ•œ ํ•ญ๋ชฉ: [unclear_fields ๋ฆฌ์ŠคํŠธ] ์ „์ฒด ์‹ ๋ขฐ๋„: [overall_confidence] ๋‹ค์Œ ์ค‘ ์„ ํƒํ•ด ์ฃผ์„ธ์š”: 1. ๋” ์„ ๋ช…ํ•œ ์‚ฌ์ง„์„ ๋‹ค์‹œ ์—…๋กœ๋“œ (์ •๋ฉด, ๋ฐ์€ ์กฐ๋ช… ๊ถŒ์žฅ) 2. ์„ฑ๋ถ„์„ ์ง์ ‘ ํ…์ŠคํŠธ๋กœ ์ž…๋ ฅ 3. ํ˜„์žฌ ํŒ๋…๋œ ๋ถ€๋ถ„๋งŒ์œผ๋กœ ๋ถ„์„ ์ง„ํ–‰ (์ผ๋ถ€ ์„ฑ๋ถ„ ๋ˆ„๋ฝ ๊ฐ€๋Šฅ, ๊ถŒ์žฅ X) ``` #### 4-1-3. ์ œํ’ˆ๋ช…๋งŒ ์ž…๋ ฅ โ€” Fallback Chain v3.1 (KFDA ๊ฑด๊ธฐ์‹ + ์˜์•ฝํ’ˆ ํ†ตํ•ฉ + ํ•จ๋Ÿ‰ ์Šคํฌ๋ž˜ํ•‘) **ํ•ต์‹ฌ ์›์น™ (2026-04-18 v3.1 โ€” nedrug ์ƒ์„ธ ์Šคํฌ๋ž˜ํ•‘ ํ†ตํ•ฉ)**: - ํ•œ๊ตญ ์ œํ’ˆ โ†’ **์‹์•ฝ์ฒ˜ Open API๊ฐ€ 1์ฐจ ๊ทผ๊ฑฐ** (๊ฑด๊ธฐ์‹ C003 โ†’ ์˜์•ฝํ’ˆ ํ—ˆ๊ฐ€์ •๋ณด ์ˆœ์ฐจ ์กฐํšŒ) - ๊ฑด๊ธฐ์‹ 0๊ฑด โ‰  "๋ชจ๋ฅธ๋‹ค". **์ž๋™์œผ๋กœ ์˜์•ฝํ’ˆ API ํด๋ฐฑ** (OTC ์ข…ํ•ฉ๋น„ํƒ€๋ฏผ์ด ๊ฑด๊ธฐ์‹์ด ์•„๋‹Œ ์˜์•ฝํ’ˆ์ธ ๊ฒฝ์šฐ ๋งŽ์Œ โ€” ๋น„๋งฅ์Šคยท์•„๋กœ๋‚˜๋ฏผยท์„ผํŠธ๋ฃธ ๋“ฑ) - **์˜์•ฝํ’ˆ์€ Open API๋งŒ์œผ๋กœ ํ•จ๋Ÿ‰ ํ™•๋ณด ๋ถˆ๊ฐ€** (ํ—ˆ๊ฐ€์ •๋ณด API๋Š” ์„ฑ๋ถ„๋ช…๋งŒ ์ œ๊ณต). ITEM_SEQ ํ™•๋ณด ํ›„ **nedrug ์ƒ์„ธ ํŽ˜์ด์ง€ "์›๋ฃŒ์•ฝํ’ˆ ๋ฐ ๋ถ„๋Ÿ‰" ํ…Œ์ด๋ธ”์„ ํ•„์ˆ˜ ํŒŒ์‹ฑ** โ†’ ์ง„์งœ ํ•จ๋Ÿ‰(mg/IU/ยตg)ยท๊ทœ๊ฒฉ(KP/USP/EP/๋ณ„๊ทœ)ยทํ™˜์‚ฐ๊ฐ’(์œผ๋กœ์„œ X mg) ํ™•๋ณด - ๋ผ๋ฒจ ์‚ฌ์ง„ ์—…๋กœ๋“œ ์‹œ โ†’ OCR + ์ ์ ˆํ•œ API ๊ต์ฐจ๊ฒ€์ฆ (**๋ผ๋ฒจ ๊ฐ’์ด ground truth**) - ํ•ด์™ธ ์ œํ’ˆ์€ ์‹์•ฝ์ฒ˜ ๋ฏธ๋“ฑ๋ก โ†’ Perplexity/๊ณต์‹๋ชฐ/iHerb ์ฒด์ธ์œผ๋กœ ํด๋ฐฑ - ์ „์ฒด ๊ทœ์น™: `references/kfda-htfs-api.md` (๊ฑด๊ธฐ์‹), `references/kfda-drug-api.md` (์˜์•ฝํ’ˆ API + ยง9 nedrug ์Šคํฌ๋ž˜ํ•‘) ``` Step A: ์‚ฌ์šฉ์ž ๋ผ๋ฒจ ์‚ฌ์ง„ ์š”์ฒญ (ํ•ญ์ƒ 1์ˆœ์œ„ ์งˆ๋ฌธ) - "๋ผ๋ฒจ ์‚ฌ์ง„ ์žˆ์œผ๋ฉด ํ›จ์”ฌ ์ •ํ™•ํ•ด์š”. ์žˆ์œผ์‹œ๋ฉด ์˜ฌ๋ ค์ฃผ์„ธ์š”." - ์‚ฌ์ง„ ์ œ๊ณต ์‹œ โ†’ prompts/parse-image.md๋กœ JSON ์ถ”์ถœ + ๋ผ๋ฒจ์˜ "์˜์•ฝํ’ˆ/๊ฑด๊ฐ•๊ธฐ๋Šฅ์‹ํ’ˆ" ํ‘œ๊ธฐ ๊ฐ์ง€ โ†’ Step B-KFDA๋กœ ๊ต์ฐจ๊ฒ€์ฆ โ†’ Step X - ์—†์œผ๋ฉด Step B๋กœ Step B: user-data/ DB ์žฌ์‚ฌ์šฉ - ๊ฑด๊ธฐ์‹: user-data/products/{key}.json - ์˜์•ฝํ’ˆ: user-data/drugs/{item_seq}.json - verified_at 365์ผ ์ด๋‚ด + confidence โ‰ฅ medium์ด๋ฉด ์žฌ์‚ฌ์šฉ - DB hit ์‹œ โ†’ Step X๋กœ (๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ 0๊ฑด) Step C: โ˜… ์‹์•ฝ์ฒ˜ C003 API (๊ฑด๊ฐ•๊ธฐ๋Šฅ์‹ํ’ˆ 1์ฐจ ๊ทผ๊ฑฐ) - ์กฐ๊ฑด: env KFDA_FOODSAFETY_KEY ์„ค์ •๋จ - ์—”๋“œํฌ์ธํŠธ: GET http://openapi.foodsafetykorea.go.kr/api/{KEY}/C003/json/1/10/PRDLST_NM={์ œํ’ˆ๋ช…} - ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ (kfda-htfs-api.md ยง4-4): * 1๊ฑด โ†’ ํ™•์ • โ†’ prompts/parse-kfda-response.md โ†’ Step X * 2~5๊ฑด โ†’ ๋ฆฌ์ŠคํŠธ ์ œ์‹œ + ์‚ฌ์šฉ์ž ์„ ํƒ * 6๊ฑด+ โ†’ ์ขํžˆ๊ธฐ ์งˆ๋ฌธ (์ œ์กฐ์‚ฌ โ†’ ์ œํ˜• โ†’ ํ•จ๋Ÿ‰ โ†’ ๊ตฌ๋งค์‹œ๊ธฐ ์ˆœ) * 0๊ฑด โ†’ โ˜… Step C2๋กœ (๊ฑด๊ธฐ์‹ ๋ฏธ๋“ฑ๋ก = ์˜์•ฝํ’ˆ ๊ฐ€๋Šฅ์„ฑ) Step C2-a: โ˜… ์‹์•ฝ์ฒ˜ ์˜์•ฝํ’ˆ Open API (์ผ๋ฐ˜์˜์•ฝํ’ˆ/์ „๋ฌธ์˜์•ฝํ’ˆ ํด๋ฐฑ) [v3 ์‹ ๊ทœ, v3.1 ์žฌ๊ตฌ์„ฑ] - ์กฐ๊ฑด: env KFDA_HTFS_KEY ์„ค์ •๋จ (๋˜๋Š” KFDA_DRUG_KEY) - ์—”๋“œํฌ์ธํŠธ ์ˆœ์ฐจ:
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub