Alejandro Rioja.
GEO SEO

llms.txt 설명: AI 인용을 실제로 움직이는가?

Alejandro Rioja
Alejandro Rioja
5 분 읽기
TL;DR

llms.txt는 yoursite.com/llms.txt에 있는 일반 텍스트 파일로, AI 크롤러에게 어떤 페이지를 우선시해야 하는지 알려줍니다. Perplexity는 이를 적극적으로 읽습니다. ChatGPT와 Bing Copilot은 아마 아직 읽지 않습니다. 구현에 20분이 걸리고 비용이 없습니다. 하세요. 하지만 다음 주에 인용이 급증하기를 기대하지 마세요.

무료 뉴스레터

매주 수요일. 28,400명+ 구독자. 핵심만.

목차

2026년 5월 업데이트.

TL;DR: llms.txt는 yoursite.com/llms.txt에 있는 일반 텍스트 파일로, AI 크롤러에게 어떤 페이지를 우선시해야 하는지 알려줍니다. Perplexity는 이를 적극적으로 읽습니다. ChatGPT와 Bing Copilot은 아마 아직 읽지 않습니다. 구현에 20분이 걸리고 비용이 없습니다. 하세요. 하지만 다음 주에 인용이 급증하기를 기대하지 마세요.

[운영자의 시각] 저는 내 사이트가 Perplexity, ChatGPT, Google SGE에서 어떻게 인용되는지 모니터링하는 AI 에이전트를 운영하고 있습니다. llms.txt는 진정으로 당신의 것인 첫 번째 신호 레이어입니다. 지금까지 데이터가 보여주는 것을 소개합니다.

llms.txt가 실제로 무엇인가

AI 크롤러를 위한 robots.txt처럼 생각하되, 반전된 형태입니다. robots.txt는 “이것을 크롤링하지 마세요”라고 합니다. llms.txt는 “내 사이트에 대한 컨텍스트를 구축할 때, 이것이 가장 중요한 것입니다”라고 합니다.

이 사양은 Jeremy Howard(fast.ai 창설자)에 의해 2024년 말에 제안되었습니다. 아이디어: yoursite.com/llms.txt에 일반 Markdown으로 가장 중요한 페이지를 나열하는 파일을 배치합니다. 컨텍스트를 위해 사이트를 스크래핑하는 AI 크롤러는 그 파일을 읽고 무엇을 우선시해야 하는지 즉시 알 수 있습니다. PageRank나 크롤 깊이로 추측하는 대신에요.

주요 페이지의 전체 텍스트를 하나의 문서에 연결한 선택적 llms-full.txt 변형도 있습니다. 일부 크롤러는 왕복을 줄일 수 있기 때문에 이 형식을 선호합니다.

어느 파일도 아직 W3C 표준이 아닙니다. 기술 창업자와 콘텐츠 팀 사이에서 채택이 증가하고 있는 커뮤니티 제안입니다.

파일은 어떻게 생겼나

alejandrorioja.com에서 사용하는 llms.txt입니다:

markdown
# Alejandro Rioja

> 운영자, AI 컨설턴트, Pickleland 창설자. GEO, AI 에이전트, 창업자 성장에 대해 씁니다.

## 핵심 페이지

