blog logo
iaman

AI는 왜 마크다운으로 일할까


이 블로그 저장소에 .md 파일이 101개 있다. 글 38편은 그렇다 치고, 나머지가 이상하다.

docs/superpowers/specs/2026-10-15-blog-i18n-design.md
docs/superpowers/plans/2026-10-15-i18n-routes-and-ui.md
docs/worklog/2026-10-26-search-appearance.md
AGENTS.md

설계 문서, 구현 계획, 작업 기록. 전부 AI와 같이 일하면서 생긴 것들이다. 게다가 AGENTS.md는 내가 만들지도 않았다 — next dev를 돌리면 Next가 알아서 만들어 놓는다. 지워도 다시 생긴다.

왜 하필 마크다운일까. JSON이 더 구조적이고, HTML이 더 표현력 있고, 그냥 txt가 더 단순한데.

재봤다.

토큰을 재보자

같은 내용 — 소제목 하나, 문단 하나, 목록 셋, 표 한 줄 — 을 네 가지 형식으로 쓰고 토큰을 셌다.

형식 바이트 토큰 마크다운 대비
markdown 354 100 기준
HTML 501 173 1.73배
JSON 900 242 2.42배
평문 305 80 0.80배

HTML은 1.7배, JSON은 2.4배다.

LLM에게 토큰은 곧 돈이고 시간이고, 무엇보다 한 번에 볼 수 있는 양이다. 컨텍스트 창이 20만 토큰이라면 마크다운으로는 문서 2천 개를 볼 수 있는 자리에 JSON으로는 826개밖에 못 넣는다.

어디서 차이가 나나

구조를 표시하는 비용을 따로 쟀다.

표현 마크다운 HTML
제목 ## 제목 → 2 <h2>제목</h2> → 9
목록 항목 - 항목 → 3 <li>항목</li> → 7
강조 **굵게** → 5 <strong>굵게</strong> → 8
링크 [링크](url) → 9 <a href="url">링크</a> → 13

제목이 4.5배다. HTML은 <h2>를 쓰고 </h2>로 닫는데, 닫는 쪽은 새로운 정보를 하나도 주지 않는다. 마크다운의 ##는 줄바꿈이 닫아 준다.

JSON은 더하다. 중괄호, 따옴표, 콜론, 쉼표, 들여쓰기까지 전부 토큰이다.

실제 글로도 재봤다

합성 예제는 내가 유리하게 만들 수 있으니, 이 블로그의 글 19편을 같은 렌더러(renderPostBody)로 돌려 원본과 결과물을 비교했다.

글 md 토큰 HTML 토큰 배수
ai-developer-responsibility 4,704 10,097 2.15배
swe-bench 3,451 5,131 1.49배
npm-tgz 3,755 6,437 1.71배
Oxc 1,849 5,074 2.74배
NDJSON-JSON 813 2,893 3.56배
19편 합계 27,560 69,560 2.52배

42,000 토큰 차이다. 표와 코드블록이 많은 글일수록 배수가 커진다 — NDJSON-JSON이 3.56배인 건 짧은 목록 항목이 많아서다. 항목당 <li></li>가 붙는다.

AI에게 "이 블로그 글 전체를 읽고 분류해 줘"라고 시킬 때, 마크다운이면 2만 7천 토큰, HTML이면 7만 토큰이다.

그런데 평문이 더 싸다

표를 다시 보면 걸리는 게 있다. 평문이 마크다운보다 20% 싸다. 그럼 평문을 쓰면 되지 않나.

안 된다. 평문에는 "이게 제목이다"라는 정보가 없기 때문이다.

캐싱 동작
코드 캐싱은 파싱과 컴파일 결과를 저장해 시작 시간을 줄인다.
콜드 런: 처음 방문

첫 줄이 제목인지, 그냥 짧은 문장인지 알 수 없다. 셋째 줄이 목록 항목인지 문단인지도 모른다. 사람은 눈치로 읽지만 기계는 추측해야 하고, 추측은 틀린다.

마크다운은 그 20%를 내고 모호함을 없앤다. ##가 있으면 제목이고, -가 있으면 목록이다. 구조를 얻는 값으로 20%는 싸다.

마크다운의 자리는 "구조가 있는 것 중에 가장 싼 것"이다. 구조를 버리면 20% 아끼고, 구조를 더 격식 있게 표현하면 73%에서 142%를 더 낸다.

깨졌을 때가 진짜 이유다

여기가 가장 중요한데 잘 이야기되지 않는다.

LLM은 토큰을 하나씩 순서대로 뱉는다. 되돌아가서 고치지 못한다. 그러니 중간에 한 글자를 틀릴 수 있다. 그때 무슨 일이 생기는지가 형식마다 다르다.

같은 내용을 마크다운과 JSON으로 쓰고, 각각 한 글자씩만 지웠다.

마크다운 : 닫는 ** 중 하나를 지움
JSON    : 닫는 } 를 지움

