| name | kordoc |
| description | Use this skill whenever the user wants to read, create, fill, edit, compare, validate, or preview Korean Hangul/official documents โ .hwp (HWP 3.x/5.x), .hwpx, .hml (HWPML) โ or convert Korean-office PDF/DOCX/XLS/XLSX to Markdown. Triggers include any mention of 'hwp', 'hwpx', 'hml', 'ํ๊ธ ๋ฌธ์', '์๋ํ๊ธ', 'ํ์ปด', '๊ณต๋ฌธ์', '๊ธฐ์๋ฌธ', '๋ณด๊ณ ์๋ฅผ hwpx๋ก', '์์ ์ฑ์ฐ๊ธฐ', '์์ ์๋ ์์ฑ', '์ ์ฒญ์ ์ฑ์์ค', '์ ๊ตฌ๋์กฐํ', '๋ฌธ์ ๋น๊ต', or uploading/attaching .hwp/.hwpx/.hml files. Also use when generating official Korean documents from Markdown (๊ธฐ์๋ฌธยท๋ณด๊ณ ์ยท๊ณํ์ยทํต์งยทํ์๋ก presets) or when a HWPX layout preview/verification is needed. Do NOT use for authoring plain Word .docx files (kordoc reads DOCX but generates only HWPX) or for general Korean text with no document file involved. |
| license | MIT |
kordoc โ ํ๊ตญ ๊ณต๋ฌธ์ ํดํท
kordoc(npm)์ ๊ด๊ณต์ ๋ฌธ์ ํ์ดํ๋ผ์ธ ๋๊ตฌ๋ค. HWP 3.x/5.xยทHWPXยทHWPMLยทPDFยทDOCXยทXLS/XLSX โ Markdown
ํ์ฑ, Markdown โ ๊ณต๋ฌธ์ HWPX ์์ฑ, ์์ ๋น์นธ ์ฑ์ฐ๊ธฐ(์๋ณธ ์คํ์ผ ๋ณด์กด), ์์ ๋ณด์กด ๋ผ์ด๋ํธ๋ฆฝ ํจ์น,
๋ฌธ์ ๋น๊ต, HWPX ๊ตฌ์กฐ ๊ฒ์ฆ, ์กฐํ SVG ๋ ๋๋ฅผ ์ ๊ณตํ๋ค. ํ์ปด์คํผ์คยทWindows COM ๋ถํ์, Node.js 18+๋ง
์์ผ๋ฉด ๋๋ค.
์คํ ๋ฐฉ๋ฒ
์ค์น ์์ด npx ๋ก ์คํํ๋ค (๋ฉ์ด์ ๋ฒ์ ๊ณ ์ ):
npx -y kordoc@^4 <command> ...
์ฒซ ํธ์ถ๋ง ํจํค์ง ๋ค์ด๋ก๋๋ก ๋๋ฆฌ๊ณ ์ดํ๋ ์บ์. ์์ ์ฌ์ฉ ํ๊ฒฝ์ด๋ฉด MCP ์๋ฒ๋ก ๋ถ์ผ ์๋ ์๋ค
(npx -y kordoc@^4 setup โ ๋ํํ ๋ง๋ฒ์ฌ๊ฐ Claude Code/DesktopยทCursor ๋ฑ์ ์๋ ๋ฑ๋ก).
MCP ๋๊ตฌ 11์ข
: parse_document, parse_table, parse_pages, parse_metadata, parse_form,
fill_form, place_seal, patch_document, generate_document, compare_documents, detect_format.
๋ช
๋ น ์์ฝ
| ์์
| ๋ช
๋ น |
|---|
| ๋ฌธ์ โ Markdown | npx -y kordoc@^4 ๋ฌธ์.hwpx -o ๋ฌธ์.md |
| ์ผ๊ด ๋ณํ | npx -y kordoc@^4 *.pdf -d ./๋ณํ๊ฒฐ๊ณผ/ |
| ํ์ด์ง/์น์
๋ฒ์ | -p 1-3 ๋๋ -p 1,3,5 |
| ๊ตฌ์กฐํ JSON (blocks+metadata) | --format json |
| ์์ ํ๋ ๋ชฉ๋ก๋ง ๋ณด๊ธฐ | npx -y kordoc@^4 fill ์์.hwpx --dry-run |
| ์์ ์ฑ์ฐ๊ธฐ | npx -y kordoc@^4 fill ์์.hwpx -j ๊ฐ.json -o ๊ฒฐ๊ณผ.hwpx |
| ๊ณต๋ฌธ์ ์์ฑ | npx -y kordoc@^4 generate ์ด์.md -o ๊ฒฐ๊ณผ.hwpx --preset ๋ณด๊ณ ์ |
| ํธ์ง ์๋ณต ํจ์น | npx -y kordoc@^4 patch ์๋ณธ.hwpx ํธ์ง.md -o ๊ฒฐ๊ณผ.hwpx |
| HWPX ๊ตฌ์กฐ ๊ฒ์ฆ | npx -y kordoc@^4 validate ๊ฒฐ๊ณผ.hwpx |
| ์กฐํ SVG ๋ ๋ | npx -y kordoc@^4 render ๋ฌธ์.hwpx -o ๋ฏธ๋ฆฌ๋ณด๊ธฐ.svg |
| ๋์ฅ/์๋ช
๋ฐฐ์น | npx -y kordoc@^4 seal ๋ฌธ์.hwpx --image ๋์ฅ.png --anchor "(์ธ)" -o ๊ฒฐ๊ณผ.hwpx |
๋์ฅ ์์น ํ๊ณ: ์ค์ฒฉํยท๊ธ์์ยทํญ/์ค๋ฐ๊ฟ ๋ฌธ๋จยท๋ณต์ก rowSpan ๊ทธ๋ฆฌ๋๋ ๊ทผ์ฌ ๋ฐฐ์น์ด๋ฉฐ ๊ฒฐ๊ณผ warnings ์ ๊ณ ์ง๋๋ค โ ํ์ปด์์ ํ์ธ ํ --dx/--dy(MCP dx_mm/dy_mm)๋ก ๋ณด์ ํ๋ค.
์ํฌํ๋ก
1) ์ฝ๊ธฐ โ ์ด๋ค ๋ฌธ์๋ Markdown ์ผ๋ก
npx -y kordoc@^4 ์ฌ์
๊ณํ์.hwp -o ์ฌ์
๊ณํ์.md
- ๋ณํฉยท์ค์ฒฉ ํ๋ GFM ์ผ๋ก ํํ์ด ์ ๋๋ฏ๋ก HTML
<table>(colspan/rowspan)๋ก ๋์จ๋ค โ ๊ทธ๋๋ก ๋ค๋ฃจ๋ฉด ๋๋ค.
- ์์์
$...$ / $$...$$ LaTeX ๋ก ๋์จ๋ค.
- PDF ๋ ํ
์คํธ์ธต ํ์ง ์ ํธ๋ฅผ ๊ฐ์ด ๊ณ์ฐํ๋ค โ ์ถ์ถ ํ
์คํธ๊ฐ ๊นจ์ ธ ๋ณด์ด๋ฉด(
needsOcr) OCR ์ด ํ์ํ
์ค์บ/์์ PDF ๋ผ๋ ๋ป์ด๋ ์ฌ์ฉ์์๊ฒ ์๋ฆฐ๋ค (kordoc ์ OCR ์ ๋ด์ฅํ์ง ์๋๋ค).
- ๋์ฉ๋ยท๋ค์ ํ์ผ์
-d ๋๋ ํ ๋ฆฌ ๋ชจ๋๋ก ํ ๋ฒ์.
2) ๊ณต๋ฌธ์ ์์ฑ โ Markdown ๊ท์ฝ
npx -y kordoc@^4 generate ๋ณด๊ณ ์.md -o ๋ณด๊ณ ์.hwpx --preset ๋ณด๊ณ ์
-
ํ๋ฆฌ์
: ๊ธฐ์๋ฌธ(official) ยท ๋ณด๊ณ ์(report) ยท ๊ณํ์(plan) ยท ํต์ง(notice) ยท ํ์๋ก(minutes) ยท
๊ฐ์กฐ์(gaejosik, ํ์งยท๋ชฉ์ฐจยท์ฅ ํค๋) ยท ๋ณด๋์๋ฃ(press).
-
๋ฒํธ ๋ชฉ๋ก(1. / ๋ค์ฌ์ด -)์ ๊ณต๋ฌธ์ ํญ๋ชฉ๋ถํธ 8๋จ๊ณ(1. โ ๊ฐ. โ 1) โ ๊ฐ) โ โฆ)์ ๋ด์ด์ฐ๊ธฐ๋ก ์๋
๋ณํ๋๊ณ , ํจ์ด๋กฌ๋ฐํยท๊ณต์ ์ฌ๋ฐฑ ๋ฑ ๊ณต๋ฌธ์ ํ์ค ์์์ด ์ ์ฉ๋๋ค.
-
ํ๋ GFM ํ์ดํํ๋ก ์ฐ๋ฉด ๋๋ค. display ์์ $$...$$ ์ HWPX ๋ค์ดํฐ๋ธ ์์(<hp:equation>)์ผ๋ก
์์ฑ๋๋ค (\fracยท\sqrtยท์ฒจ์ยท๊ทธ๋ฆฌ์ค ๋ฌธ์ยท์ ๋ถ/๊ทนํยทํ๋ ฌ ๋ฑ ์ ํ๋ LaTeX ๋ถ๋ถ์
).
-
๋ณธ๋ฌธ ์ต์
: --font gothic(๋ง์ ๊ณ ๋) ยท --pt <ํฌ๊ธฐ> ยท --line-spacing <ํผ์ผํธ> ยท
--plain(๊ณต๋ฌธ์ ๋ชจ๋ ๋๊ณ ๋ฒ์ฉ ๋ณํ).
-
stdin ์
๋ ฅ์ ํ์ผ ์ธ์์ -.
-
์ฐจํธ: ```chart ํ์ค๊ฐ ํ์ปด ๋ค์ดํฐ๋ธ ์ฐจํธ๋ก ์์ฑ๋๋ค (๋ง๋ยท์ ยท์ยท๋๋ยท์์ญยท๋ถ์ฐยท๋ฐฉ์ฌํ 20์ข
):
```chart
type: column
cat: 1๋ถ๊ธฐ, 2๋ถ๊ธฐ, 3๋ถ๊ธฐ
size: 120x70
colors: #304D68, accent2
์์ฐ: 100, 120, 110
์งํ: 80, 95, 105
```
type: column|bar|line|area|pie|doughnut|scatter|radar (+_stacked) โ ๋ฏธ์ง์ ์ column.
cat: ์นดํ
๊ณ ๋ฆฌ(x์ถ) ๋ผ๋ฒจ ยท size: ๋๋นx๋์ด(mm, ์ ํ) ยท colors: ๊ณ์ด ์(ํ์ด๋ ์กฐ๊ฐ ์, ์ ํ).
์ด๋ฆ: ์ซ์๋ค ํ์์ ๊ฐ ๋ผ์ธ์ด ๋ฐ์ดํฐ ๊ณ์ด. ์ ํ์ค๋ ๊ทธ๋๋ก ๋ณต์ฌํด๋ ๋๋ ์ ํจ ์
๋ ฅ์ด๋ค(์ฃผ์ ๊ธ์ง โ ์ฃผ์ ํ
์คํธ๊ฐ ๊ฐ์ผ๋ก ๋ค์ด๊ฐ ๊ณ์ด์ด ํ๋ฝํ๋ค).
- ์ฐจํธ ์ ๋ชฉ์ ํ์ค๊ฐ ์๋๋ผ ๋ณธ๋ฌธ ๋ฌธ๋จ์ผ๋ก ์ด๋ค. ๊ณ์ด์ด ์์ผ๋ฉด ์ผ๋ฐ ์ฝ๋๋ธ๋ก์ผ๋ก ํด๋ฐฑ๋๋ค.
-
์์ฑ ํ validate ๋ก ๊ตฌ์กฐ๋ฅผ ํ์ธํ๊ณ ๋์ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๋ค.
3) ์์ ์ฑ์ฐ๊ธฐ (fill)
- ๋จผ์ ํ๋๋ฅผ ํ์
ํ๋ค:
fill ์์.hwpx --dry-run โ ๋ผ๋ฒจ ๋ชฉ๋ก.
- ๊ฐ์
-j ๊ฐ.json(JSON ํ์ผ)์ผ๋ก ๋๊ธฐ๋ ๊ฒ์ ๊ถ์ฅ โ -f 'k=v,...' ๋ ์
ธ ํ์คํ ๋ฆฌยทํ๋ก์ธ์ค
๋ชฉ๋ก์ ๊ฐ์ด ๋
ธ์ถ๋๋ค.
- ๋ค์ค์ค ๊ฐ์ JSON ๋ฌธ์์ด ์์
\n โ ํ ์
/๋ฌธ๋จ ์์์ ์ค์ ๊ฐ์ ์ค๋ฐ๊ฟ์ผ๋ก ์ฑ์์ง๋ค.
- ๊ฐ์ ๋ผ๋ฒจ์ด ๋ฌธ์์ 2๊ณณ ์ด์์ด๋ฉด ๊ธฐ๋ณธ ๋์์ ๋ชจ๋ ์นธ์ ์ฑ์ด๋ค(๋ฐ๋ณต ์์ ์ง์). ๋จ์ ์นธ ์ค์ผ์ด
์ฐ๋ ค๋๋ฉด MCP
fill_form ์ require_unique: true ๋ฅผ ์ค๋ผ โ 2๊ณณ+ ๋งค์นญ๋๋ ์ค์นผ๋ผ ๋ผ๋ฒจ์ ์ฑ์ฐ์ง
์๊ณ rejected ๋ก ๋ณด๊ณ ํ๋ค(๋ฐฐ์ด ๊ฐ์ ์์ธ). CLI fill ์ ์ด ๊ฐ๋๊ฐ ์์ผ๋ ๋ฐ๋ณต ๋ผ๋ฒจ ์์์
๊ฐ์ ๋ฐฐ์ด๋ก ์ฃผ๊ฑฐ๋ ์ด๋ ์นธ์ธ์ง ํ์ธ ํ ์ฑ์ด๋ค.
- ๋ ์งยท์ ํยท์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ ๋ฑ ์นธ ๋ชจ์ ๋ณํ(
yyyy.mm.dd, ###-####-#### ์ซ์ ๋ง์คํฌ ๋ฑ)์ MCP
fill_form ์ formats ํ๋ผ๋ฏธํฐ๊ฐ ์ง์ํ๋ค.
- ๊ธฐ๋ณธ ์ถ๋ ฅ ํฌ๋งท์
hwpx-preserve(์๋ณธ ๊ธ๊ผดยทํฌ๊ธฐยท์ ๋ ฌ 100% ์ ์ง). ์๋ณธ ํ์ผ์ ๋ฎ์ด์ฐ์ง ๋ง๊ณ
ํญ์ -o ๋ก ์ ํ์ผ์ ์ด๋ค.
๊ฐ์ธ์ ๋ณด ์ฃผ์: ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธยท๊ณ์ขยท์ฐ๋ฝ์ฒ ๊ฐ์ ๊ฐ์ ์๋ต์ ๊ทธ๋๋ก ๋ํ์ดํ์ง ์๋๋ค. ์ฑ์ ๊ฒฐ๊ณผ
ํ์ธ์ด ํ์ํ๋ฉด MCP fill_form ์ mask_values ๋ง์คํน verify ๋ฅผ ์ฐ๊ณ , ์ฌ์ฉ์๊ฐ ์๋ฌธ ํ์ธ์ ๋ช
์
์์ฒญํ ๋๋ง ๋ณด์ฌ์ค๋ค. ์ฑ์ด ๊ฒฐ๊ณผ ํ์ผ ์์ฒด๊ฐ ๊ฐ์ธ์ ๋ณด ๋ฌธ์์์ ๊ณ ์งํ๋ค.
4) ๊ธฐ์กด ๋ฌธ์ ํธ์ง (patch)
npx -y kordoc@^4 ์๋ณธ.hwpx -o ํธ์ง.md
npx -y kordoc@^4 patch ์๋ณธ.hwpx ํธ์ง.md -o ์์ ๋ณธ.hwpx
- ์๋ณธ์ ๊ธ๊ผดยทํยท๊ฐ์ฒดยท์กฐํ์ ๋ณด์กดํ ์ฑ ํ
์คํธ ๋ณ๊ฒฝ๋ง in-place ๋ฐ์ํ๋ค.
- ๋ณธ๋ฌธ ๋ฌธ๋จ์ ์ค์ ๋๋๊ณ ์ถ์ผ๋ฉด ํธ์ง md ์ ๋ช
์์
<br> ์ ์ด๋ค โ ์๋ํฐ์ soft-wrap ์ ํ์
์์ ์ผ๋ก ์ทจ๊ธ๋์ง ์๋๋ค.
- ์๋ณธ์ ์ ๋ ๋ฎ์ด์ฐ์ง ์๋๋ค (
-o ํ์ ์ต๊ด).
5) ๋์ฅ/์๋ช
๋ฐฐ์น (seal)
npx -y kordoc@^4 seal ์ ์ฒญ์.hwpx --image ๋์ฅ.png --anchor "(์ธ)" -o ์ ์ฒญ์_๋ ์ธ.hwpx
- ์ต์ปค ๋ฌธ๊ตฌ("(์ธ)"ยท"์๋ช
๋๋ ์ธ" ๋ฑ) ์/์์ ์ด๋ฏธ์ง๋ฅผ ๊ธ ์ ๋ถ์ ๋ก ์น๋๋ค โ ํยทํ์ด์ง๊ฐ
์ ๋ ์ปค์ง์ง ์๋๋ค (๋ ์ธ ํ ์์์ด ๋ฐ๋ฆฌ๋ ์ฌ๊ณ ๋ฐฉ์ง).
- ๊ฐ์ ์ต์ปค๊ฐ ์ฌ๋ฟ์ด๋ฉด
-n <0-based> ๋ก ์ ํ. ๋ชป ์ฐพ์ผ๋ฉด ๋ฑ์ฅ ํ์๋ฅผ ์๋ฌ๋ก ์๋ดํ๋ค.
--mode: auto(๊ธฐ๋ณธ โ ์ค๋ฅธ์ชฝ ๊ณต๊ฐ ์์ผ๋ฉด ์์, ์์ผ๋ฉด ๋ฌธ๊ตฌ ์์ ๊ฒน์นจ) ยท overlap ยท right.
- ํฌ๊ธฐ ๊ธฐ๋ณธ๊ฐ์ ์ค๋์ดร1.6 (7~18mm ํด๋จํ),
--size-mm ๋ก ๊ณ ์ ๊ฐ๋ฅ. ์์น ๋ฏธ์ธ์กฐ์ ์
--dx/--dy (mm).
- ์ด๋ฏธ์ง๋ ํฌ๋ช
๋ฐฐ๊ฒฝ PNG ๊ถ์ฅ (macOS ๋ฏธ๋ฆฌ๋ณด๊ธฐ > ๋งํฌ์
> ์๋ช
๋ด๋ณด๋ด๊ธฐ, ๋๋ ๋์ฅ ์ค์บ).
- HWPX ์ ์ฉ. ๋ฐฐ์น ํ
render --reflow ๋ก ์์น๋ฅผ ํ์ธํ๊ณ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๋ค.
6) ๋น๊ตยท๊ฒ์ฆยท๋ฏธ๋ฆฌ๋ณด๊ธฐ
- ๋น๊ต(์ ๊ตฌ๋์กฐํ): MCP
compare_documents โ ๋ ๋ฌธ์์ ์กฐ๋ฌธ/๋ฌธ๋จ ๋จ์ diff.
- ๊ฒ์ฆ:
validate ํ์ผ.hwpx โ ZIP ๊ตฌ์กฐยทmimetypeยทํ์ ํํธยทXML ์ฐํผ๋ยทsecCntยทmanifest ์ฐธ์กฐ๋ฅผ
๊ฒ์ฌํ๋ค (ํ์ปด๋
์ค ์
๋ก๋ ๊ฑฐ๋ถ ์์ธ ์ฌ์ ์ฐจ๋จ). ์์ฑยทํจ์น ์ฐ์ถ๋ฌผ์ ์ ๋ฌ ์ ์ ๋ฐ๋์ ํต๊ณผ ํ์ธ.
- ๋ฏธ๋ฆฌ๋ณด๊ธฐ:
render ๋ฌธ์.hwpx -o ๋ฌธ์.svg
- ํ์ปด์์ ์ ์ฅํ ํ์ผ: ์กฐํ ์บ์๋ฅผ ๊ทธ๋๋ก ๊ทธ๋ ค ์๋ณธ ์ถฉ์ค ๋ฏธ๋ฆฌ๋ณด๊ธฐ.
- kordoc ์ด ์์ฑ/ํจ์นํ ํ์ผ(์กฐํ ์บ์ ์์):
--reflow ๋ฅผ ๋ถ์ฌ ์์ TS ์กฐํ์ผ๋ก ๋ ๋.
--highlight ๊ฒ์์ด ๋ก ํ๊ดํ ํ์ ๊ฐ๋ฅ.
ํจ์
- ์ํธ๋ก ๋ณดํธ๋ HWP/HWPXยทDRM ๋ฐฐํฌ๋ณธ์ ํ์ฑํ ์ ์๋ค โ ์๋ฌ ๋ฉ์์ง๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๋ค.
.hwp(๋ฐ์ด๋๋ฆฌ HWP 5.x)์ .hwpx(ZIP/XML)๋ ๋ค๋ฅธ ํฌ๋งท์ด๋ค. fill/patch/generate ์ฐ์ถ๋ฌผ์ HWPX ๋ค.
- ์์ฑ HWPX ๋ฅผ ํ์ปด์์ ์ด๋ฉด ํธ์ง ํ ์ ์ฅ ์ ์กฐํ ์บ์๊ฐ ์๊ฒจ render ๊ธฐ๋ณธ ๋ชจ๋๋ ๋์ํ๊ฒ ๋๋ค.
- ํ๊ฐ ๊นจ์ ธ ๋ณด์ด๋ PDF ๋ ์๋ณธ์ด ์ค์บ๋ณธ์ด๊ฑฐ๋ ํ
์คํธ์ธต์ด ์์๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ค โ ํ์ง ์ ํธ๋ฅผ
๊ทผ๊ฑฐ๋ก ์ค๋ช
ํ๋ค.