LLM이 기본적으로 마크다운을 쓰는 이유
ChatGPT, Claude, 그 밖의 거의 모든 채팅 기반 모델에게 구조화된 답변을 요청해 보면, 기본적으로 마크다운으로 형식을 맞춰서 답합니다 — 제목, 굵은 글씨, 번호가 매겨진 단계, 코드 펜스(fenced code block)까지 말이죠. 이건 우연이 아닙니다. 마크다운은 아주 적은 추가 문자만으로 구조를 나타냅니다: 제목 하나에 드는 비용은 # 하나와 공백 하나뿐이고, 목록 항목 하나에 드는 비용은 - 하나와 공백 하나뿐입니다. HTML에서 같은 것을 표현하려면 — <h2>, </h2>, <li>, </li> — 같은 내용을 말하는 데 훨씬 더 많은 토큰이 필요하고, 규모가 커지면 토큰 하나하나가 곧 비용과 지연 시간입니다.
마크다운은 또한 이 모델들이 학습한 텍스트 안에서도 매우 풍부하게 등장합니다. GitHub의 README, Stack Overflow 답변, 기술 문서, 수많은 포럼 게시글이 모두 마크다운을 사용하기 때문에, 모델은 제목·목록·코드 펜스가 실제 구조와 어떻게 대응되는지 방대한 사례를 학습해 왔습니다. 그런 익숙함 덕분에 마크다운은 모델이 안정적으로 생성할 수 있고, 자신이(또는 사용자가) 쓴 텍스트에서 모호함 없이 다시 파싱해낼 수 있는 문법이 되었습니다.
프롬프트 속 마크다운
같은 구조적 명확함은 나가는 쪽뿐 아니라 들어오는 쪽에서도 도움이 됩니다. 명확히 라벨링된 섹션으로 나뉜 프롬프트 — 예를 들어 ## Context 제목, ## Task 제목, ## Constraints 제목으로 구성된 프롬프트 — 는 하나의 뭉뚱그려진 문단에서 모델이 알아서 추론하게 만드는 대신, 프롬프트의 각 부분이 어떤 역할을 하는지 명시적인 지도를 제공합니다.
- 항목별로 하나씩 따라야 할 지침에는 글머리 기호나 번호 목록을 사용하세요 — 모델은 목록 항목을 하나로 뭉뚱그리기보다 개별적으로 다루는 경향이 있습니다.
- 모델이 다시 쓰거나 요약하지 않고 있는 그대로 다뤄야 할 코드, 로그 출력, 텍스트는 코드 펜스로 감싸세요. 삼중 백틱 펜스는 대부분의 모델이 존중하는 명확한 경계입니다.
- 같은 형태의 예시 여러 개를 모델에게 제공할 때는 표를 사용하세요 — 요약해야 할 산문이 아니라 구조화된 데이터로 읽힙니다.
RAG를 위한 문서 변환
검색 증강 생성(RAG) 파이프라인을 구축하는 팀들은 원본 문서 — Word 파일, Confluence나 Google Docs 페이지, 스크래핑한 HTML — 를 청킹하고 임베딩하기 전에 흔히 마크다운으로 변환합니다. 이 변환이 가치 있는 이유는 두 가지입니다. 첫째, 마크다운은 좋고 일관된 청크 경계를 만드는 구조적 신호(제목, 목록, 표)를 그대로 유지합니다 — 제목은 새 청크를 시작하기에 자연스러운 지점입니다. 둘째, 시각적 잡음을 제거합니다: 인라인 스타일, 클래스 이름, 추적용 속성, 레이아웃 마크업처럼 의미는 더하지 않으면서 토큰 수만 부풀리는 것들을 걷어냅니다.
이런 파이프라인을 구축하고 있다면, HTML을 마크다운으로 변환 와 Word를 마크다운으로 변환 가 바로 그 첫 변환 단계를 전적으로 여러분의 브라우저 안에서 처리해 줍니다 — 색인화되기 전에 원본 문서 자체가 기기 밖으로 나가면 안 되는 경우에 유용합니다.
llms.txt란 무엇인가?
llms.txt 는 오랫동안 쓰여온 robots.txt 를 본떠 제안된 관행으로, 사이트의 루트에 게시되는 순수 마크다운 파일 안에 가장 중요한 페이지와 문서를 짧고 구조화된 형식으로 나열합니다. robots.txt 가 크롤러에게 색인해도 되는 대상을 알려준다면, llms.txt 는 추론 시점에 검색을 수행하는 언어 모델과 AI 에이전트를 대상으로 합니다: 그 모델들이 이미 가장 잘 파싱하는 형식으로 작성된, 사이트 콘텐츠에 대한 정제된 지도인 셈입니다.
MarkdownLab도 바로 이런 이유로 자체 llms.txt 를 게시합니다 — 도구 세트가 늘어남에 따라 계속 최신 상태로 유지되는, 이 사이트의 도구와 참고 페이지에 대한 순수 텍스트 색인입니다.
실전 패턴
- 모델이 섹션별로 차례차례 추론하기를 바라는 프롬프트와 문서 모두에서, 제목을 사용해 위계를 세우세요.
- 표 형태의 데이터에는 손으로 정렬한 ASCII 아트 대신 실제 마크다운 표를 사용하세요 — 더 깔끔하게 파싱되고 토큰도 적게 듭니다.
- 코드 펜스에는 항상 언어를 태그하세요(
```python,```json) — 추가 비용이 전혀 들지 않으면서 콘텐츠의 문법에 대한 명시적인 힌트를 모델에게 줍니다. - 가능하면 깊게 중첩된 목록은 피하세요. 일부 파서와 프롬프트 처리 파이프라인은 한두 단계를 넘어서는 중첩을 평탄화해 버립니다.
- 링크 텍스트 자체에 보존하고 싶은 의미가 담겨 있다면, 그냥 URL을 쓰는 대신 명시적인 링크 문법(
[text](url))을 사용하세요.
다음으로 무엇을 볼까
문법 자체가 처음이신가요? 마크다운이란 무엇인가 또는 전체 마크다운 치트시트부터 시작하세요. 바로 써보고 싶다면 에디터 를 열어 실시간으로 시도해 보세요.