---
title: "에이전트 대응 웹사이트: 구축 사례와 핵심 요소 — Dardo"
description: "dardo.studio를 구축하며 정리한 에이전트 대응 웹사이트 요건: 마크다운 사본, llms.txt, AI 크롤러 규칙, MCP 서버, A2A 카드, 건너뛸 것."
url: "https://dardo.studio/ko/blog/agent-ready-website/"
language: "ko"
translations: {"en":"https://dardo.studio/en/blog/agent-ready-website/","es":"https://dardo.studio/es/blog/sitio-web-preparado-para-agentes-de-ia/","fr":"https://dardo.studio/fr/blog/site-web-pret-pour-agents-ia/","de":"https://dardo.studio/de/blog/agentenfaehige-website/","it":"https://dardo.studio/it/blog/sito-web-pronto-per-agenti-ai/","pt":"https://dardo.studio/pt/blog/site-pronto-para-agentes/","nl":"https://dardo.studio/nl/blog/agent-ready-website/","sv":"https://dardo.studio/sv/blogg/agentredo-webbplats/","pl":"https://dardo.studio/pl/blog/strona-gotowa-na-agentow-ai/","uk":"https://dardo.studio/uk/blog/agent-ready-website/","ru":"https://dardo.studio/ru/blog/agent-ready-website/","ar":"https://dardo.studio/ar/blog/agent-ready-website/","hi":"https://dardo.studio/hi/blog/agent-ready-website/","th":"https://dardo.studio/th/blog/agent-ready-website/","ja":"https://dardo.studio/ja/blog/agent-ready-website/","zh-Hans":"https://dardo.studio/zh-Hans/blog/agent-ready-website/","zh-Hant":"https://dardo.studio/zh-Hant/blog/agent-ready-website/"}
updated: "2026-10-10T09:10:47.989Z"
---

