실제 운영 중인 30개의 llms.txt 파일을 감사한 결과: 5가지 안티 패턴(Anti-Patterns)이 이미 형성되고 있습니다.
요약
실제 운영 중인 30개의 llms.txt 파일을 감사한 결과, Anthropic, Stripe 등 주요 기업들조차 5가지 안티 패턴 중 하나 이상을 범하고 있음이 발견되었습니다. 특히 너무 많은 링크를 나열하여 컨텍스트 윈도우 예산을 초과하거나, robots.txt 설정과 충돌하는 등의 품질 문제가 지적되었습니다.
핵심 포인트
- llms.txt는 사이트맵의 대체재가 아니라 LLM을 위한 핵심 요약본이어야 함
- 파일 크기는 컨텍스트 윈도우를 고려하여 10KB 내외로 유지하고, 링크는 10~20개로 제한할 것을 권장
- llms.txt에 포함된 URL이 robots.txt의 Disallow 설정과 모순되지 않도록 주의해야 함
- 문서 비중이 높은 경우 제품별로 슬림한 루트 llms.txt를 구성하는 구조적 접근이 필요함
이번 달에 세 번째 llms.txt를 배포했고, 엄청난 생산성을 느꼈습니다. 노트북을 닫고 커피를 따르며, AI 검색 문제 전체가 개인적인 차원에서 이제 해결되었다고 느낄 법한 그런 생산성 말입니다. 그러고 나서 우리가 배워야 할 기업들의 실제 운영 중인 llms.txt 파일 30개를 열어보았습니다. Anthropic, Stripe, Vercel, Cloudflare, Hugging Face, Mintlify, Astro, Linear. 누군가에게 "봐, 진지한 플레이어들은 이렇게 하고 있어"라고 말할 때 인용하는 이름들입니다. 30개의 파일 중 24개에서 다섯 가지 문제 중 적어도 하나가 발견되었습니다. 그중 세 가지 문제는 제 파일에도 있었습니다. 커피가 식어버렸죠.
감사(Audit)를 수행한 방법
설정은 부끄러울 정도로 간단했습니다. 저는 공개된 llms.txt 파일을 가지고 있으며 2026년 개발자들에게 중요할 30개의 도메인을 선정했습니다: AI 연구소, 인프라 기업, 인기 있는 개발 도구들입니다. 저는 각각을 curl로 가져왔습니다. 그것을 사용하는 LLM(Large Language Model)의 시각으로 각각을 읽었습니다. 무엇이 잘못되었는지 기록했습니다. 이것은 과학이 아닙니다. 터미널을 열어둔 월요일 저녁의 작업일 뿐입니다. 하지만 패턴이 너무 빨리 나타나서 30개에서 멈췄습니다. 다음 10개도 똑같은 내용이었을 것입니다. 2026년 3월 SE Ranking의 30만 개 도메인 연구에 따르면 채택률은 약 10%로 나타났습니다. codersera의 2026년 5월 가이드에 따르면 그 수는 전년 대비(YoY) 500% 성장한 약 844,000개 사이트로 추정됩니다. 표준(Standard)은 채택 경쟁에서는 이기고 있지만, 품질 경쟁에서는 지고 있습니다.
다섯 가지 안티 패턴(Anti-Patterns)
안티 패턴 1: "모든 것을 쏟아붓기 (Dump everything)"
이것은 가장 흔한 실패 사례이며 저 또한 가장 많이 저지르는 실수입니다. 작성자가 llms.txt를 두 번째 사이트맵(sitemap)처럼 취급하는 것입니다. 800개의 링크, 1,200개의 링크. 제가 연 파일 중 하나에는 2019년 이후의 모든 블로그 게시물이 우선순위나 그룹화 없이 평면적으로 나열되어 있었습니다. llms.txt의 핵심은 sitemap.xml이 이미 존재한다는 점입니다. 규격(spec)에서 "10KB 권장"이라고 말하는 것은 파일 크기에 대해 까다롭게 구는 것이 아닙니다. 그것은 다음과 같은 의미입니다: 만약 LLM이 실제 질문을 위한 예산을 남겨둔 채 컨텍스트 윈도우(context window) 안에서 이 모든 것을 읽을 수 없다면, 당신은 도움을 준 것이 아니라 문제를 옮긴 것뿐입니다. 해결책은 냉혹합니다: 10개에서 20개의 링크만 선택하세요. 50개가 아닙니다. "주요 섹션과 몇 가지 추가 항목"도 아닙니다. 딱 10개에서 20개입니다.
그 외의 모든 내용은 ## Optional 섹션에 넣거나 sitemap.xml에 남겨두세요. 만약 문서(docs) 비중이 높은 제품이라면, Cloudflare가 사용하는 패턴을 활용하세요. 즉, 각 제품별 llms.txt 파일로 연결되는 슬림한 루트(root) llms.txt를 만드는 것입니다. 이렇게 하면 각 파일이 정해진 예산(budget) 내에 머물 수 있습니다. 에이전트(Agent)는 자신에게 필요한 파일만 가져오면 됩니다. 수도꼭지를 고치기 위해 백과사전 전체를 읽는 사람은 아무도 없습니다.
안티 패턴 2: "robots.txt와 모순됨 (Contradicts robots.txt)"
robots.txt를 열고, llms.txt를 여세요. 그리고 경로를 비교(Diff)해 보세요. 제가 감사한 파일 중 약 3분의 1은 llms.txt에 나열된 URL이, llms.txt를 읽을 가능성이 가장 높은 크롤러(Crawler)들에 대해 robots.txt에서 명시적으로 Disallow(거부)되어 있었습니다. 가장 고통스러운 사례는 다음과 같습니다: 어떤 문서 사이트가 robots.txt의 /docs/ 경로에서 GPTBot과 ClaudeBot을 차단해 놓고, llms.txt에는 40개의 /docs/* URL을 나열해 놓은 경우입니다. llms.txt 파일은 "여기가 중요한 곳입니다"라고 말하지만, robots.txt는 "당신은 여기에 접근할 수 없습니다"라고 말합니다. 크롤러는 robots.txt를 따릅니다. 결국 llms.txt는 장식용이 되어버립니다. 이는 보통 두 파일의 관리 주체가 서로 다른 팀이거나(또는 동일 인물이 두 달에 걸쳐 따로 관리할 때) 발생합니다. 해결책은 두 파일을 모두 열어놓고 5분간 검토하는 것입니다. llms.txt에 있는 모든 URL은, 당신이 실제로 읽기를 원하는 모든 AI 크롤러에 대해 robots.txt에서 허용(Allow)되어 있어야 합니다. 진심으로 AI 크롤러를 차단하고 싶다면 그렇게 하셔도 좋습니다. 하지만 그렇다면 당신이 좋아하는 페이지들의 친절한 디렉토리를 그들에게 작성해 주지는 마세요.
안티 패턴 3: ".md 없이 HTML 링크만 존재함 (HTML links only, no .md)"
Jeremy Howard의 원래 제안에는 영리한 관례가 포함되어 있습니다. URL 뒤에 .md를 붙이면 내비게이션, 광고, JavaScript 번들이 없는 페이지의 깔끔한 마크다운 (Markdown) 버전을 반환해야 한다는 것입니다. 즉, .html.md 패턴입니다. 하지만 이를 실행하는 곳은 거의 없습니다. 제가 조사한 30개의 파일 중, .md 동반 파일을 제공하는 곳은 단 6개뿐이었습니다. 나머지 24개는 LLM에게 HTML 페이지 링크를 건네주는데, 크롤러가 JavaScript를 실행하지 못하기 때문에 LLM은 이를 깔끔하게 파싱(Parse)할 수 없습니다. Stripe는 이를 잘 수행하고 있습니다. 모든 문서 URL은 .md 쌍둥이 파일을 가지고 있으며, llms.txt는 .md 버전을 가리킵니다.
llmoframework.com의 레퍼런스 템플릿 섹션에서는 이를 대부분의 팀이 놓치고 있는 단일 항목 중 가장 레버리지(leverage, 영향력)가 높은 요소로 지목합니다. 왜냐하면 이것이 "AI가 페이지를 찾을 수 있는가"와 "AI가 페이지에 있는 내용을 실제로 읽을 수 있는가"의 차이를 만들기 때문입니다. 해결 방법은 사용 중인 스택(stack)에 따라 다릅니다. Astro 및 Next.js의 경우, 빌드 타임(build time)에 .md 버전을 생성하는 것은 30줄 정도의 코드 변경만으로 가능합니다. 동적 CMS 사이트의 경우, .md 접미사에 마크다운 직렬화(markdown serialization)를 반환하는 에지 함수(edge function)를 사용하는 것이 정석입니다. 어떤 방식이든, 이것은 투입되는 노력과 결과 사이의 차이(delta)가 가장 큰 안티 패턴입니다.
안티 패턴 4: "About 페이지 연극 (About page theatre)"
감사한 30개의 파일 중 8개는 파일 본문 전체를 마케팅 피치(marketing pitch)로 사용하고 있었습니다. 회사의 미션에 관한 세 문단, 창업자의 인용구, 브랜드의 역사, 그리고 링크 두 개가 전부였습니다. 전체 콘텐츠는 "우리는 AI-native 분야의 선구적인 리더입니다"라는 식이었죠. LLM은 당신의 분위기(vibe)를 구매하지 않습니다. 그들에게는 콘텐츠를 가리키는 포인터(pointer)가 필요합니다. "이 사이트는 무엇인가"에 대한 내용은 H1 태그와 인용구 요약(blockquote summary)에 담아야 합니다. 그 아래의 모든 내용은 구체적인 설명이 포함된 특정 페이지로의 링크여야 합니다. 만약 당신의 llms.txt가 홈페이지처럼 읽힌다면, 당신은 홈페이지를 작성한 것입니다. GEO(Generative Engine Optimization) 연구가 콘텐츠 측면에서 밀어붙이고 있는 동일한 논리, 즉 "모호한 주장은 인용되지 않으며, 출처가 있는 구체적인 주장은 인용된다"는 원칙이 llms.txt 자체에도 적용됩니다.
안티 패턴 5: "2024년에 멈춰 있음 (Frozen in 2024)"
제가 감사한 파일 중 5개는 한 번 배포된 후 다시는 손대지 않은 듯한 명백한 흔적이 있었습니다. 404 오류가 발생하는 페이지로 연결되는 링크, 더 이상 존재하지 않는 제품명, 그리고 llms.txt가 제안된 지 6개월밖에 되지 않았고 "AI 검색"이 Perplexity가 사람들에게 여전히 설명하고 있던 단계인 2024년에 마지막 의미 있는 업데이트가 이루어졌음을 보여주는 날짜들이 있었습니다. Sitemap.xml은 자동 생성됩니다. robots.txt는 거의 변하지 않습니다. llms.txt는 그 기묘한 중간 지점에 놓여 있습니다. 문서(documentation)처럼 수동으로 큐레이션되지만, 작년에 pnpm으로 마이그레이션했음에도 "우리는 Yarn을 사용합니다"라고 적혀 있는 README 파일과 같은 노후화(staleness) 위험을 안고 있습니다. 해결책은 규율(discipline)이 아니라 자동화(automation)입니다. llms.txt에 나열된 URL 중 404 오류가 있는 항목을 찾아내는 CI 체크(CI check)를 추가하세요.
매 분기마다 분석 데이터(analytics)를 바탕으로 "주요 기사(featured articles)" 섹션을 재생성하세요. 이 파일을 일회성 출시 결과물이 아닌, 설정 아티팩트(config artifact)처럼 취급해야 합니다. 실제 llms.txt 사례를 분석한 Mintlify의 조사에 따르면, 이는 고객군 전체에서 발견된 두 번째로 큰 패턴으로 지적되었습니다. 첫 번째는 안티 패턴 1(Anti-Pattern 1)이었습니다. 따라서 이번 주에 해결해야 할 과제는 이 두 가지입니다. 제가 직접 배포한 세 가지 사례는 다음과 같습니다. 정직 섹션(Honesty section). 제가 관리하는 세 개의 llms.txt 파일 중: 하나는 47개의 링크가 포함되어 있었습니다. 안티 패턴 1(Anti-Pattern 1)입니다. 하나는 .md 동반 파일을 아직 설정하지 않아 HTML 전용 URL을 가리키고 있었습니다. 안티 패턴 3(Anti-Pattern 3)입니다. 하나는 4개월 동안 업데이트되지 않았으며, 제가 이미 이름을 변경한 슬러그(slug) 아래에 게시물을 나열하고 있었습니다. 안티 패턴 5(Anti-Pattern 5)와 디저트로 301 리다이렉트 체인(301-redirect chain)까지 있었습니다. 다른 사람들의 파일을 4분의 3 정도 읽기 전까지는 이 중 그 어떤 것도 잡아내지 못했습니다. 감사는 그들에 대해 수행하려던 것이었으나, 결국 저에 대한 것이 되었습니다. 아마도 거기서 얻을 교훈이 있겠지만, 저는 아직 당혹스러운 단계에 머물러 있습니다. 두 가지를 수정한 후 무엇이 변했을까요? 저는 두 가지를 수정했습니다. 47개의 링크가 있던 파일은 16개의 링크와 ## Optional 섹션으로 변경되었습니다. HTML 전용 파일은 빌드 타임 훅(build-time hook)을 통해 16개의 주요 URL에 대한 .md 쌍을 갖게 되었습니다 (Astro 덕분에 예상보다 쉽게, 약 25줄 정도로 해결했습니다). "AI 인용(AI citations)이 X% 급증했다"라고 말씀드릴 수는 없습니다. 파일이 생성된 지 일주일밖에 되지 않았고, 이 정도 규모에서의 인용 측정은 노이즈(noisy)가 심하기 때문입니다. 제가 말씀드릴 수 있는 것은, 이제 이 파일이 제가 첫날부터 적용했어야 할 냄새 테스트(smell test)를 통과한다는 점입니다: 200K 컨텍스트 윈도우(context window)를 가지고 다른 탭 10개를 열어둔 모델이 이전 버전보다 이 파일을 선호할 것인가? 네. 당연히 그렇습니다. 이전 버전은 읽을 수 없는 수준이었습니다. llms.txt에 대한 정직한 입장. 회의론자들이 부분적으로 맞습니다. SE Ranking의 30만 도메인 연구에서는 측정 가능한 인용 상승을 발견하지 못했습니다. 주요 LLM들은 해당 파일을 가져온다는 사실을 공개적으로 확인하지 않습니다. 이 표준에는 W3C 인증이 없습니다. 하지만 회의론자들이 부분적으로 틀리기도 했습니다.
오늘날 IDE 에이전트 (IDE agents; Cursor, Cline, Continue), 주요 AI 검색 엔진 (major AI search engines; ChatGPT search, Perplexity, You.com), 그리고 점점 늘어나고 있는 MCP 통합 도구들은 llms.txt를 읽고 있습니다. 선택의 기회는 실재하며, 그 비용은 단 15분입니다. 2026년의 실제 질문은 "llms.txt를 배포해야 하는가?"가 아닙니다. 그 질문은 비용 대비 편익 계산(cost-benefit math)에 의해 이미 해결되었습니다. 진짜 질문은 당신이 배포한 파일이 LLM에게 유용한 정보를 제공하는지, 아니면 당신의 도메인을 무시하도록 학습시키는지 여부입니다. 안티 패턴 (Anti-patterns) 1번부터 5번까지가 바로 이 두 결과 사이의 차이를 만듭니다.
이번 주에 해야 할 일
아직 파일을 배포하지 않았다면, 기본 사항은 간단합니다 (H1 사이트 이름, 인용구(blockquote) 요약, 우선순위가 지정된 링크 목록). 이미 배포했다면, 다음의 5가지 질문 감사(audit)를 실행해 보세요:
- 파일 크기가 10KB 미만이며, 링크가 20개 미만인가 (## Optional 섹션 제외)?
- 나열된 모든 URL이 GPTBot 및 ClaudeBot에 대해 robots.txt를 통과하는가?
- 최소 상위 5개의 URL이 .md 동반 파일을 가지고 있는가?
- 본문이 일반적인 마케팅 문구가 아닌 특정 페이지로 링크를 연결하는가?
- 최근 90일 이내에 업데이트되었는가?
만약 5점 만점을 받는다면, 당신은 제가 살펴본 30개 사이트 중 상위 6위에 해당하며, 이는 이미 스스로 선택된 표본 중 상위 20%에 속한다는 의미입니다. 만약 3점 이하를 받는다면, 당신은 저와 똑같이 막막한 월요일 오후를 맞이하게 될 것입니다. 저는 이번 주에 벌써 네 번째 llms.txt를 작성하고 있습니다. 발행하기 전에 이 목록을 통해 검토할 것입니다. 검토 후에도 생산적이라는 느낌은 들지 않을 것입니다. 대신 세 번 연속으로 같은 교훈을 얻은 사람처럼 느껴질 것입니다. 듣기로는, 엔지니어링이란 원래 그런 것이라고 합니다.
llms.txt를 넘어 JSON-LD, robots.txt 전략, 콘텐츠 디자인 및 측정에 이르는 전체 LLMO 플레이북을 원하신다면: LLMO: AI Search Optimization for Engineers를 참고하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기