llms.txt: LLM을 위한 웹사이트 안내서
요즘 ChatGPT나 Claude 같은 AI 서비스를 사용해서 웹사이트에 대해 질문해본 적 있으신가요?
예를 들어, “FastHTML 사용법 알려줘”라고 물어보면 AI가 답변을 해주는데요. 그런데 가끔 AI가 엉뚱한 답변을 하거나 오래된 정보를 알려줄 때가 있습니다. LLM 초창기에는 주로 학습된 데이터가 오래되서 그랬지만 최근에는 LLM이 스스로 웹사이트 검색도 하는데… 왜 그럴까요?
이유는 간단합니다. 대부분의 웹사이트는 사람을 위해 설계되어 있기 때문이죠. 복잡한 HTML 구조, 내비게이션, 광고, 자바스크립트 등이 섞여 있는 웹페이지에서 핵심 정보만 추출하는 것은 AI에게도 쉬운 일이 아닙니다. 게다가 AI의 컨텍스트 윈도우(한 번에 처리할 수 있는 텍스트 양)에는 한계가 있어서, 웹사이트 전체를 통째로 읽어들이기도 어렵습니다.
이런 문제를 해결하기 위해 등장한 것이 바로 llms.txt입니다. 이 글에서는 llms.txt가 무엇인지, 어떻게 작성하고 활용하는지 알아보겠습니다.
llms.txt란?