[블로그](https://dardo.studio/ko/blog/)

# 에이전트 친화적인 웹사이트에 필요한 것: dardo.studio를 만들며 정리한 노트

dardo.studio를 AI 에이전트가 읽고 호출할 수 있도록 한 층씩 만들었습니다. 각 층이 하는 일, 현재 공식 문서에서 읽는다고 밝힌 곳, 다시 만들 층을 정리했습니다.

작성자 [Nicolás Cerón](https://dardo.studio/ko/studio/) ·2026년 10월 10일

![밤의 미술관 전시실에서 진홍색 안내선을 따라 조명이 켜진 조각상을 향해 가는 작은 바퀴 달린 로봇.](https://dardo.studio/_astro/01M4GYDFZJP0ZV0S7JSNMWYADG_ZoH0qp.webp)

## 먼저 짧은 답

에이전트 친화적인 웹사이트는 세 가지를 갖춥니다. AI 에이전트가 접근할 수 있어야 하고, 메뉴나 배너, 스크립트를 헤치지 않고도 내용을 읽을 수 있어야 합니다. 그리고 필요한 경우에는 어떤 버튼을 눌러야 할지 추측하는 대신, 공개된 몇 가지 도구를 직접 호출할 수 있어야 합니다.

저희는 2026년 10월 초 dardo.studio에 이 세 가지를 모두 적용했습니다. 무엇을 적용했는지, 그리고 주요 AI 플랫폼이 그중 얼마나 사용한다고 문서에 밝히는지를 2026년 10월 8일 라이브 사이트 기준으로 확인해 정리했습니다.

결론은 흔한 "AI 대응" 체크리스트보다 덜 화려합니다. 가장 오래된 층이 가장 큰 비중을 차지합니다. 크롤러 접근 허용과 깔끔한 시맨틱 HTML입니다. 마크다운 사본과 llms.txt는 부담 없이 추가할 수 있는 편의 기능입니다. MCP, A2A, WebMCP는 실제로 동작하는 클라이언트가 있는 프로토콜이지만, 저희가 인용한 OpenAI, Anthropic, Perplexity, Google의 크롤러 문서 어디에도 이들의 어시스턴트가 사이트의 도구를 스스로 찾는다는 설명은 없습니다.

## 접근부터: robots.txt와 엣지

저희 [robots.txt](https://dardo.studio/robots.txt)는 기본 에이전트(`*`)와, 이름을 지정한 각 AI 검색 크롤러 및 사용자 요청 fetcher에 같은 그룹을 반복합니다.

```
User-agent: OAI-SearchBot
Allow: /
Disallow: /api/
Content-Signal: search=yes, ai-input=yes
```

ChatGPT-User, PerplexityBot, Perplexity-User, Claude-SearchBot, Claude-User, Bingbot에도 같은 규칙이 적용됩니다. 막혀 있는 곳은 `/api/`뿐입니다.

### 검색 크롤러와 학습 크롤러는 별개입니다

주요 기업들은 이제 검색용과 학습용 토큰을 따로 문서화합니다.

- **OpenAI.** OAI-SearchBot은 ChatGPT 검색에 사이트를 노출합니다. 이를 차단한 사이트는 ChatGPT 검색 답변에서 빠지지만, 일반 탐색용 링크로는 여전히 나타날 수 있습니다. GPTBot은 학습 데이터를 수집합니다. ([OpenAI 크롤러](https://developers.openai.com/api/docs/bots))
- **Anthropic.** Claude-SearchBot은 검색용으로 색인을 만들고, ClaudeBot은 학습 데이터를 수집하며, Claude-User는 사용자가 Claude에게 질문할 때 페이지를 가져옵니다. ([Anthropic 크롤러](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler))
- **Perplexity.** PerplexityBot은 Perplexity 결과에 사이트를 노출하고 링크하며, 파운데이션 모델 학습에는 사용되지 않습니다. ([Perplexity 크롤러](https://docs.perplexity.ai/docs/resources/perplexity-crawlers))
- **Google.** Google-Extended는 Gemini 학습과 다른 Google 제품의 그라운딩을 제어하는 토큰입니다. Google 검색의 포함 여부나 순위에는 영향을 주지 않습니다. ([Google 공통 크롤러](https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers))

사용자 요청 fetcher는 다릅니다. OpenAI는 사람이 요청을 시작하기 때문에 ChatGPT-User에는 robots.txt가 적용되지 않을 수 있다고 밝힙니다. Perplexity-User와 Google의 [사용자 요청 fetcher](https://developers.google.com/crawling/docs/crawlers-fetchers/google-user-triggered-fetchers)는 대체로 robots.txt를 무시합니다. 이런 fetcher는 한 사람을 위해 실시간으로 동작하므로, 차단이 통하더라도 대부분 그 사람의 어시스턴트가 페이지를 읽지 못하게 할 뿐입니다.

저희 파일에는 학습 크롤러가 지정되어 있지 않아 `*` 규칙이 적용되고, 따라서 허용됩니다. 이는 비즈니스상의 결정이며, 각 업체도 별도의 제어 수단으로 문서화하고 있습니다. GPTBot이나 ClaudeBot을 차단하는 것과 검색 색인에서 빠지는 것은 다릅니다.

### Content Signals: 한 줄, 확약은 없음

`Content-Signal` 줄은 Cloudflare의 [Content Signals Policy](https://blog.cloudflare.com/content-signals-policy/)에서 나온 것으로, 세 가지 용도를 정의합니다. `search`, `ai-input`(답변 시점에 모델에 콘텐츠를 제공하는 것), `ai-train`입니다. 저희는 `ai-train`을 넣지 않았는데, 이 정책에서는 해당 용도를 허용도 제한도 하지 않는다는 뜻입니다. Cloudflare는 이 신호가 선호를 표현할 뿐 아무것도 차단하지 않으며 무시될 수 있다고 말합니다. 여기서 인용한 크롤러 문서 중에는 이를 언급한 곳이 없습니다. 비용은 한 줄이니, 아직은 기대하지 않는 편이 좋습니다.

### 파일만 보지 말고 엣지도 확인하세요

robots.txt는 정책을 선언할 뿐이고, 실제로 무슨 일이 일어나는지는 CDN이 결정합니다. 10월 2일에 테스트했을 때, robots.txt는 모두 허용했는데도 Cloudflare의 Browser Integrity Check는 Python의 기본 HTTP 클라이언트(`Python-urllib`)와 `libwww-perl`에 403을 응답했습니다. 코딩 에이전트가 작성하는 스크립트는 Python 표준 라이브러리를 그대로 쓰는 경우가 많습니다.

저희는 공개 콘텐츠에 대한 GET과 HEAD 요청을 예외 처리하는 Cloudflare 구성 규칙을 추가했고, `/api/`는 여전히 403으로 응답합니다. 같은 점검에서 `.txt` 파일에 charset이 없어 일부 클라이언트가 "Bogotá"를 "BogotÃ¡"로 읽는다는 것도 발견했습니다. 해결은 헤더 하나, `charset=utf-8`이면 충분했습니다.

각 user agent로 실제 요청을 보내 테스트하세요. 이름 때문에 막히는 일이 없다는 것은 확인되지만, 실제 크롤러가 방문했다는 증거는 아닙니다.

## 단순한 시맨틱 HTML: 모든 에이전트가 의존하는 층

Google의 [AI 최적화 가이드](https://developers.google.com/search/docs/fundamentals/ai-optimization-guide)는 스크린샷을 분석하고, DOM을 살펴보고, 접근성 트리를 해석하는 브라우저 에이전트를 설명합니다. 그리고 사이트 운영자에게 web.dev의 [에이전트 친화적 가이드](https://web.dev/articles/ai-agent-site-ux)를 안내하는데, 대부분 [접근성 작업](https://dardo.studio/ko/services/web-accessibility/)입니다. 스타일을 입힌 `<div>` 대신 `<button>`과 `<a>`를 쓰고, 모든 label을 해당 input에 연결하고, 스크린샷을 찍는 동안 레이아웃이 흔들리지 않게 하라는 것입니다.

dardo.studio의 각 페이지에는 `<main>`이 하나씩 있고, 이름이 붙은 `<nav>` 랜드마크가 있습니다. 메뉴와 테마 토글은 실제 버튼이며 `aria-expanded`와 `aria-pressed`로 상태를 알려주고, 닫힌 메뉴는 `inert`입니다. 문의 양식의 모든 필드는 `<label>` 안에 들어 있어 접근 가능한 이름을 갖습니다. web.dev는 `for` 속성을 권장하지만, input을 감싸는 방식도 같은 역할을 합니다.

이는 지금도 스크린 리더 사용자에게 도움이 되며, 그것만으로도 충분한 이유입니다.

## 모든 페이지의 깔끔한 마크다운 사본

에이전트는 읽는 토큰마다 비용을 내는데, 렌더링된 페이지에는 내비게이션, 쿠키 배너, 스크립트, 장식용 그래픽이 함께 들어 있습니다. 이 작업을 하기 전에는 `Accept: text/markdown`으로 페이지를 요청해도 이 모든 것이 HTML로 그대로 돌아왔습니다.

이제 빌드 단계에서 색인 가능한 모든 페이지 옆에 `index.md`를 생성합니다. 이 파일은 프런트 매터(제목, 설명, 정식 URL, 언어, 다른 언어 버전, 업데이트 날짜)로 시작하고, 이어서 스크립트, 버튼, 장식용 이미지, 페이지 내 목차를 뺀 페이지의 `<main>` 콘텐츠가 나옵니다. FAQ 답변은 그대로 유지됩니다. 양식은 입력 항목과 선택지 목록으로 바뀌므로, 에이전트는 양식을 직접 건드리지 않고도 문의 양식에서 무엇을 묻는지 사용자에게 알려 줄 수 있습니다.

사본을 가져오는 방법은 세 가지입니다.

- 일반 URL에 `Accept: text/markdown`을 보내세요. 이 응답에는 `Vary: Accept`가 포함되어 있어 캐시가 버전을 따로 보관합니다.
- 파일을 직접 요청하세요: `/en/services/seo/index.md`.
- 페이지 경로 끝에 `.md`를 붙이세요(`/en/services/seo.md`). 슬래시로 끝나는 URL의 경우 [llms.txt 제안](https://llmstxt.org/)은 위에서 본 형태인 `index.md`를 사용합니다.

모든 HTML 페이지는 `<link rel="alternate" type="text/markdown">`로 자신의 사본도 가리킵니다.

### 검색엔진이 HTML을 가리키도록 하기

Google 가이드에 따르면 Google은 HTML 외에도 다양한 파일 형식을 특별 취급하지 않고 크롤링하고 색인할 수 있습니다. 마크다운 사본이 원래 페이지와 경쟁할 수 있으므로, 모든 마크다운 응답은 HTML 페이지를 정식 URL(canonical)로 지정합니다.

```
$ curl -sI https://dardo.studio/en/services/seo/index.md
content-type: text/markdown; charset=utf-8
link: <https://dardo.studio/en/services/seo/>; rel="canonical", ...
```

이 사본을 누가 읽을까요? Cloudflare는 마크다운을 선호하는 요청에 대해 엣지에서 HTML을 변환하는 [Markdown for Agents](https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/)를 만들었는데, 이는 에이전트가 실제로 마크다운을 요청한다는 뜻으로 보입니다. 어떤 클라이언트가 이 헤더를 보내는지는 밝히지 않았고, 저희도 검증된 목록은 없습니다. Cloudflare의 이 기능을 사용하면 오리진에서 따로 설정하지 않는 한 `Content-Signal: ai-train=yes, search=yes, ai-input=yes`가 추가됩니다. 저희는 사본을 빌드 시점에 생성하므로 페이지와 정확히 일치합니다.

## llms.txt: 검색 효과는 없지만 쓸모 있는 색인

llms.txt는 2024년 9월에 처음 공개되었고 아직 커뮤니티 의견을 받고 있는 [Jeremy Howard의 제안](https://llmstxt.org/)입니다. `/llms.txt`에 두는 마크다운 파일로, 사이트 이름, 짧은 요약, 에이전트가 필요로 할 만한 링크 목록이 들어갑니다.

[/llms.txt](https://dardo.studio/llms.txt)와 [/es/llms.txt](https://dardo.studio/es/llms.txt)에 있는 저희 파일은 페이지와 같은 데이터에서 생성되므로 내용이 어긋날 수 없습니다. 스튜디오 정보(보고타, 2026년 설립, 3인 팀, 프로젝트 가격 책정 방식, 연락 경로)를 밝히고, 서비스와 작업물을 나열하며, 마크다운 사본을 가져오는 방법을 설명합니다. `llms-full.txt`에는 스튜디오, 서비스, 작업물, 문의 페이지의 전체 텍스트가 들어 있습니다.

한 줄에는 이름이 비슷하지만 저희와 무관한 업체들을 적어 두었습니다. 10월 2일에 확인했을 때 이들이 "dardo studio" 검색 결과 상위를 차지하고 있었습니다. 이 줄이 파일에서 가장 쓸모 있는 부분일 수도 있습니다.

현황을 있는 그대로 정리하면 다음과 같습니다.

- **Google**은 검색이나 AI 기능에 노출되기 위해 llms.txt가 필요하지 않고, 검색은 이 파일을 무시하며, 두어도 도움도 해도 되지 않는다고 말합니다.
- **OpenAI, Anthropic, Perplexity**는 크롤러 문서에서 자사 봇이 다른 사이트의 llms.txt를 읽는다고 밝히지 않았습니다. 다만 OpenAI, Anthropic, Perplexity의 자체 문서 사이트는 문서를 읽는 에이전트를 위해 llms.txt를 게시하고 있습니다.

자동 생성되고 내용이 정확하다면 하나 두세요. 코딩 에이전트와 이 파일을 찾는 도구에 도움이 됩니다. 다만 노출을 늘리는 수단은 아닙니다.

## 에이전트가 호출할 수 있는 도구: MCP, A2A, API 카탈로그

저희는 읽기 전용 도구 두 가지를 공개했습니다.

- `**list_services**`는 공개된 서비스, 범위, 산출물, 출처 URL을 영어 또는 스페인어로 반환하며, 선택적으로 키워드로 필터링할 수 있습니다.
- `**get_project_brief**`는 문의 전에 답해야 할 질문과 해당 서비스의 현지화된 문의 링크를 반환합니다.

하나의 구현이 여러 진입점 뒤에 있습니다.

| 진입점        | dardo.studio의 주소                            | 표준 및 상태                                                                                                                                                                                |
| ---------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| MCP 서버     | /mcp, 카드는 /.well-known/mcp/server-card.json | [MCP](https://modelcontextprotocol.io/specification/2025-11-25/basic/transports) Streamable HTTP, 서버 카드는 [초안 제안](https://modelcontextprotocol.io/community/working-groups/server-card) |
| A2A 에이전트   | /a2a, 카드는 /.well-known/agent-card.json      | [A2A 1.0](https://a2a-protocol.org/latest/specification/), JSON-RPC                                                                                                                    |
| JSON 엔드포인트 | /agent/services.json, OpenAPI로 기술           | 일반 HTTP                                                                                                                                                                                |
| API 카탈로그   | /.well-known/api-catalog                    | [RFC 9727](https://www.rfc-editor.org/rfc/rfc9727.html), IETF 표준 트랙                                                                                                                    |

모든 HTML 및 마크다운 응답은 카탈로그, 에이전트 스킬 색인, 두 카드를 가리키는 `Link` 헤더를 보내므로 어느 페이지에서든 나머지로 이어집니다.

### 다시 선택할 설계 원칙

- **읽기 전용이며 공개.** MCP 도구는 `readOnlyHint: true`를 선언하고, 뒤에 데이터베이스 없이 HTML과 같은 공개 카탈로그를 읽습니다. `get_project_brief`는 제출, 예약, 견적을 하지 않으며, 사람이 검토하고 보냅니다.
- **입력 제한.** 요청 본문은 8 KiB로 제한되고, 브라우저의 `Origin` 헤더를 검사하며(MCP 사양이 요구합니다), 호출에는 별도의 요청 제한이 적용됩니다.
- **무상태.** A2A 에이전트는 즉시 응답하고, 작업을 보관하지 않으며, 스트리밍이 꺼져 있고, 전달받은 파일이나 URL을 가져오지 않습니다.
- **명확한 약관.** [/auth.md](https://dardo.studio/auth.md)에는 자격 증명이 필요 없으며, 공개 데이터를 읽는 것이 메시지 전송이나 결제의 권한을 의미하지 않는다고 명시되어 있습니다.

일부러 넣지 않은 것도 있습니다. 준비도 스캐너는 커머스 프로토콜과 OAuth 디스커버리를 확인합니다. 저희는 결제 과정을 통해 판매하는 것이 없고 보호할 리소스도 없으므로, 이를 게시하면 존재하지 않는 기능을 설명하는 셈이 됩니다.

현재 이 도구를 쓰는 곳은 누군가 `/mcp`에 연결한 MCP 클라이언트와 저희 카드를 받은 A2A 클라이언트입니다. 스튜디오에게 가치는 크지 않습니다. "Dardo는 무엇을 하고, 무엇을 보내야 하나요?"라는 질문에 정확히 답해 주는 정도입니다. 재고, 예약 가능 여부, 제품 문서처럼 사람들이 자주 묻는 실시간 데이터가 있는 사이트에는 더 설득력이 있습니다. 데이터를 쓰는 에이전트에는 인증과 검토 단계가 필요하며, 이는 [AI 자동화](https://dardo.studio/ko/services/ai-automation/) 영역의 일입니다.

## WebMCP: 브라우저 안에서 쓰는 같은 도구

[WebMCP](https://webmachinelearning.github.io/webmcp/)는 페이지가 브라우저 안의 AI 에이전트가 호출할 수 있는 도구를 등록하게 해 줍니다. W3C Web Machine Learning Community Group의 Draft Community Group Report이며, W3C 표준이 아니라고 명시하고 있습니다. web.dev는 활발히 개발 중이며 변경될 수 있고, Chrome에서 오리진 트라이얼로 써 볼 수 있다고 설명합니다.

저희 페이지는 같은 두 가지 도구를 `document.modelContext`(이전 프리뷰에서는 `navigator.modelContext`)로 등록합니다. 이 API가 없으면 브라우저는 추가로 아무것도 실행하지 않습니다. 도구가 이미 있었기 때문에 작업은 약 40줄로 끝났습니다. 실험으로 보시기 바랍니다.

## 각 레이어와 도입할 가치가 있는지 여부

| 레이어                       | 설명                                           | 현재 읽는 주체                                            | 도입할 가치가 있나요?                     |
| ------------------------- | -------------------------------------------- | --------------------------------------------------- | -------------------------------- |
| 시맨틱 HTML과 레이블이 달린 폼       | 실제 버튼, 링크, 랜드마크, 레이블                         | 브라우저, 보조 기술, 브라우저 에이전트                              | 예. 가장 먼저 구축하세요                   |
| 검색 및 사용자 에이전트용 robots.txt | 검색과 학습을 구분하는 크롤러별 규칙                         | OpenAI, Anthropic, Perplexity, Google이 각자의 토큰을 문서화함 | 예. 그 후 CDN에서 테스트하세요              |
| Content Signals           | robots.txt의 search, ai-input, ai-train 선호 설정 | 확인한 AI 기업 중 이를 준수한다고 문서화한 곳은 없음                     | 한 줄이면 됩니다. 기대는 하지 마세요            |
| canonical 헤더가 있는 마크다운 사본  | 각 페이지의 깔끔한 텍스트 버전                            | 마크다운을 요청하는 에이전트. 어떤 에이전트인지 공개된 목록은 없음               | 예. canonical 헤더와 함께 사용하세요        |
| llms.txt와 llms-full.txt   | 에이전트를 위한 선별된 색인과 전체 텍스트                      | Google 검색은 무시하며, 읽는다고 밝힌 크롤러 문서도 없음                 | 자동 생성이라면 유지하세요. 노출을 높이는 수단은 아닙니다 |
| MCP 서버(읽기 전용)             | 에이전트가 호출할 수 있도록 선언된 도구                       | 사용자가 연결한 MCP 클라이언트                                  | 호출할 가치가 있는 데이터나 기능이 있을 때만        |
| A2A 에이전트 카드               | 에이전트를 기계가 읽을 수 있게 설명한 문서                     | 해당 카드를 가리키는 A2A 클라이언트                               | 대부분의 웹사이트에는 투기적입니다               |
| API 카탈로그(RFC 9727)        | 공개 API를 한곳에 모은 well-known 목록                 | 이를 찾아보는 도구                                          | 이미 API가 있다면 부담이 적습니다             |
| WebMCP                    | 페이지가 브라우저에 등록하는 도구                           | 오리진 트라이얼을 통한 Chrome                                 | 실험                               |

## 다시 만든다면 이렇게 하겠습니다

순서는 시맨틱 HTML, 테스트를 거친 크롤러 접근, canonical 헤더가 있는 마크다운 사본, 자동 생성한 llms.txt, 그리고 호출할 가치가 있는 것이 있을 때만 도구입니다. 그다음에 측정하세요. 서버 로그를 보면 어떤 에이전트가 마크다운 사본을 가져가거나 `/mcp`를 호출하는지 알 수 있습니다. 가져가는 것이 곧 인용은 아니며, 이 중 어느 것도 [AI 시스템이 여러분을 언급한다는 보장](https://dardo.studio/ko/blog/appear-in-ai-answers/)은 되지 않습니다.

에이전트 대응은 저희 [AI 검색 최적화](https://dardo.studio/ko/services/ai-search-optimization/) 작업의 일부이며, AI 답변이 여러분을 인용할지 좌우하는 콘텐츠 및 측정 작업과 함께 진행됩니다. 사이트에 적용하고 싶으시다면 [프로젝트에 대해 알려주세요](https://dardo.studio/ko/contact/).

[Nicolás Cerón](https://dardo.studio/ko/studio/)

Nicolás Cerón은 콜롬비아 보고타에 있는 브랜드, 웹 디자인 및 개발 스튜디오 Dardo의 창립자입니다.

## 계속 둘러보세요.

- [서비스 · **AI 검색 최적화(GEO): ChatGPT와 Google AI에 인용되는 비즈니스 만들기**](https://dardo.studio/ko/services/ai-search-optimization/)

- [나의 프로젝트 · **상담 시작하기**](https://dardo.studio/ko/contact/)
