Skip to content
hwp logo

HWP

hwp

Use kordoc for agent-native HWP/HWPX document parsing, JSON extraction, diffing, form-field extraction, and Markdownโ†’HWPX reverse conversion (read/convert only โ€” for binary editing use rhwp-edit).

nomadamas/k-skill6.8Kinstalls7.8Kstars

SKILL.md

Full skill instructions

HWP

What this skill does

kordoc์œผ๋กœ .hwp / .hwpx / .hwpml ๋ฌธ์„œ๋ฅผ AI๊ฐ€ ์ฝ๊ธฐ ์ข‹์€ Markdown ๋˜๋Š” JSON์œผ๋กœ ๋ฐ”๊พธ๊ณ , ํ•„์š”ํ•˜๋ฉด ๋ฌธ์„œ ๋น„๊ต, ์–‘์‹ ํ•„๋“œ ์ถ”์ถœ, Markdownโ†’HWPX ์—ญ๋ณ€ํ™˜๊นŒ์ง€ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์ด ์Šคํ‚ฌ์˜ ๊ธฐ๋ณธ ์—”์ง„์€ ํ•ญ์ƒ kordoc ์ด๋‹ค. ๋ฌธ์„œ ๋ณ€ํ™˜, ๋น„๊ต, ํ•„๋“œ ์ถ”์ถœ, ์—ญ๋ณ€ํ™˜๊นŒ์ง€ ๊ฐ™์€ ๋„๊ตฌ๋กœ ์ผ๊ด€๋˜๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์Šคํ‚ฌ ๋ผ์šฐํŒ… โ€” ์ด hwp ์Šคํ‚ฌ์€ ์กฐํšŒ/๋ณ€ํ™˜(read-only) ์ „์šฉ์ด๋‹ค. HWP ๋ฐ”์ด๋„ˆ๋ฆฌ ํŽธ์ง‘(๋ณธ๋ฌธ ํ…์ŠคํŠธ ์‚ฝ์ž…/์‚ญ์ œ, ํ‘œ ์ƒ์„ฑ, ์…€ ์ˆ˜์ •, replace-all)์€ rhwp-edit ์Šคํ‚ฌ์ด, ๋ ˆ์ด์•„์›ƒ ๋””๋ฒ„๊น…ยทIR ๋คํ”„ยท์ธ๋„ค์ผยท๋ฐฐํฌ์šฉ ๋ฌธ์„œ ์ž ๊ธˆ ํ•ด์ œ ๊ฐ™์€ ๊ณ ๊ธ‰ ๊ฒ€์‚ฌ๋Š” rhwp-advanced ์Šคํ‚ฌ์ด ๋งก๋Š”๋‹ค.

When to use

  • "์ด HWP ํŒŒ์ผ์„ Markdown์œผ๋กœ ๋ฐ”๊ฟ”์ค˜"
  • "๊ณต๋ฌธ์„œ๋ฅผ JSON ๊ตฌ์กฐ๋กœ ๋ฝ‘์•„์„œ AI๊ฐ€ ์ฝ๊ฒŒ ํ•ด์ค˜"
  • "๋‘ ๋ฒ„์ „ ๋ฌธ์„œ ์ฐจ์ด์ ์„ ๋ณด๊ณ  ์‹ถ์–ด"
  • "์‹ ์ฒญ์„œ HWPX ์•ˆ์— ์–ด๋–ค ์–‘์‹ ํ•„๋“œ๊ฐ€ ์žˆ๋Š”์ง€ ๋ฝ‘์•„์ค˜"
  • "AI๊ฐ€ ๋งŒ๋“  Markdown์„ ๋‹ค์‹œ HWPX๋กœ ์ €์žฅํ•ด์ค˜"
  • "ํด๋” ์•ˆ ๋ฌธ์„œ๋ฅผ ํ•œ ๋ฒˆ์— ๋ณ€ํ™˜ํ•ด์ค˜"

When not to use

  • OCR์ด ํ•„์ˆ˜์ธ๋ฐ OCR provider ์—ฐ๊ฒฐ์ด ์ „ํ˜€ ์—†๋Š” ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ PDF๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ
  • .docx, .xlsx, .pdf ๋งŒ ๋‹ค๋ฃจ๋”๋ผ๋„ ๋ฌธ์„œ ํŒŒ์‹ฑ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ํŽธ์ง‘๊ธฐ GUI ์ž๋™ํ™”๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • ์›๋ณธ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹ค์‹œ๊ฐ„ UI ์ œ์–ด๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • ๋ณธ๋ฌธ ํ…์ŠคํŠธ ์ง์ ‘ ์‚ฝ์ž…ยท์‚ญ์ œยท์น˜ํ™˜ ๋˜๋Š” ํ‘œ ๊ตฌ์กฐ ๋ณ€๊ฒฝ โ€” rhwp-edit ์Šคํ‚ฌ์˜ k-skill-rhwp CLI ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํŽ˜์ด์ง€ SVG ๋ Œ๋” ๋””๋ฒ„๊น…ยทIR ๋คํ”„ยทir-diffยท์ธ๋„ค์ผ ์ถ”์ถœ โ€” rhwp-advanced ์Šคํ‚ฌ์˜ ์—…์ŠคํŠธ๋ฆผ rhwp CLI ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

