1 stock code → full company story
Korean DART + US SEC EDGAR filings, structured. 2,700+ KR / 970+ US companies, one line of Python.
종목코드 하나. 기업의 전체 이야기. — DART·EDGAR 공시를 읽고 비교한다.
문서 · 블로그 · 라이브 데모 · Colab에서 열기 · Molab에서 열기 · English · 후원
숫자를 나열하면 대시보드가 되지만, 숫자의 인과를 연결하면 스토리가 된다. DartLab은 그 스토리를 읽는 두 가지 방법을 제공한다.
사람이 직접 읽는다 — 종목코드 하나로 재무제표, 공시, 비율을 꺼내고, 6막 인과 구조로 "왜 이 회사의 마진이 이 수준인가"를 추적한다. 코드 한 줄이면 데이터가 나오고, 그 데이터가 이야기를 만든다.
AI가 읽어준다 — 같은 도구를 AI가 조합해서 질문에 맞는 분석 흐름을 스스로 설계하고, 코드와 결과를 투명하게 보여준다. 사용자는 답만 얻는 게 아니라 분석 방법을 배운다.
두 경로 모두 같은 엔진 위에서 동작한다.
삼성전자의 "매출액"을 5년간 비교하려고 한 적 있는가?
DART에서 사업보고서를 열면 같은 숫자가 ifrs-full_Revenue, dart_Revenue, 매출액, 영업수익 네 가지 이름으로 나온다. 작년과 올해의 목차 구조가 다르다. SK하이닉스와 비교하려면 같은 작업을 처음부터 다시 해야 한다.
진짜 문제는 데이터가 없는 게 아니다. 같은 데이터가 너무 많은 이름으로 존재하는 것이다.
DartLab은 하나의 전제 위에 서 있다: 모든 기간은 비교 가능해야 하고, 모든 회사는 비교 가능해야 한다. 공시 섹션을 토픽-기간 그리드로 정규화하고(~95% 매핑율), XBRL 계정을 표준 이름으로 통일한다(~97% 매핑율) — 양식이 아니라 기업을 비교한다.
uv add dartlabimport dartlab
c = dartlab.Company("005930") # 삼성전자
c.sections # 모든 topic, 모든 기간, 나란히
# shape: (41, 12) — 41개 토픽 × 12개 기간
# 2025Q4 2024Q4 2024Q3 2023Q4 ...
# companyOverview v v v v
# businessOverview v v v v
# riskManagement v v v v텍스트와 숫자의 시계열 수평화 — 전 기간 비교 가능성의 핵심
![]()
c.show("IS") # 손익계산서 — 분기가 기본분기별 재무제표가 기본 — snakeId + 한글 항목명 동시 제공
![]()
c.show("IS", freq="Y") # freq="Y"로 연간 합산같은 데이터, 연간으로 — 4분기 합산 자동 처리
![]()
c.show("businessOverview") # 이 회사가 실제로 뭘 하는지
c.diff("businessOverview") # 작년 대비 뭐가 바뀌었는지
c.show("ratios") # 재무비율, 이미 계산됨
c.filings() # 모든 보고서 — DART 뷰어로 바로 연결사업보고서부터 분기보고서까지, dartUrl로 원문 즉시 확인
![]()
# 같은 인터페이스, 다른 나라
us = dartlab.Company("AAPL")
us.show("business")
us.show("ratios")
# 자연어로 질문
dartlab.ask("삼성전자 재무건전성 분석해줘")
# → AI가 코드를 실행하며 분석: "영업이익률이 8.6%→21.4%로 반등..."API 키 불필요. HuggingFace에서 자동 다운로드, 로컬 캐시로 즉시 로드.
Company가 종목코드 하나로 데이터를 준비하면, 세 겹이 분석한다.
- 분석 엔진 — 숫자를 만든다. 마진 추이, 현금흐름 패턴, 부도 확률, 업종 비교, 매크로 사이클. 해석하지 않는다. 숫자와 근거만 제공한다.
- review — 엔진 데이터를 블록 단위로 조합하여 보고서를 만든다. 11가지 보고서 타입 × 7가지 기업유형 템플릿. 해석은 제공하지 않는다. 다양한 관점의 근거를 체계적으로 배치한다.
- AI — 엔진을 직접 쓰고 판단한다. 결과를 의심하고, 원본으로 검증하고, 이상하면 가정을 바꿔서 재계산한다. dartlab을 대표하는 적극적 분석가.
하나의 호출 계약. dartlab.엔진() 으로 가이드 보고 dartlab.엔진("축") 으로 실행.
처음이라면?
Company→Review→Ask순서로. 종목코드로 데이터를 보고, 보고서를 만들고, AI에게 물어본다.
| 레이어 | 엔진 | 하는 일 | 진입점 | 노트북 |
|---|---|---|---|---|
| Data | Data | HuggingFace 사전 구축, 자동 다운로드 | Company("005930") |
— |
| L0/L1 | Company | 공시 + 재무제표 + 정형 데이터를 종목코드 하나로 통합 | c.show(), c.select() |
|
| L1 | Gather | 외부 시장 데이터 (주가/수급/매크로/뉴스) | dartlab.gather() |
|
| L1.5 | Scan | 전 종목 사전 빌드 (거버넌스/비율/현금흐름 등 parquet) | dartlab.scan() |
|
| L2 | Analysis | 재무 심층 분석 (수익성/안정성/현금흐름) + 가치평가 + 전망 | c.analysis("financial", "수익성") |
|
| L2 | Quant | 가격 기반 정량 신호 (기술/리스크/팩터/백테스트) | c.quant() |
|
| L2 | Credit | 독립 신용평가 (dCR 등급, 부도확률, 건전도) | c.credit("등급") |
|
| L2 | Macro | 시장 레벨 매크로 (사이클/금리/유동성/심리/자산 + 시나리오 110) | dartlab.macro("사이클") |
|
| L3 | Review | 보고서 빌더 — 5엔진 블록 조합, 11 타입 × 7 템플릿 (해석 안 함) | c.review("수익성") |
|
| L4 | AI | 적극적 분석가 — 엔진 직접 호출 + 주관적 판단 + 원본 검증 (사람도 L4) | dartlab.ask() |
|
| L4 | Channel | 외부 공유 — dartlab channel 한 줄로 폰에서 PC dartlab 사용 |
dartlab channel |
— |
| core | Search | 공시 시맨틱 검색 (alpha) | dartlab.search() |
|
| facade | Listing | 종목/공시/topic 카탈로그 API | dartlab.listing() |
|
| viz | Viz | 차트/다이어그램 (emit_chart) |
emit_chart({...}) |
— |
| guide | Guide | 안내 데스크 — readiness/에러/교육 | dartlab.guide.checkReady() |
— |
설계: ops/company.md
세 가지 데이터 소스 — docs(전문 공시), finance(XBRL 재무제표), report(DART API 정형 데이터) — 를 하나의 객체로 통합. HuggingFace에서 자동 다운로드, 설정 불필요.
c = dartlab.Company("005930")
c.index # 뭐가 있는지 -- topic 목록 + 가용 기간
c.show("BS") # 데이터를 보려면 -- topic별 DataFrame
c.select("IS", ["매출액"]) # 데이터를 뽑으려면 -- finance든 docs든 같은 패턴
c.trace("BS") # 어디서 왔는지 -- source provenance
c.diff() # 뭐가 바뀌었는지 -- 기간 간 텍스트 변화주석(Notes) — BS/IS 총액 이면의 항목별 분해. c.show("topic")으로 재무제표와 같은 패턴으로 접근. DART(K-IFRS HTML 파싱)와 EDGAR(US-GAAP XBRL 태그) 동일 인터페이스.
c.show(...) |
내용 | DART | EDGAR |
|---|---|---|---|
"inventory" |
원재료/재공품/제품 분해 | ✅ | ✅ |
"borrowings" |
단기/장기 차입금 분해 | ✅ | ✅ |
"tangibleAsset" |
유형자산 취득원가/감가상각/장부가 | ✅ | ✅ |
"intangibleAsset" |
영업권/개발비 등 | ✅ | ✅ |
"receivables" |
매출채권 + 대손충당금 | ✅ | ✅ |
"provisions" |
보증/소송/구조조정 충당부채 | ✅ | ✅ |
"eps" |
기본/희석 주당이익 | ✅ | ✅ |
"segments" |
부문별 매출/이익 | ✅ | ✅ |
"costByNature" |
원재료/급여/감가상각 성격별 비용 | ✅ | ✅ |
"lease" |
사용권자산/리스부채 | ✅ | ✅ |
"affiliates" |
관계기업 지분법 투자 | ✅ | ✅ |
"investmentProperty" |
투자부동산 공정가치/장부가 | ✅ | ✅ |
설계: ops/scan.md
전 종목 대상 횡단 분석. 거버넌스, 인력, 주주환원, 부채, 현금흐름, 감사, 내부자, 이익의 질, 유동성, 네트워크, 계정/비율 비교 등.
dartlab.scan("governance") # 전종목 지배구조
dartlab.scan("ratio", "roe") # 전종목 ROE
dartlab.scan("account", "매출액") # 전종목 매출액 시계열2,500+ 종목의 매출액을 한 번에 — 분기별 시계열로 즉시 비교
![]()
설계: ops/gather.md
주가, 수급, 거시지표, 뉴스 — Polars DataFrame으로.
dartlab.gather("price", "005930") # KR OHLCV
dartlab.gather("price", "AAPL", market="US") # US 주가
dartlab.gather("macro", "FEDFUNDS") # 자동 US 감지
dartlab.gather("news", "삼성전자") # Google News RSS설계: ops/analysis.md
수익구조 → 수익성 → 성장성 → 안정성 → 현금흐름 → 자본배분 → 가치평가 → 전망. 원본 재무제표를 인과 서사로 가공한다.
c.analysis("financial", "수익성") # 수익성 분석
c.analysis("수익성") # 단축형 (financial 자동)
print(c.credit()) # 사용 가능한 축 가이드 DataFrame (self-discovery)
c.credit("등급") # dCR-AA, 건전도 93/100
c.credit("등급", detail=True) # 등급 + 서사 + 지표 시계열설계: ops/credit.md | 보고서: dartlab.pages.dev/blog/credit-reports
3-Track 모델(일반/금융/지주) + Notch Adjustment + CHS 시장 보정 + 별도재무 블렌딩.
79개사 검증: 대기업 87% (26/30), 중대형 82% (41/50), 전체 70% (55/79, v5.0 과대평가 수정 후 재측정 예정). 삼성전자 AA+ 정확 일치. 검증 방법론은 methodology 참조.
print(c.credit()) # self-discovery — 사용 가능한 축 + 종합 등급
cr = c.credit("등급") # 종합 등급
print(cr["grade"]) # dCR-AA+
print(cr["healthScore"]) # 96 (0-100, 높을수록 건전)
print(cr["pdEstimate"]) # 0.01% 부도확률
cr = c.credit("등급", detail=True) # 등급 + 서사 + 지표 + 괴리 설명
print(cr["divergenceExplanation"]) # 신평사와 왜 다른지신용분석 보고서 발간 (credit 서사 + 신평사 대조가 review 5막에 자동 통합):
from dartlab.review.publisher import publishReport
publishReport("005930") # 6막 보고서 (credit narrative + audit 포함)설계: ops/macro.md
Company 없이 경제 환경을 분석한다. import dartlab 하나로.
dartlab.macro("사이클") # 경기 4국면 판별
dartlab.macro("금리") # 금리 + Nelson-Siegel 수익률곡선
dartlab.macro("예측") # LEI + 침체확률 + Hamilton RS + GDP Nowcast
dartlab.macro("종합") # 매크로 종합 + 투자전략 + 포트폴리오 매핑시장 사이클·금리·유동성·심리·자산 신호와 글로벌 거시 분석 방법론(Hamilton EM, Kalman DFM, Nelson-Siegel, Cleveland Fed 프로빗, Sahm Rule, BIS Credit-to-GDP)을 numpy만으로 직접 구현.
백테스트 실증 (2000-2024, FRED): Cleveland Fed 프로빗이 미국 3/3 침체를 2-16개월 전에 사전 감지, recall 90%.
설계: ops/review.md
analysis를 구조화 보고서로 조립. 4개 출력 형식: rich(터미널), html, markdown, json.
c.review() # 전체 보고서
c.reviewer() # 보고서 + AI 종합의견삼성전자 보고서 미리보기: "매출 +23.8% 성장, 영업이익률 8.6%→21.4% 반등. FCF 양수 전환, ROIC > WACC — 재투자가 가치를 창출하는 구간."
샘플 보고서: 삼성전자 · SK하이닉스 · 기아 · 한화오션 · SK텔레콤 · LG화학 · 엔씨소프트 · 아모레퍼시픽
설계: ops/review.md · 시리즈: 기업이야기
기업분석은 비율 나열이 아니다. DartLab은 5개 엔진(analysis, credit, scan, quant, macro)의 결과를 6막 스토리텔링 구조로 조합해 블로그에 발간 가능한 기업이야기를 자동 생성한다.
from dartlab.review.publisher import publishReport
publishReport("068270") # 셀트리온 — 6막 기업이야기 자동 발간발간된 기업이야기:
| 기업 | 이야기 |
|---|---|
| SK하이닉스 | 한국 반도체 30년의 미스터리, 영업이익률 58% |
| 삼양식품 | 라면 빅3 꼴등이 매출 2.3조 글로벌 식품 거인이 되기까지 |
| 두산에너빌리티 | 부채비율 305%에서 129%까지, 9년 다이어트의 진짜 모습 |
| 알테오젠 | 9년 적자 바이오텍이 한 건의 라이선스로 영업이익 +1,069억 |
| HMM | 시장이 아니라 사이클이 주가를 결정하는 회사 |
| 셀트리온 | IMF로 직장 잃은 41세, 5천만원으로 시작해 25년 후 무형자산 13.78조 |
| 한화에어로스페이스 | 삼성이 8,400억에 버린 무기가 수주잔고 37조가 됐다 |
| HD현대일렉트릭 | 7년 전 적자 1,006억이 올해 1조가 됐다, 변압기 하나로 |
| 고려아연 | 50년 만에 첫 순손실 2,457억, 그런데 영업이익은 사상 최대 |
| 에이피알 | 화장품 회사가 가전을 4,070억 팔았다, 그게 시작이었다 |
설계: ops/search.md
모델 없음, GPU 없음, cold start 없음. 400만 문서 95% 정밀도 — 임베딩보다 정확, 1/100 비용. 벤치마크 상세는 methodology 참조.
dartlab.search("유상증자 결정") # 유상증자 공시 찾기
dartlab.search("대표이사 변경", corp="005930") # 종목 필터
dartlab.search("회사가 돈을 빌렸다") # 자연어도 동작설계: ops/ai.md
AI가 dartlab의 전체 API로 Python 코드를 작성하고 실행한다. 모든 코드와 결과를 볼 수 있다. 60+ 질문 검증, 1회 성공률 95%+. 검증 범위와 한계는 methodology 참조.
dartlab.ask("삼성전자 재무건전성 분석해줘")
dartlab.ask("삼성전자 분석", provider="gemini") # 무료 provider 사용 가능Provider: gemini(무료), groq(무료), cerebras(무료), oauth-codex(ChatGPT 구독), openai, ollama(로컬) 등. Rate limit 시 자동 대체.
설계: ops/channel.md
PC에서 한 줄이면 폰에서 dartlab UI 그대로 사용. Microsoft DevTunnels 자동 셋업.
dartlab channel흐름:
- winget으로 devtunnel CLI 자동 설치 (최초 1회)
- GitHub OAuth 1회 인증 (브라우저 자동 오픈)
- 영구 URL + QR 발급 (
https://<id>-8400.<region>.devtunnels.ms) - 폰 Chrome에 URL/QR 입력 → dartlab UI 그대로 동작
도메인 0개, 토큰 트릭 0개. VS Code Remote Tunnels와 동일 인프라라 모바일 호환성 검증됨. 메시징 봇 옵션 (--telegram/slack/discord) 도 지원.
"엔진 = 도구 (숫자만), review = 이야기꾼, AI/사람 = 소비자" — 1.0.0 전 근본 구조.
L0 core/ SSOT 인프라 (protocols, finance, memory, docs, search)
공용 헬퍼: toDictBySnakeId, memoized_calc, parseNumStr, safeDiv, fmtBig
L1 providers/ 국가별 공시 데이터 (DART, EDGAR, EDINET)
gather/ 외부 시장 데이터 (Naver, Yahoo, FRED, ECOS)
L1.5 scan/ 전종목 사전 빌드 (parquet) — 데이터 빌더, 분석 아님
L2 analysis/ 재무 심층 (14축 + forecast + valuation)
quant/ 가격 기반 정량 신호 (기술/리스크/팩터/백테스트)
credit/ 독립 신용등급 (dCR 20단계, 7축)
macro/ 거시 지표 (11축 + scenarios 110 + historicalContext)
— 4개 엔진 동등, 상호 import 금지. dict/숫자만 반환.
L3 review/ 이야기꾼 — L2 4엔진 + scan 소비, 보고서 조립
narrate (문장) + builders (블록) + templates (관점/성격)
L4 ai/ + 사람 소비자 — review 보고서를 해석하고 판단
vscode/ VSCode 확장 (dartlab chat --stdio)
ui/web/ Svelte SPA 웹 인터페이스
교차 guide/ 안내 데스크 (모든 레이어에서 import 가능)
import 방향: L0 ← L1 ← L1.5 ← L2 ← L3 ← L4 (CI 강제, 역방향 0건).
flowchart TB
subgraph L4["L4 · 소비자 (해석과 판단)"]
direction LR
HUMAN["🧑 사람<br/>투자자/분석가"]
AI["ai<br/>dartlab.ask()"]
UI["vscode / CLI / web"]
end
subgraph L3["L3 · 이야기꾼"]
REV["review<br/>narrate + builders + templates<br/>보고서 조립 (6막 서사)"]
end
subgraph L2["L2 · 분석 엔진 (dict만 반환, 상호 독립)"]
ANA["analysis<br/>재무 14축 + forecast + valuation"]
QNT["quant<br/>기술/리스크/팩터/백테스트"]
CRD["credit<br/>dCR 20단계 · 7축"]
MAC["macro<br/>11축 + scenarios 110"]
end
subgraph L15["L1.5 · 데이터 빌더"]
SCN["scan<br/>전종목 parquet 사전 빌드"]
end
subgraph L1["L1 · 데이터 수집"]
PRV["providers<br/>DART / EDGAR / EDINET"]
GAT["gather<br/>FRED / ECOS / Naver / Yahoo"]
end
subgraph L0["L0 · 인프라 (SSOT)"]
CORE["core<br/>finance.helpers · memory · docs · search"]
end
HUMAN --> UI
UI --> AI
UI --> REV
AI --> REV
AI --> ANA
AI --> QNT
AI --> MAC
REV --> ANA
REV --> QNT
REV --> CRD
REV --> MAC
REV --> SCN
ANA --> SCN
ANA --> PRV
ANA --> GAT
QNT --> SCN
QNT --> GAT
CRD --> SCN
CRD --> PRV
MAC --> GAT
SCN --> PRV
SCN --> CORE
PRV --> CORE
GAT --> CORE
ANA --> CORE
QNT --> CORE
CRD --> CORE
MAC --> CORE
classDef l0 fill:#f5f5f5,stroke:#999
classDef l1 fill:#e8f4ff,stroke:#4a90e2
classDef l15 fill:#dbeafe,stroke:#3b82f6
classDef l2 fill:#fff4e6,stroke:#e67e22
classDef l3 fill:#f0e6ff,stroke:#8e44ad
classDef l4 fill:#e6ffe6,stroke:#27ae60
class CORE l0
class PRV,GAT l1
class SCN l15
class ANA,QNT,CRD,MAC l2
class REV l3
class AI,UI,HUMAN l4
핵심 규칙:
- L2 엔진 상호 import 금지 — analysis↛quant, macro↛credit 등 (0건 유지, CI 검증)
- L2 → L3 역방향 금지 — 엔진은 dict만, 해석/블록/보고서 생성은 review의 책임 (0건 유지)
- L2 → L1.5(scan) 하향 참조 허용 — scan은 순수 데이터 빌더
- 새 국가 추가 = providers/ 패키지 하나, core 수정 0줄
같은 인터페이스, 다른 데이터 소스. SEC API에서 자동 수집, 사전 다운로드 불필요.
# Korea (DART) # US (EDGAR)
c = dartlab.Company("005930") c = dartlab.Company("AAPL")
c.sections c.sections
c.show("businessOverview") c.show("business")
c.show("BS") c.show("BS")
c.show("ratios") c.show("ratios")
c.diff("businessOverview") c.diff("10-K::item7Mdna")MCP 서버 내장. 25개 도구로 dartlab 전체 엔진에 접근.
dartlab을 설치하지 않아도 됩니다. Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"dartlab": {
"url": "https://eddmpython-dartlab.hf.space/mcp/sse"
}
}
}HuggingFace Spaces에서 호스팅. DART API 키도 불필요. → 상세
# Claude Code — 한 줄 설정
claude mcp add dartlab -- uv run dartlab mcp
# Codex CLI
codex mcp add dartlab -- uv run dartlab mcpClaude Desktop / Cursor 설정
claude_desktop_config.json 또는 .cursor/mcp.json에 추가:
{
"mcpServers": {
"dartlab": {
"command": "uv",
"args": ["run", "dartlab", "mcp"]
}
}
}자동 생성: dartlab mcp --config claude-desktop
| 카테고리 | 도구 |
|---|---|
| 종목 분석 | companyInsights, companyAnalysis, companyReview, companyValuation, companyForecast, companyCredit |
| 데이터 | companyFinancials, companyRatios, companyShow, companyTopics, companyDiff, companyFilings |
| 기업 정보 | companyGovernance, companyAudit, companyProfile, companySections, companyGather, companyQuant |
| 시장/거시 | macroAnalysis, marketScan, gatherData, quantAnalysis, topdownScreen |
| 검색 | searchCompany, dartlabSearch, dartlabListing |
HuggingFace Spaces에서 DART API 프록시 제공. API 키 없이 실시간 공시 데이터 접근:
# 공시 목록
curl "https://eddmpython-dartlab.hf.space/api/dart/filings?corp=005930&start=20260101"
# 기업 정보
curl "https://eddmpython-dartlab.hf.space/api/dart/company/005930"
# 재무제표
curl "https://eddmpython-dartlab.hf.space/api/dart/finance/005930?year=2024"
# 보고서 (배당, 직원, 임원 등 56개 카테고리)
curl "https://eddmpython-dartlab.hf.space/api/dart/report/005930/배당?year=2023"from dartlab import OpenDart, OpenEdgar
# 한국 (opendart.fss.or.kr 무료 API 키 필요)
d = OpenDart()
d.filings("삼성전자", "2024")
d.finstate("삼성전자", 2024)
# 미국 (API 키 불필요)
e = OpenEdgar()
e.filings("AAPL", forms=["10-K", "10-Q"])모든 데이터는 HuggingFace에 사전 구축 — 자동 다운로드. EDGAR는 SEC API 직접 수집.
| 데이터셋 | 규모 | 용량 |
|---|---|---|
| DART docs | 2,500+ 기업 | ~8 GB |
| DART finance | 2,700+ 기업 | ~600 MB |
| DART report | 2,700+ 기업 | ~320 MB |
| EDGAR | 주문형 | SEC API |
파이프라인: 로컬 캐시(즉시) → HuggingFace(자동 다운로드) → DART API(키 필요). 대부분 처음 두 단계로 충분.
라이브 데모 — 설치 없이 브라우저에서 바로
노트북: Company · Scan · Review · Gather · Analysis · Ask (AI)
블로그 (120+ 글): 전체 · 기업이야기 · 신용평가 보고서 · 매크로 보고서
| Tier | 범위 |
|---|---|
| Stable | DART Company (sections, show, trace, diff, BS/IS/CF, CIS, index, filings, profile), EDGAR Company core, valuation, forecast, simulation |
| Beta | EDGAR 파워유저 (SCE, notes, freq, coverage), credit, insights, distress, ratios, timeseries, network, governance, workforce, capital, debt, chart/table/text 도구, ask/chat, OpenDart, OpenEdgar, Server API, MCP |
| Experimental | AI 도구 호출, export, viz (차트) |
자세한 기준은 docs/stability.md를 본다.
기여자를 대환영합니다. 버그 리포트, 새 분석 축, 매핑 수정, 문서 개선 — 어떤 기여든 dartlab을 더 좋게 만듭니다.
규칙 하나: 실험 먼저, 엔진은 그 다음. 아이디어는 experiments/에서 검증한 뒤 엔진에 반영한다.
- 실험 폴더:
experiments/XXX_name/— 각 파일은 독립 실행 가능, docstring에 실제 결과 포함 - 데이터 기여 (
accountMappings.json,sectionMappings.json등): 실험 증거가 있을 때 수용 - 한국어/영어 이슈와 PR 모두 환영
- 어디서 시작할지 모르겠다면 이슈를 열어주세요
Apache License 2.0 — 자유롭게 사용하되, NOTICE 파일의 출처 표기를 포함해주세요.