결과:

형식 독자에게 도달한 글자
마크다운 60자 / 57자 (105%)
JSON 0자 / 57자 (0%)

JSON은 전멸한다.

SyntaxError: Expected ',' or '}' after property value
             in JSON at position 118

파서가 던지고 끝이다. 118번째 글자에서 틀렸는데 1번째 글자부터 못 읽는다. 내용의 99%가 멀쩡해도 0%가 도달한다.

마크다운은 글자가 전부 살아남는다. 강조가 안 걸릴 뿐이다. 105%인 건 짝을 잃은 * 하나가 글자로 그냥 보이기 때문이다. 그게 전부다.

이 차이를 부르는 이름이 있다. 실패 모드가 완만하다(graceful degradation).

  • JSON·XML은 전부 아니면 전무다. 문법이 깨지면 파싱 자체가 실패한다
  • 마크다운은 깨진 만큼만 잃는다. 문법으로 못 읽은 기호는 그냥 글자가 된다

생성하는 쪽이 완벽하지 않다면, 두 번째가 압도적으로 낫다.

이 블로그도 그 성질에 한 번 기댄 적이 있다. 한국어 본문에서 **1.96%**였다 같은 강조가 안 걸리는 문제가 있었는데 — 닫는 ** 앞이 구두점이고 뒤가 조사라 CommonMark가 강조로 안 본다 — 그래도 글자는 다 보였다. 깨진 건 굵게 표시뿐이었다.

사람과 기계가 같은 파일을 본다

지금까지는 전부 "기계에게 싸다"는 이야기였다. 그런데 이게 다였다면 더 싼 포맷이 이겼을 것이다.

진짜 이유는 하나 더 있다. 사람도 읽는다.

마크다운은 2004년에 John Gruber가 만들었고, 설계 목표가 "마크업처럼 보이지 않는 마크업"이었다. 렌더링하지 않은 원본이 그대로 읽히는 것 — 그게 전부였다.

20년 뒤 그 성질이 전혀 다른 데서 쓸모가 생겼다.

사람 기계
읽기 에디터에서 그대로 토큰 적게
쓰기 문법 안 외워도 됨 틀려도 덜 깨짐
고치기 한 줄 수정 한 줄 수정
리뷰 git diff로 보임 —

마지막 줄이 크다. JSON이나 바이너리 문서는 한 글자를 고쳐도 diff가 엉망이 되는데, 마크다운은 고친 줄만 바뀐다. AI가 문서를 고쳤을 때 "뭘 바꿨는지" 사람이 5초 만에 확인할 수 있다.

AGENTS.md

이게 표준이 됐다. AGENTS.md는 2025년 8월 OpenAI 주도로 Google, Cursor, Factory가 함께 만든 명세고, 2025년 12월 Linux Foundation의 Agentic AI Foundation에 기증됐다. 6만 개 넘는 오픈소스 프로젝트가 쓰고 있다고 한다.

내용은 그냥 마크다운이다. 스키마도, 버전 필드도, frontmatter도 없다.

## This is NOT the Next.js you know

This version has breaking changes — APIs, conventions, and file
structure may all differ from your training data.

이 저장소의 AGENTS.md에 실제로 들어 있는 내용이다. Next가 써 놓은 것이고, 읽는 대상은 AI지만 내가 읽어도 그대로 읽힌다. 스키마를 정의했다면 이렇게 못 썼다.

확실하지 않은 것

흔히 "학습 데이터에 마크다운이 많아서"라고들 한다. 그럴듯하고 아마 맞겠지만, 나는 확인할 방법이 없다. 어느 모델도 학습 데이터 구성을 공개하지 않는다.

그래서 이 글에서는 뺐다. 위의 네 가지 — 토큰, 구조, 실패 모드, 사람이 읽음 — 는 전부 직접 재거나 문서로 확인한 것이다.

정리

  • 토큰이 싸다. 같은 내용이 HTML의 1/1.7, JSON의 1/2.4. 이 블로그 글 19편 기준 42,000 토큰 차이
  • 그래도 평문보다는 20% 비싸다. 그 20%로 "무엇이 제목인지"를 산다. 마크다운은 구조가 있는 것 중 가장 싼 것이다
  • 깨져도 읽힌다. 한 글자가 틀렸을 때 JSON은 0%가 살아남고 마크다운은 100%가 살아남는다. 한 토큰씩 뱉는 기계에게 이게 결정적이다
  • 사람과 기계가 같은 파일을 본다. git diff에 보이고, 리뷰할 수 있고, 한 줄만 고칠 수 있다

마크다운이 AI 시대를 위해 설계된 건 아니다. 2004년에 "마크업처럼 보이지 않게" 만든 것이 20년 뒤 사람과 기계가 공유할 수 있는 거의 유일한 형식이 됐을 뿐이다.

AI가 md 파일로 일하는 건 트렌드가 아니라, 조건이 맞아떨어진 결과다.

참고