Prerequisites

  • Node.js 18+
  • ์ถœ๋ ฅ ๊ฒฝ๋กœ ์“ฐ๊ธฐ ๊ถŒํ•œ
  • kordoc๊ณผ pdfjs-dist๋ฅผ ๊ฐ™์€ ์ „์—ญ/๋กœ์ปฌ ํ™˜๊ฒฝ์— ์„ค์น˜ํ–ˆ๊ฑฐ๋‚˜, ๋‘˜ ๋‹ค ํฌํ•จ๋œ npx --yes --package kordoc --package pdfjs-dist kordoc ... ์‹คํ–‰ ํ™˜๊ฒฝ
  • ํ˜„์žฌ ๋ฐฐํฌ๋œ kordoc CLI๋Š” ์‹œ์ž‘ ์‹œ pdfjs-dist๋ฅผ ๋ฐ”๋กœ ๋กœ๋“œํ•˜๋ฏ€๋กœ PDF๋ฅผ ์•ˆ ์จ๋„ ํ•จ๊ป˜ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค

Inputs

  • ์›๋ณธ .hwp, .hwpx, .hwpml ํŒŒ์ผ ๊ฒฝ๋กœ ๋˜๋Š” ํด๋”/๊ธ€๋กญ ๊ฒฝ๋กœ
  • ์›ํ•˜๋Š” ๊ฒฐ๊ณผ ํ˜•ํƒœ: markdown, json, hwpx
  • ์ถœ๋ ฅ ํŒŒ์ผ/๋””๋ ‰ํ„ฐ๋ฆฌ ๊ฒฝ๋กœ
  • ํŽ˜์ด์ง€ ๋ฒ”์œ„ ์ง€์ • ์—ฌ๋ถ€
  • ๋น„๊ต / ์–‘์‹ ํ•„๋“œ ์ถ”์ถœ / ์—ญ๋ณ€ํ™˜ ์—ฌ๋ถ€

Routing policy

Default: kordoc

๋‹ค์Œ ์ž‘์—…์€ ๋ชจ๋‘ ๊ธฐ๋ณธ์ ์œผ๋กœ kordoc์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • HWP/โ€‹HWPX/โ€‹HWPML โ†’ Markdown
  • HWP/โ€‹HWPX/โ€‹HWPML โ†’ JSON (blocks, metadata)
  • ๋ฐฐ์น˜ ๋ณ€ํ™˜
  • ํŽ˜์ด์ง€ ๋ฒ”์œ„ ํŒŒ์‹ฑ
  • ์ด๋ฏธ์ง€/ํ‘œ/์–‘์‹์ด ํฌํ•จ๋œ ๊ณต๋ฌธ์„œ ๊ตฌ์กฐ ์ถ”์ถœ
  • ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ฐ์‹œ ๋ณ€ํ™˜ (watch)
  • Markdownโ†’HWPX ์—ญ๋ณ€ํ™˜
  • HWPX ์–‘์‹ ํ•„๋“œ ์ถ”์ถœ

Optional library path

CLI๋งŒ์œผ๋กœ ๋ถ€์กฑํ•˜๋ฉด Node API๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • parse() โ€” Markdown + ๊ตฌ์กฐํ™” ๋ธ”๋ก
  • compare() โ€” ์‹ ๊ตฌ ๋ฌธ์„œ ๋น„๊ต
  • extractFormFields() โ€” ํŒŒ์‹ฑ๋œ ๋ธ”๋ก์—์„œ ์–‘์‹ ํ•„๋“œ ์ถ”์ถœ
  • markdownToHwpx() โ€” Markdownโ†’HWPX ์—ญ๋ณ€ํ™˜

Workflow

1. Prepare the CLI runtime

์ผํšŒ์„ฑ ๋ณ€ํ™˜์ด๋ฉด ๋‘˜ ๋‹ค ํฌํ•จํ•œ npx ํ˜•ํƒœ๋ฅผ ๋ฐ”๋กœ ์“ด๋‹ค.