llms.txt는 웹사이트 루트 경로(/llms.txt)에 위치하는 마크다운 파일로, LLM이 해당 웹사이트의 내용을 쉽게 이해할 수 있도록 핵심 정보를 정리해둔 문서입니다.
이 제안은 2024년 9월 fast.ai의 창립자 Jeremy Howard가 처음 발표했습니다. 그는 LLM이 웹사이트 정보를 활용할 때 겪는 어려움을 해결하기 위해, 간결하고 구조화된 정보를 한 곳에 모아두자는 아이디어를 제시했죠.
흥미롭게도 이전 포스팅에서 다뤘던 AGENTS.md가 AI 코딩 에이전트를 위한 프로젝트 안내서라면, llms.txt는 범용 LLM을 위한 웹사이트 안내서라고 볼 수 있습니다. 둘 다 “AI가 이해하기 쉬운 정보를 제공하자”는 같은 철학을 공유하고 있죠.
robots.txt, sitemap.xml과의 차이
웹사이트에는 이미 robots.txt나 sitemap.xml 같은 표준 파일들이 있는데, 왜 llms.txt가 따로 필요할까요?
robots.txt는 검색 엔진 크롤러에게 “어디를 크롤링해도 되고, 어디는 하지 말라”고 알려주는 접근 제어용 파일입니다. 이에 반해 llms.txt는 LLM에게 “우리 사이트에서 가장 중요한 정보는 여기있어”라고 안내하는 콘텐츠 가이드 역할을 합니다.
sitemap.xml은 웹사이트의 모든 색인 가능한 페이지 목록을 제공합니다. 하지만 이 목록은 보통 너무 방대해서 LLM의 컨텍스트 윈도우에 다 담기 어렵고, 각 페이지의 중요도나 관계도 알려주지 않습니다. 또한 sitemap.xml에는 LLM이 읽기 쉬운 마크다운 버전의 페이지 링크가 포함되어 있지 않을 수도 있죠.
정리하면 robots.txt는 “접근 권한”, sitemap.xml은 “전체 목록”, llms.txt는 “핵심 요약”이라고 생각하면 됩니다.
llms.txt 형식
llms.txt는 마크다운 형식을 사용합니다. 왜 XML이나 JSON 같은 구조화된 형식이 아닌 마크다운일까요? LLM은 마크다운을 매우 잘 이해하기 때문입니다. 동시에 사람도 쉽게 읽고 편집할 수 있고, 정규 표현식 같은 전통적인 프로그래밍 기법으로도 파싱이 가능합니다.
llms.txt 파일은 다음과 같은 구조를 따릅니다:
# 프로젝트 이름
> 프로젝트에 대한 간단한 설명. 나머지 파일을 이해하는 데 필요한 핵심 정보를 담습니다.
프로젝트에 대한 추가 설명이나 제공된 파일들을 해석하는 방법에 대한 안내를 여기에 작성합니다.
## 섹션 이름
- [링크 제목](https://example.com/page.md): 해당 링크에 대한 설명
- [다른 링크](https://example.com/other.md): 다른 페이지 설명
## Optional
- [보조 자료](https://example.com/extra.md): 필수는 아니지만 도움이 되는 자료
여기서 주목할 점이 몇 가지 있는데요. 우선 H1 헤딩에 프로젝트 이름을 적는 것만이 유일한 필수 요소입니다. 그 다음에 오는 블록쿼트(인용문)에는 프로젝트의 핵심 요약을 담고, 이후에 일반 텍스트로 추가 설명을 작성할 수 있습니다.
H2 헤딩으로 구분된 섹션에는 관련 문서 링크들을 나열합니다. 각 링크는 [제목](URL): 설명 형식으로 작성하죠. 특히 “Optional”이라는 이름의 섹션은 특별한 의미가 있는데, 컨텍스트를 줄여야 할 때 이 섹션의 링크들은 건너뛸 수 있다는 것을 나타냅니다.
실제 예제
FastHTML 프로젝트의 llms.txt 파일을 예로 살펴보겠습니다:
# FastHTML
> FastHTML is a python library which brings together Starlette, Uvicorn,
> HTMX, and fastcore's `FT` "FastTags" into a library for creating
> server-rendered hypermedia applications.
Important notes:
- Although parts of its API are inspired by FastAPI, it is *not*
compatible with FastAPI syntax and is not targeted at creating API services
- FastHTML is compatible with JS-native web components and any vanilla JS
library, but not with React, Vue, or Svelte.
## Docs
- [FastHTML quick start](https://fastht.ml/docs/tutorials/quickstart_for_web_devs.html.md): A brief overview of many FastHTML features
- [HTMX reference](https://github.com/bigskysoftware/htmx/blob/master/www/content/reference.md): Brief description of all HTMX attributes, CSS classes, headers, events, extensions, js lib methods, and config options
## Examples
- [Todo list application](https://github.com/AnswerDotAI/fasthtml/blob/main/examples/adv_app.py): Detailed walk-thru of a complete CRUD app in FastHTML showing idiomatic use of FastHTML and HTMX patterns.
## Optional
- [Starlette full documentation](https://gist.githubusercontent.com/...): A subset of the Starlette documentation useful for FastHTML development.
이 예제에서 몇 가지 패턴을 발견할 수 있습니다. 우선 프로젝트가 무엇인지 간결하게 설명하고, 흔히 혼동할 수 있는 부분(FastAPI와의 차이, React 미지원 등)을 명확히 밝힙니다. 그리고 문서, 예제, 선택적 자료를 섹션별로 구분해서 LLM이 필요에 따라 적절한 자료를 찾을 수 있게 합니다.
.md 확장자 규칙
llms.txt 제안에는 흥미로운 부가 규칙이 있습니다. 웹페이지의 마크다운 버전을 같은 URL에 .md 확장자를 붙여서 제공하자는 것입니다.
예를 들어, HTML 페이지가 https://example.com/docs/guide.html에 있다면, 같은 내용의 마크다운 버전을 https://example.com/docs/guide.html.md에서 제공하는 거죠. 파일명이 없는 URL(디렉토리)의 경우에는 index.html.md를 붙입니다.
FastHTML 프로젝트는 이 규칙을 실제로 적용하고 있습니다. 일반 HTML 문서 페이지와 같은 내용의 마크다운 버전을 모두 제공하죠. 이렇게 하면 LLM이 HTML을 파싱할 필요 없이 깔끔한 마크다운을 바로 읽을 수 있습니다.
확장 형식: llms-full.txt
사이트에 따라 기본 llms.txt 외에 확장 버전을 제공하기도 합니다.
llms.txt는 핵심 문서 링크만 담고 있어서, LLM이 실제로 내용을 읽으려면 각 링크를 따로 방문해야 합니다. 이런 번거로움을 줄이기 위해 모든 내용을 하나의 파일에 담은 llms-full.txt를 제공하는 경우도 있습니다.
FastHTML 프로젝트는 llms-ctx.txt와 llms-ctx-full.txt라는 두 가지 확장 파일을 제공합니다. 전자는 필수 링크만, 후자는 Optional 섹션까지 모두 포함합니다. 이 파일들은 llms_txt2ctx라는 CLI 도구로 자동 생성됩니다.
llms.txt 활용 사례
llms.txt는 다양한 상황에서 활용될 수 있습니다. 소프트웨어 문서화가 가장 대표적인데, 개발자가 “이 라이브러리에서 비동기 요청은 어떻게 보내?”라고 물으면 LLM이 llms.txt를 통해 관련 문서를 빠르게 찾아 정확한 답변을 제공할 수 있죠.
비즈니스 웹사이트에서도 유용합니다. 회사 구조, 서비스 소개, 자주 묻는 질문 등을 llms.txt에 정리해두면, AI 기반 고객 지원이나 챗봇이 더 정확한 정보를 제공할 수 있습니다.
개인 웹사이트나 포트폴리오에도 적용할 수 있습니다. 이력서, 프로젝트 목록, 블로그 글 등을 정리해두면 “이 사람의 전문 분야가 뭐야?”같은 질문에 AI가 잘 답변할 수 있게 됩니다.
교육 기관에서는 강의 목록, 커리큘럼, 학사 정보 등을 정리할 수 있고, 전자상거래 사이트에서는 제품 카테고리, 반품 정책, FAQ 등을 요약해둘 수 있습니다.
llms.txt 생성 도구
llms.txt를 직접 작성할 수도 있지만, 다양한 도구들이 자동 생성을 도와줍니다.
VitePress를 사용하는 프로젝트라면 vitepress-plugin-llms를 사용할 수 있고, Docusaurus 사용자는 docusaurus-plugin-llms를 활용할 수 있습니다. Drupal 사이트는 LLM Support 모듈을 설치하면 됩니다.
llms.txt 파일을 파싱해서 LLM 컨텍스트로 확장하는 도구도 있습니다. Python의 llms_txt2ctx CLI 도구나, PHP용 llms-txt-php 라이브러리가 대표적이죠. VS Code 사용자라면 PagePilot 확장을 사용해서 외부 문서를 자동으로 로드하고 AI 응답을 향상시킬 수 있습니다.
어떤 사이트들이 llms.txt를 제공하는지 궁금하다면 llmstxt.site나 directory.llmstxt.cloud 같은 디렉토리 사이트에서 확인할 수 있습니다.
llms.txt 작성 팁
효과적인 llms.txt를 작성하려면 몇 가지 원칙을 지키는 것이 좋습니다.
우선, 간결하고 명확한 언어를 사용하세요. LLM이 이해하기 쉽도록 모호한 표현이나 설명 없는 전문 용어는 피하는 것이 좋습니다.
또한, 링크에는 항상 간단한 설명을 붙여주세요. 단순히 URL만 나열하는 것보다 “A brief overview of many FastHTML features”처럼 해당 문서가 무엇을 다루는지 알려주면 LLM이 적절한 문서를 선택하는 데 도움이 됩니다.
마지막으로, 작성한 llms.txt를 실제로 테스트해보세요. llms_txt2ctx 같은 도구로 컨텍스트 파일을 생성한 뒤, AI에게 질문을 던져보고 올바른 답변이 나오는지 확인하세요.
마치며
llms.txt는 아직 공식 웹 표준은 아니지만, AI 시대에 맞는 새로운 웹 문서화 방식으로 빠르게 주목받고 있습니다. Anthropic처럼 AI 회사들도 자체 웹사이트에 llms.txt를 적용하고 있고, Yoast 같은 SEO 도구들도 llms.txt 자동 생성 기능을 추가하고 있죠.
생각해보면 README.md가 사람을 위한 프로젝트 소개서로 자리잡은 것처럼, llms.txt도 AI를 위한 웹사이트 소개서로 표준화될 가능성이 높습니다. 웹사이트를 운영하고 계신다면, 지금 llms.txt를 추가해서 AI 친화적인 사이트로 한 발 앞서 나가보는 것은 어떨까요?
llms.txt에 대한 더 자세한 정보는 공식 사이트에서 확인하실 수 있고, 궁금한 점이 있다면 커뮤니티 Discord 채널에서 다른 개발자들과 의견을 나눌 수 있습니다.
This work is licensed under
CC BY 4.0