AI 코딩 에이전트의 문서 소비 방식이 인간과 근본적으로 다르기 때문에, 사람 중심 최적화만으로는 점점 더 많은 AI 트래픽이 분석 도구에 잡히지 않고 사라짐
에이전트는 문서를 단일 HTTP 요청으로 가져와 토큰 수를 세고 컨텍스트 창에 맞지 않으면 조용히 폐기하므로, 스크롤 깊이·체류 시간·클릭 같은 기존 분석 지표가 전혀 기록되지 않음
이에 대응하기 위해 문서를 에이전트가 실제로 사용할 수 있게 구조화·포맷·제공하는 Agentic Engine Optimization(AEO) 개념이 제시됨
AEO의 핵심은 발견 가능성, 파싱 용이성, 토큰 효율성, 기능 시그널링, 접근 제어이며, 이 중 하나라도 실패하면 에이전트는 콘텐츠를 건너뛰거나 잘못된 출력을 생성
초기에 대응하는 팀은 자사 API가 에이전트에 의해 추천·통합되는 우위를 확보하게 되며, 에이전트를 위한 문서화가 결과적으로 인간 독자에게도 더 나은 문서를 만들어냄
AEO란 무엇인가
Agentic Engine Optimization(AEO) 은 AI 코딩 에이전트가 실제로 활용할 수 있도록 기술 콘텐츠를 구조화·포맷·제공하는 실천 방식
SEO가 검색 크롤러와 인간 클릭 패턴에 맞춰 최적화였다면, AEO는 자율적으로 콘텐츠를 가져오고 파싱·추론하는 AI 에이전트라는 새로운 소비자를 대상으로 함
핵심 고려 요소
Discoverability – JavaScript 렌더링 없이 에이전트가 문서를 찾을 수 있는가
Parsability – 시각적 레이아웃 해석 없이 머신 판독 가능한가
Token efficiency – 일반적인 에이전트 컨텍스트 창 안에 잘림 없이 들어가는가
Capability signaling – API가 "어떻게 호출하는지"가 아니라 "무엇을 하는지"를 알리는가
Access control – robots.txt가 AI 트래픽을 실제로 허용하는가
에이전트가 문서를 읽는 방식
인간 패턴: 문서 홈에 도착해 섹션 이동, 제목 훑기, 코드 샘플 실행, 내부 링크 2~3개 이동, 세션당 4~8분 체류 → 분석 도구가 모두 기록
에이전트 패턴: Claude Code, Cursor, Cline, Aider, VS Code, Junie 등 9개 주요 코딩 에이전트의 HTTP 트래픽을 분석한 논문에 따르면, 여러 페이지 탐색이 1~2개의 HTTP 요청으로 압축됨
단일 GET 요청으로 전체 페이지 수신 후 이동, "user journey" 개념이 서버사이드 단일 이벤트로 붕괴
스크롤 깊이, 체류 시간, 버튼 클릭, 튜토리얼 완료, 링크 이동, 폼 상호작용 등 클라이언트사이드 이벤트 전체가 비가시화
AI 트래픽의 지문(fingerprints)
서버 로그에서 에이전트 트래픽을 식별할 수 있는 고유 시그니처 존재
Aider: Headless Chromium(Playwright), On-demand GET, Mozilla/Safari 풀 user-agent
Claude Code: Node.js/Axios, On-demand GET, axios/1.8.4
Cline: curl, GET + OpenAPI/Swagger 스윕, curl/8.4.0
Cursor: Node.js/got, HEAD probe → GET, got (sindresorhus/got)
Junie: curl, 순차 다중 페이지 GET, curl/8.4.0
OpenCode: Headless Chromium(Playwright), On-demand GET
VS Code: Electron/Chromium, Electron 마커 포함 Chromium 스타일
Windsurf: Go/Colly, colly
코딩 에이전트 외에도 ChatGPT, Claude, Google Gemini, Perplexity 같은 AI 어시스턴트 웹 서비스도 사용자가 URL을 공유할 때 서버사이드 fetch를 발생시키며 고유 지문 생성
토큰 문제: 문서가 에이전트에게 보이지 않을 수 있음
에이전트는 대부분 100K~200K 토큰의 실질적 한계를 가지며, 컨텍스트 관리는 모든 작업에서 활성 제약
논문 사례: Cisco Secure Firewall Management Center REST API Quick Start Guide(Version 10.0)는 193,217 토큰, 약 718,000 문자로, 단일 문서만으로 대부분 에이전트의 가용 컨텍스트 창을 소진하거나 초과
문서가 너무 길 때 발생 가능한 상황
조용한 잘림으로 중요한 정보 손실
더 짧은 문서를 선호해 해당 문서 건너뜀
청킹 시도로 지연·오류 표면 증가
파라메트릭 지식으로 폴백 — 즉, 환각 생성
결론: 토큰 수가 이제 문서의 1급 지표, 페이지별 토큰 추적이 필수
실용적 토큰 목표
Quick start / getting started 페이지: 15,000 토큰 미만
개별 API 레퍼런스 페이지: 25,000 토큰 미만
전체 API 레퍼런스: 제품이 아닌 리소스/엔드포인트 단위로 청킹
개념 가이드: 20,000 토큰 미만, 세부 내용은 임베드가 아닌 링크로 연결
AEO 스택: 실제로 구축해야 할 것
AEO는 단일 기법이 아니라 기초부터 표면까지 층을 이루는 시그널·표준의 집합
Layer 1: 접근 제어 (robots.txt)
많은 에이전트가 콘텐츠를 가져오기 전에 robots.txt를 먼저 확인하므로, 잘못 설정되면 오류 없이 조용히 문서 접근 차단
실행 단계
AI 에이전트 user-agent에 대한 의도치 않은 차단 감사
Anthropic, OpenAI, Google, Perplexity 크롤러 등 잘 알려진 패턴의 명시적 허용 검토
더 세밀한 제어가 필요하면 agent-permissions.json(자동 상호작용 허용 범위, rate limit, 선호 API 엔드포인트 등을 선언하는 신생 스펙) 활용
Layer 2: 발견을 위한 llms.txt
yourdomain.com/llms.txt에 호스팅되는 Markdown 형식 평면 파일로, AI 에이전트용 사이트맵 역할
구조화된 문서 디렉터리와 설명을 제공해, 에이전트가 전체 사이트를 크롤링하지 않고도 관련 콘텐츠 파악 가능
예시 구조: Getting Started(Quick Start Guide, Authentication, Core Concepts), API Reference(REST API Overview, Users API 12K 토큰, Events API 8K 토큰), MCP Integration(MCP Server)
좋은 llms.txt의 특징
페이지 이름이 아닌 무엇을 찾을 수 있는지 알려주는 설명
유용한 경우 페이지별 토큰 수 포함
제품 계층이 아닌 작업(task) 단위 구성
자체 크기 5,000 토큰 미만 유지(인덱스가 예산 초과 금지)
Layer 3: skill.md를 통한 기능 시그널링
llms.txt가 "어디에 있는가"를 알린다면, skill.md는 제품이 "무엇을 할 수 있는가"를 알림
에이전트가 산문 문서에서 기능을 추론할 필요 없이 의도(intention)를 엔드포인트·리소스에 선언적으로 매핑
인증 서비스 예시 구성
What I can accomplish: OAuth 2.0 인증(authorization code, client credentials, PKCE), JWT 토큰 발급·검증, 세션·리프레시 토큰 회전 관리, SSO 연동(SAML, OIDC)
Required inputs: Client ID/Secret, 사전 등록된 Redirect URI, 요청 스코프(read:user, write:data, admin)