npx --yes --package kordoc --package pdfjs-dist kordoc --help

๋ฐ˜๋ณต ์‹คํ–‰์šฉ ์ „์—ญ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋ฉด:

npm install -g kordoc pdfjs-dist

ํ˜„์žฌ ๋ฐฐํฌ๋œ kordoc CLI๋Š” pdfjs-dist๊ฐ€ ์—†์œผ๋ฉด kordoc --help ๋‹จ๊ณ„๋ถ€ํ„ฐ ์‹คํŒจํ•˜๋ฏ€๋กœ ๊นจ๋—ํ•œ ํ™˜๊ฒฝ์—์„œ๋Š” ๋‘ ํŒจํ‚ค์ง€๋ฅผ ๊ฐ™์ด ์„ค์น˜ํ•œ ๋’ค ์‹คํ–‰ํ•œ๋‹ค.

2. Prepare a local project for Node API examples

parse(), compare(), extractFormFields(), markdownToHwpx() ๊ฐ™์€ ESM ์˜ˆ์‹œ๋Š” ์ „์—ญ NODE_PATH๊ฐ€ ์•„๋‹ˆ๋ผ ๋กœ์ปฌ ํ”„๋กœ์ ํŠธ ์„ค์น˜ ๊ธฐ์ค€์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค.

mkdir -p ./โ€‹kordoc-local && cd ./โ€‹kordoc-local
npm init -y
npm install kordoc pdfjs-dist

์ด๋ฏธ package.json์ด ์žˆ๋Š” ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋ผ๋ฉด npm install kordoc pdfjs-dist๋งŒ ์ถ”๊ฐ€๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

3. Convert a document to Markdown

npx --yes --package kordoc --package pdfjs-dist kordoc ๋ณด๊ณ ์„œ.hwp -o ๋ณด๊ณ ์„œ.md

์—ฌ๋Ÿฌ ๋ฌธ์„œ๋ฅผ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด:

npx --yes --package kordoc --package pdfjs-dist kordoc ./๋ฌธ์„œํ•จ/โ€‹* -d ./๋ณ€ํ™˜๊ฒฐ๊ณผ

ํŠน์ • ํŽ˜์ด์ง€ ๋ฒ”์œ„๋งŒ ์ฝ๊ณ  ์‹ถ์œผ๋ฉด:

npx --yes --package kordoc --package pdfjs-dist kordoc ๋ณด๊ณ ์„œ.hwp --pages 1-3

4. Extract structured JSON for AI/โ€‹automation

npx --yes --package kordoc --package pdfjs-dist kordoc ๊ฒ€ํ† ์„œ.hwpx --format json > ๊ฒ€ํ† ์„œ.json

JSON ๊ฒฐ๊ณผ์—์„œ๋Š” success, markdown, blocks, metadata๋ฅผ ์šฐ์„  ํ™•์ธํ•œ๋‹ค. ํ‘œ๋‚˜ ์ด๋ฏธ์ง€๊ฐ€ ์ค‘์š”ํ•˜๋ฉด blocks ์•ˆ์˜ table, image ํƒ€์ž…์„ ํ™•์ธํ•œ๋‹ค.

5. Inspect HWPX form fields from parsed blocks

node --input-type=module - <<'EOF'
import { parse, extractFormFields } from "kordoc";

const result = await parse("์‹ ์ฒญ์„œ.hwpx");
if (!result.success) {
  console.error(result.error);
  process.exit(1);
}

const fields = extractFormFields(result.blocks);
console.log(JSON.stringify(fields, null, 2));
EOF

์ž๋™ ๋ณ€ํ™˜์ด ๊ณ„์† ๋“ค์–ด์˜ค๋Š” ํด๋”๋ฉด CLI์˜ watch ๋ช…๋ น์„ ์“ด๋‹ค.

npx --yes --package kordoc --package pdfjs-dist kordoc watch ./๋ฌธ์„œํ•จ

6. Reverse-convert Markdown back to HWPX

node --input-type=module - <<'EOF'
import { markdownToHwpx } from "kordoc";
import { writeFileSync } from "node:fs";

const hwpx = await markdownToHwpx("# ์ œ๋ชฉ\n\n๋ณธ๋ฌธ\n\n| ํ•ญ๋ชฉ | ๊ฐ’ |\n| --- | --- |\n| ์„ฑ๋ช… | ํ™๊ธธ๋™ |");
writeFileSync("์ถœ๋ ฅ.hwpx", Buffer.from(hwpx));
EOF

7. Compare two document versions when diff matters

node --input-type=module - <<'EOF'
import { compare } from "kordoc";
import { readFileSync } from "node:fs";