- [소개](https://alejandrorioja.com/about/): 배경, 컨설팅 서비스, 협업 방법.
- [블로그](https://alejandrorioja.com/blog/): GEO, SEO, AI 에이전트, 창업자 성장에 관한 모든 글.
- [컨설테이션](https://alejandrorioja.com/consultation/30/): 30분 유료 세션 예약.

## 인기 글

- [ChatGPT 답변에서 인용되는 방법](https://alejandrorioja.com/blog/how-to-get-cited-in-chatgpt-answers/): 클라이언트 사이트에 사용하는 GEO 플레이북.
- [창업자를 위한 AI 에이전트 아키텍처](https://alejandrorioja.com/blog/ai-agent-architecture-for-founders/): 풀 엔지니어링 팀 없이 멀티 에이전트 시스템을 설계하는 방법.
- [GEO vs SEO](https://alejandrorioja.com/blog/geo-vs-seo/): Google이 더 이상 유일하게 중요한 검색 엔진이 아닐 때 무엇이 변하는가.

## 선택적: 무시

- /drafts/
- /admin/

주목할 몇 가지:

실제로 어떤 AI 엔진이 읽나

여기서 솔직해야 합니다: 환경이 분산되어 있고 부분적으로 문서화되어 있지 않습니다.

Perplexity — 예, 확인됨. Perplexity의 크롤러(PerplexityBot)는 사이트를 색인할 때 llms.txt를 읽습니다. 엔지니어링 팀이 사양을 공개적으로 참조했습니다. Perplexity가 중요한 참조 소스라면 llms.txt를 구현하는 것이 명확한 효과로 이어집니다.

ChatGPT / OpenAI — 미확인. OpenAI의 크롤러(GPTBot)는 2026년 중반 현재 llms.txt를 읽지 않는 것으로 보입니다. 크롤 동작은 robots.txt와 OpenAI의 내부 우선순위에 의해 결정됩니다. OpenAI로부터 사양을 인정하는 공개 성명은 없습니다.

Bing Copilot / Microsoft — 미확인. OpenAI와 유사한 상황. Bing의 AI 크롤러(BingBot)는 robots.txt를 따르지만 llms.txt를 읽는다는 신호는 없습니다.

Google AI Overviews / Gemini — 미확인. Google은 자체 구조화된 데이터 생태계(schema.org, 사이트맵)를 보유하고 있으며 서드파티 사양을 채택할 것임을 시사하지 않았습니다.

Anthropic — Anthropic의 크롤러(ClaudeBot)는 학습 데이터를 위해 웹을 크롤합니다. llms.txt를 읽는다는 공개 문서는 없지만, 여러 GEO 실무자가 구현 후 Claude 인용이 개선되었다고 보고합니다. 상관관계이지 인과관계가 아닙니다. 하지만 주목할 만합니다.

소규모 AI 검색 엔진 — You.com, Phind, 여러 수직 AI 검색 도구는 llms.txt를 읽는다고 언급하거나 시사했습니다. 사양은 소규모 팀이 채택하기 더 쉽습니다. 리팩토링할 수년 간의 크롤 인프라가 없기 때문입니다.

솔직한 요약: 지금은 llms.txt가 Perplexity 최적화이며 다른 곳에서 투기적인 이점이 있습니다. 사양이 성숙함에 따라 그 비율은 변화할 것입니다.

20분 안에 구현하는 방법

정적 사이트(Astro, 정적 내보내기가 있는 Next.js, Hugo 등)를 사용한다면 public/llms.txt에 파일을 생성하세요. 루트에서 서빙됩니다.

Next.js app router 사이트의 경우 동적으로 생성할 수 있습니다:

ts
// app/llms.txt/route.ts
import { allPosts } from "@/lib/content";

export async function GET() {
  const topPosts = allPosts
    .filter((p) => p.featured || p.views > 1000)
    .slice(0, 10);

  const lines = [
    "# Alejandro Rioja",
    "",
    "> 운영자, AI 컨설턴트, Pickleland 창설자. GEO, AI 에이전트, 창업자 성장에 대해 씁니다.",
    "",
    "## 인기 글",
    "",
    ...topPosts.map(
      (p) => `- [${p.title}](https://alejandrorioja.com/blog/${p.slug}/): ${p.description}`
    ),
    "",
    "## 핵심 페이지",
    "",
    "- [소개](https://alejandrorioja.com/about/): 서비스와 배경.",
    "- [컨설테이션](https://alejandrorioja.com/consultation/30/): 세션 예약.",
  ];

  return new Response(lines.join("\n"), {
    headers: { "Content-Type": "text/plain; charset=utf-8" },
  });
}

Astro 사이트의 경우 src/pages/.txt.ts 엔드포인트가 동등합니다:

ts
// src/pages/llms.txt.ts
import type { APIRoute } from "astro";
import { getCollection } from "astro:content";

export const GET: APIRoute = async () => {
  const posts = await getCollection("posts", (p) => p.data.lang === "en");
  const top = posts
    .sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf())
    .slice(0, 10);

  const body = [
    "# Alejandro Rioja",
    "",
    "> AI 컨설턴트 및 운영자. GEO, AI 에이전트, 창업자 성장에 대해 씁니다.",
    "",
    "## 최근 글",
    "",
    ...top.map(
      (p) =>
        `- [${p.data.title}](https://alejandrorioja.com/blog/${p.slug}/): ${p.data.description}`
    ),
  ].join("\n");

  return new Response(body, {
    headers: { "Content-Type": "text/plain; charset=utf-8" },
  });
};

배포 후 curl -s https://yoursite.com/llms.txt로 확인하세요. Markdown이 보이면 완료입니다.

llms-full.txt도 만들어야 하나?

아마도요. llms-full.txt는 주요 페이지의 연결된 덤프입니다. 제목, URL, 전체 본문 텍스트가 ---로 구분되어 한 페이지씩 이어집니다. 크롤러가 단일 요청으로 모든 것을 가져와 개별 페이지를 크롤하지 않고도 사이트에 대한 질문에 답할 충분한 컨텍스트를 가질 수 있다는 아이디어입니다.

절충점: 큰 파일입니다. 내 것은 상위 30개 게시물에 대해 약 400KB입니다. 일부 크롤러는 시간 초과되거나 잘릴 수 있습니다. 다른 크롤러는 콘텐츠가 사전 소화되어 있기 때문에 더 무겁게 가중할 수 있습니다.

현재 접근 방식: llms-full.txt를 생성하지만 트래픽 기준 상위 15개 게시물로 제한합니다. 250KB 미만으로 유지합니다. 매 배포 시 재생성합니다.

데이터가 실제로 보여주는 것

2026년 1월부터 이 사이트와 세 개의 클라이언트 사이트의 Perplexity 인용을 모니터링했습니다. 관찰한 것:

솔직한 해석: llms.txt는 아마도 Perplexity에 도움이 됩니다. 메커니즘이 명확합니다. Perplexity가 읽습니다. 증가가 llms.txt에 특별히 기인하는지 아니면 함께 수반되는 일반적인 GEO 개선에서 비롯되는지는 아직 말할 수 없습니다.

블록 인용에 무엇을 넣어야 하나

블록 인용의 한 줄 설명은 제가 가장 많은 시간을 들이는 부분입니다. 이것이 LLM이 RAG 컨텍스트에서 당신을 요약하는 데 사용하는 텍스트입니다. 다음이어야 합니다:

나쁜 예: > AI로 비즈니스 성장을 돕습니다.

더 나은 예: > Alejandro Rioja — 텍사스주 오스틴의 AI 컨설턴트, Pickleland 창설자, 2019년부터 GEO, AI 에이전트, 창업자 성장에 대해 글을 씁니다.

운영자의 최종 결론

llms.txt 구현은 20분이 걸리고, 서빙 비용이 없으며, Perplexity와의 확인된 읽기 경로가 있습니다. 하세요. 사양은 진정한 표준이 되거나(그 경우 초기 채택자가 승리) 사라질 것입니다(그 경우 20분을 잃었습니다). 비대칭성은 명확합니다. 단지 더 높은 ROI의 GEO 작업에서 주의를 빼앗기지 마세요: 구조화된 데이터, 명확한 엔티티 신호, 스니펫 추출을 위해 형식화된 답변. 그것들은 모든 AI 엔진을 움직입니다. llms.txt는 현재 하나를 움직입니다.

계속 읽기

AI 플레이북을 받아보세요

매주 수요일. 28,400명+ 구독자. 핵심만.

↵ 전체 결과 보기 esc esc 닫기