const before = readFileSync("์ด์ „๋ฒ„์ „.hwp");
const after = readFileSync("์ตœ์‹ ๋ฒ„์ „.hwpx");
const diff = await compare(before, after);
console.log(diff.stats);
EOF

Verify outputs after every run

  • Markdown: ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ๊ณ  ์ œ๋ชฉ/๋ณธ๋ฌธ/ํ‘œ ๊ตฌ์กฐ๊ฐ€ ๊นจ์ง€์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธ
  • JSON: success: true ์™€ blocks / metadata ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ
  • ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ: ์ž…๋ ฅ ์ˆ˜์™€ ์ถœ๋ ฅ ์ˆ˜๊ฐ€ ํฌ๊ฒŒ ์–ด๊ธ‹๋‚˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ
  • ์–‘์‹ ํ•„๋“œ ์ถ”์ถœ: extractFormFields(result.blocks) ๊ฒฐ๊ณผ๊ฐ€ ๋น„์–ด ์žˆ์ง€ ์•Š์€์ง€ ํ™•์ธ
  • ์—ญ๋ณ€ํ™˜: ์ƒ์„ฑ๋œ .hwpx ํŒŒ์ผ์ด ์—ด๋ฆฌ๊ณ  ๊ธฐ๋ณธ ์„œ์‹/ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ์œ ์ง€๋˜๋Š”์ง€ ํ™•์ธ
  • ๋น„๊ต: diff.stats ์— added / removed / modified ๊ฐ’์ด ํ•ฉ๋ฆฌ์ ์ธ์ง€ ํ™•์ธ

Done when

  • ์š”์ฒญํ•œ Markdown / JSON / HWPX ๊ฒฐ๊ณผ๋ฌผ์ด ์ƒ์„ฑ๋˜์–ด ์žˆ๋‹ค
  • ๊ณต๋ฌธ์„œ ํ‘œยท์ด๋ฏธ์ง€ยท๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์ˆ˜์ค€์œผ๋กœ ํ™•์ธ๋˜์–ด ์žˆ๋‹ค
  • ์–‘์‹ ํ•„๋“œ ์ถ”์ถœ์ด๋‚˜ ์—ญ๋ณ€ํ™˜ ์š”์ฒญ์ด ์žˆ์—ˆ๋‹ค๋ฉด ๊ฒฐ๊ณผ/์ถœ๋ ฅ ๊ตฌ์กฐ๊นŒ์ง€ ๊ฒ€์ฆ๋˜์–ด ์žˆ๋‹ค
  • ๋ฐฐ์น˜ ์š”์ฒญ์ด๋ฉด ์ฒ˜๋ฆฌ ๋ฒ”์œ„์™€ ์‹คํŒจ ๊ฑด์ˆ˜๊ฐ€ ์ •๋ฆฌ๋˜์–ด ์žˆ๋‹ค

Failure modes

  • ์†์ƒ๋œ HWP/โ€‹HWPX/โ€‹HWPML ํŒŒ์ผ
  • ์•”ํ˜ธํ™”/๋ฐฐํฌ ์ œํ•œ ๋ฌธ์„œ์—์„œ ์ผ๋ถ€ ํŒŒ์‹ฑ ํ•œ๊ณ„ ๋ฐœ์ƒ
  • ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ PDF์ธ๋ฐ OCR provider๊ฐ€ ์—†์Œ
  • ์ถœ๋ ฅ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ถŒํ•œ ๋ถ€์กฑ
  • ์–‘์‹ ๋ผ๋ฒจ์ด ํ…œํ”Œ๋ฆฟ ์•ˆ์—์„œ ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ฐฐ์น˜๋˜์–ด ์ผ๋ถ€ ํ•„๋“œ๊ฐ€ ์ธ์‹๋˜์ง€ ์•Š์Œ

Notes

  • kordoc์€ HWP/โ€‹HWPX๋ฟ ์•„๋‹ˆ๋ผ HWPML, PDF, XLSX, DOCX๋„ ํ•จ๊ป˜ ๋‹ค๋ฃฌ๋‹ค.
  • ๊ธฐ๋ณธ ๋ชฉ์ ์€ AI๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” Markdown/โ€‹JSON ๋ณ€ํ™˜ ์ด๋‹ค.
  • ํ˜„์žฌ ๋ฐฐํฌ๋ณธ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์„œํ™”๋œ CLI ๋ช…๋ น์€ ๊ธฐ๋ณธ ๋ณ€ํ™˜๊ณผ watch ์ด๋ฉฐ, ์–‘์‹ ์ฒ˜๋ฆฌ๋Š” extractFormFields() ๊ฐ™์€ Node API๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.

More skills from nomadamas

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgรคnger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View