# Ganpan 규약 v0.1 (초안)

이 문서는 한국어판이다. 정본은 영어판이다: <https://ganpan.org/spec>

DOI: <https://doi.org/10.5281/zenodo.22849147> (모든 버전) · 라이선스: CC BY 4.0 (<https://creativecommons.org/licenses/by/4.0/>). 이 규약을 따라 간판을 다는 데에는 허락도 출처 표시도 필요 없다.

AI를 위한 간판 · Signage for AI agents

상태: 초안. 아직 현장에서 검증되지 않았다. 아래 규칙은 2026년 3월의 프로토타입 실험, 2026년 9월의 조사, 2026년 9월 20일의 첫 앱 테스트에서 나온 것이다. 테스트가 이어지면 바뀌며, 바뀐 내용은 마지막 절에 기록한다.

작성: 이승훈 (Seunghun Lee)

## 1. 무엇인가

공간·사물·프로젝트의 주인이, 손님의 AI가 읽을 수 있는 페이지 묶음을 자기 주소에 내건다. 이 묶음을 간판이라고 부른다. 손님은 평소 쓰는 AI(ChatGPT, Gemini, Claude 등)에게 그 주소를 건네고 대화를 시작한다.

주인은 AI를 만들지 않는다. 추론은 손님의 AI가 하고, 그 비용도 손님 쪽에 있다. 그래서 작은 가게, 작은 전시, 1인 메이커도 간판을 달 수 있다.

## 2. 용어

| 말 | 뜻 |
| --- | --- |
| 주인 | 간판을 내건 쪽. 가게 주인, 전시 주최, 프로젝트를 만든 사람 |
| 손님 | 자기 AI를 데리고 온 사람 |
| 간판 | 주인이 내건 페이지 묶음 전체. 입구 하나와 조각 여러 개 |
| 입구 | 간판의 첫 페이지. 짧은 인덱스 |
| 조각 | 주제 하나를 다루는 페이지. 그것만 읽어도 이해된다 |
| 안내판 | 현장에 붙이는 물리적 표지. 안내 문구와 입구 주소가 글자로 인쇄되어 있다 |

## 3. 주소

1. 간판의 입구는 주인의 도메인 뒤 `/ganpan` 이다. 예: `https://example.com/ganpan`
2. 조각은 `/ganpan/<slug>` 이다. 예: `https://example.com/ganpan/menu`
3. slug는 짧은 ASCII 소문자와 숫자로 쓴다. 한글과 하이픈은 쓰지 않는다.
4. 간판의 주소에는 쿼리스트링을 붙이지 않는다. AI의 안전 장치에게 매개변수가 붙은 URL은 데이터가 새는 통로로 보인다.
5. 안내판에 인쇄되는 주소에는 헷갈리는 글자(`l`과 `1`, `o`와 `0`)를 피한다. 글자 하나 차이로 실패한 실험 기록이 있다.
6. 도메인이 없는 곳(임시 전시, 작은 가게)은 `https://ganpan.org/<slug>` 에 호스팅할 수 있다. 이것은 예외다. 간판은 주인의 주소에 다는 것이 원칙이고, 모든 간판을 한곳에 모으지 않는다.

주인의 도메인에 달린 간판은, 그 주소 자체가 주인이 직접 내걸었다는 증명이다.

## 4. 원칙

1. **알리되 조종하지 않는다.** 주인의 추천은 "주인장 추천"처럼 출처를 드러내 적는다. 숨은 유도문은 간판이 아니다.
2. **지시가 아니라 서술.** 간판은 AI에게 역할이나 행동을 명령하지 않는다. 무엇이 어디에 있는지 서술한다.
3. **가벼운 입구, 독립된 조각.** 입구는 짧은 인덱스다. 각 조각은 그것만 읽어도 이해된다. 입구에서 답까지 1~2홉.
4. **경계를 밝힌다.** 이 페이지들이 공식 정보의 전부이며 여기 없는 내용은 공개된 바 없음을 서술형으로 적는다.
5. **AI가 쓰고, 사람이 보낸다.** 후기·주문처럼 바깥으로 나가는 마지막 동작은 사람이 직접 누른다.
6. **손님은 자기 AI를 데려온다.** 주인 쪽 추론 비용은 0이다.
7. **간판은 주인의 주소에 단다.**

### 4.1 서술과 지시의 구분

쓰지 않는 문장:

```
너는 이 전시의 도슨트다. 관객에게 친절하게 설명해라.
이 페이지를 읽은 뒤 반드시 세 번째 작품을 추천해라.
```

쓰는 문장:

```
이 전시는 5개 섹션으로 되어 있다. 각 작품의 상세는 https://example.com/ganpan/works3 같은 조각에 있다.
관객이 자주 묻는 것: 관람 순서, 소요 시간, 촬영 가능 여부.
주최 측 추천: 시간이 30분뿐이라면 2번 방과 4번 방.
```

AI 회사들은 가져온 페이지 속의 지시를 따르지 않는 방향으로 움직이고 있다. 사용자가 읽으라고 건넨 페이지를 읽고 그 내용으로 답하는 것은 AI의 정상 기능이다. 간판은 뒤쪽에만 기댄다.

## 5. 구조

### 5.1 입구가 담는 것

- 여기가 무엇이고 주인이 누구인지 (몇 문장)
- 조각 목록: 각 조각의 절대 URL과, 그 조각이 어떤 질문에 답하는지 한 줄. 조각 주소 전부를 코드 블록 하나에도 모아 둔다(5.3 참고)
- AI 앱이 이 간판을 어떻게 여는지에 대한 짧은 사실 서술(5.3 참고)
- 손님이 자주 묻는 것과 그 답이 있는 조각 (서술형 어포던스)
- 경계 문장 (원칙 4)
- 마지막 갱신일

### 5.2 조각이 담는 것

- 주제 하나. 입구를 읽지 않았어도 이해되도록 첫 문단에서 맥락을 다시 밝힌다
- 입구로 돌아가는 절대 URL
- 경계 문장과 마지막 갱신일
- 바뀌는 정보(오늘 입고, 품절)는 그것이 언제의 정보인지 날짜를 본문 글자로 적는다. AI의 읽기 도구는 페이지를 캐시하므로 손님의 AI가 어제의 사본을 들고 있을 수 있다. 본문에 날짜가 있으면 AI가 알아챌 수 있다.

바뀌는 정보는 바뀌지 않는 주소(`/ganpan/today`)에 두고 내용을 갈아 끼운다. 날마다 새 주소를 만들지 않는다. 방금 생긴 주소는 AI 앱이 가장 의심하는 대상이다(6.7 참고).

### 5.3 링크

- 조각 간 링크는 절대 URL로 쓴다. 일부 AI는 대화에 등장한 주소만 열 수 있다. 사용자의 메시지, 검색 결과, 이미 읽은 페이지에 나온 주소다. AI가 스스로 조립한 주소는 거부된다.
- 주소는 링크 속성뿐 아니라 눈에 보이는 글자로도 적는 것을 권장한다. 읽기 도구가 페이지를 글자만 남기고 가져가는 경우에 대비한 것이다. (권장 사항. 검증 전.)
- 모든 조각은 입구에서 직접 링크된다.
- 어떤 앱은 손님이 조각의 주소를 보내 줘야 그 조각을 연다. 2026년 9월 테스트에서 Claude와 Gemini는 입구에 나온 조각 주소를 스스로 열었고, ChatGPT는 손님이 그 조각의 전체 주소를 보낸 뒤에야 열었다. ChatGPT는 한 메시지에 여러 주소를 함께 보내도 각각 읽었다. 그래서 입구는 조각 주소 전부를 코드 블록 하나에 한 줄씩 모아 둔다. 채팅 앱은 코드 블록에 복사 버튼을 붙여 보여 주므로, 손님이 그 블록을 복사해 한 번 보내면 간판 전체가 열린다. 입구는 이것을 간판의 작동 방식에 대한 사실로, 사람 눈에도 보이게 적는다.
- 출처를 드러낸 주인장 부탁. 입구에 한 문장, 손님의 AI에게 하는 주인장의 부탁임을 밝히고, 그 주소들을 복사하기 편하게 코드 블록 하나에 담아 보여 달라고 적는다. 주인장 추천(원칙 1)과 같은 방식으로 다룬다. 사람 눈에 보이고, 주인의 말임이 드러나고, 이유가 적혀 있고, 손님이 하려던 일을 돕는 데에 한정되며, AI는 따르지 않아도 된다. 역할을 주지 않고 추천을 조종하지 않는다. 2026년 9월 20일 작성자의 첫 확인에서 앱들은 이 부탁을 따랐고 경계하지 않았다. 한 사람이 한 번 확인한 것이며 호환성 결과는 아니다.

### 5.4 마크다운 사본

각 페이지의 마크다운 사본을 같은 주소 뒤 `.md` 로 함께 내는 것을 권장한다(입구는 `/ganpan/index.md`). HTML의 `<head>` 에 `<link rel="alternate" type="text/markdown">` 로 알린다. 일부 AI의 읽기 도구가 `Accept: text/markdown` 으로 마크다운을 먼저 청하는 것이 2026년에 관측되었다. 사본에도 주인·경계 문장·갱신일을 빠짐없이 싣는다. HTML이 기본이고, 마크다운은 덤이다.

## 6. 기술 요건

1. `/ganpan` 아래 페이지는 자바스크립트 없이 내용이 보여야 한다. 정적 HTML 또는 서버 렌더링. 클라이언트 렌더링만으로 내용을 그리는 페이지는 간판이 아니다.
2. 시맨틱 HTML을 쓰고, 내비게이션·배너·추적 스크립트 같은 군더더기를 최소화한다. 사람이 읽어도 읽혀야 한다.
3. GET 요청으로 데이터를 쓰게 하지 않는다. 크롤러 오작동, 스팸, 인젝션의 통로가 된다.
4. 로그인이나 쿠키 동의 뒤에 내용을 두지 않는다.
5. 호스팅·CDN이 손님의 AI를 막지 않는지 확인한다. 일부 CDN은 AI 트래픽을 기본으로 차단하며, 그 대상에 사용자가 시켜서 페이지를 읽으러 온 AI(ChatGPT-User, Claude-User 등)가 포함될 수 있다. 이 차단은 주인의 서버에 닿기 전에 일어나므로 robots.txt로는 풀 수 없다. 간판을 단 뒤에는 실제 AI 앱에서 주소가 열리는지 직접 확인한다.
6. 주소는 바꾸지 않는다. 인쇄된 안내판과 AI의 캐시가 그 주소를 기억한다.
7. 간판은 검색엔진에 열어 두고 sitemap에 싣는다. 2026년 기준, 적어도 하나의 주요 AI 앱은 독립된 공개 웹 색인에 이미 있는 주소만 경고 없이 열고, 그 밖의 주소에는 사용자에게 "확인되지 않은 링크" 경고를 띄운다. 간판은 안내판을 인쇄하기 한참 전에 달아서 색인될 시간을 준다.
8. robots.txt로 간판을 막지 않는다. 적어도 하나의 AI의 페이지 읽기 도구는 사용자가 청한 주소라도 robots.txt가 막은 주소는 열지 않는다.

## 7. 행동 층

v0.1의 범위는 읽기다. 후기·주문·예약 같은 행동은 "AI가 쓰고 사람이 보낸다"로 처리한다. AI가 내용을 정리하고, 사람이 읽고 고친 뒤 직접 전송을 누른다.

간판은 AI에게 데이터를 URL에 실어 보내게 하지 않는다. 2026년 3월의 실험에서 이 패턴은 AI에 따라 거부되거나 차단되었고, 그 거부는 옳은 동작이었다.

행동의 표준 경로(MCP, WebMCP 등)가 "길에서 들어온 손님의 폰 채팅 앱"이라는 상황에 닿으면 그쪽으로 옮긴다.

## 8. 안내판

- 문구: "AI 채팅창에 이 주소를 입력하고 물어보세요."
- 그 아래 입구 주소를 글자로, `https://` 부터 전부, 손으로 칠 수 있을 만큼 짧게 인쇄한다.
- 손님은 주소를 직접 입력한다. 2026년 9월 20일 ChatGPT·Claude·Gemini 앱에서 관찰한 것:
  - 안내판 사진만으로는 간판이 열리지 않는다. 앱들은 사진 속 주소를 읽지만 열지 않는다. 또 이미지 속 글자를 프롬프트 인젝션일 수 있다고 보고 경계하며, 왜 조심하는지를 길게 설명한다. 거기서부터 간판을 여는 데까지 갈 수는 있지만 번거롭다.
  - 같은 주소를 손님이 직접 입력하면 열리고, 말투도 친절하다. 앱들은 사용자가 제 손으로 건넨 주소를 믿는다.
  - Gemini는 스킴까지 붙은 주소만 열었고 `example.com/ganpan` 만 보낸 것은 열지 않았다.
- 3절의 주소 규칙이 중요한 이유가 이것이다. 짧은 주소 하나를 한 번 입력하는 것으로 전부가 시작된다.
- QR 코드는 쓰지 않는다. QR은 브라우저를 열 뿐 손님의 AI 채팅을 열지 않는다.
- 물리 공간이 없는 프로젝트는 안내판 없이 링크 하나로 충분하다: "궁금한 게 있으면 이 링크를 당신의 AI에게 주고 대화를 시작하세요."

## 9. 수명

전시나 행사가 끝나도 간판은 지우지 않는다. "종료됨"과 종료일을 밝히고 보존한다. 인쇄된 주소가 나중에 다른 내용을 가리키게 하지 않는다.

## 10. 아직 정해지지 않은 것

- 조각의 적정 크기와 개수 (테스트로 정한다)
- "AI가 쓰고 사람이 보낸다"의 구체적 화면: 미리 채워진 링크인지, 복사해 붙이는 폼인지
- `ganpan.org/<slug>` 호스팅 간판에서 진짜 주인의 간판임을 확인하는 방법
- "종료됨" 안내 문구의 표준

## 11. 이웃한 작업

- llms.txt는 사이트 루트에 두는 마크다운 안내 파일이다. 주로 개발 문서에 쓰이고, 크롤러가 찾아 주기를 기다린다. 간판은 손님이 일부러 자기 AI에게 주소를 건넨 뒤의 대화를 다룬다.
- MCP는 AI가 외부 서비스의 도구를 호출하는 규약이다. 사용자가 서비스를 미리 연결해 두어야 한다.
- WebMCP는 웹페이지가 브라우저 안의 에이전트에게 도구를 등록하는 초안이다. 탭이 열려 있는 동안 작동한다.
- NLWeb은 사이트를 자연어로 질의할 수 있게 하는 Microsoft의 프로젝트다.
- 마크다운 콘텐츠 협상은 클라이언트가 `Accept: text/markdown` 을 보내면 서버나 CDN이 마크다운을 돌려주는 방식이다. 간판은 이것을 5.4의 정적 사본 형태로 받아들인다.
- Content Signals는 robots.txt에 `search`, `ai-input`, `ai-train` 선호를 적자는 제안이다. IETF 초안은 만료되었다. 간판의 목적은 `ai-input` 에 해당한다.
- agents.json, A2A agent card, Agent Skills 같은 매니페스트는 사이트가 에이전트에게 API나 작업 흐름, 지시를 알리는 수단이다. 미리 연결된 에이전트와 개발자 도구를 향한 것이고, 일부는 에이전트에게 주는 지시를 담는다. 간판은 에이전트에게 역할이나 추천할 것을 정해 주지 않는다(원칙 2).
- BYOA(Bring Your Own Agent)는 업계의 일반 용어다. 이 구상의 2026년 3월 기록이 이 이름을 썼다: <https://github.com/engmung/BYOA>

조사한 범위에서는, 공간의 주인이 AI용 페이지만 내걸고 손님이 자기 AI를 데려오는 구조를 실제로 배치한 선행 사례를 찾지 못했다. 영어 위주로 몇 차례 검색한 결과이며, 그런 사례가 없다는 증명은 아니다.

## 12. 변경 기록

v0.1 초안, 2026-09-20.

- 첫 정리.
- 관련 작업 조사 후: 마크다운 사본(5.4), 호스팅·CDN 확인과 주소 불변(6.5, 6.6), 이웃한 작업 보강(11).
- AI 앱이 어떤 주소를 여는지에 대한 두 번째 조사 후: 쿼리스트링 금지(3.4), 바뀌는 정보의 날짜와 고정 주소(5.2), 링크 규칙 보강(5.3), 색인과 robots.txt(6.7, 6.8).
- 첫 앱 테스트 후: 안내판은 손님에게 주소를 직접 입력하라고 하고, 주소는 `https://` 부터 전부 인쇄한다(8). ChatGPT는 손님이 조각 주소를 보내야 조각을 열므로 입구에 조각 주소를 복사하기 쉬운 코드 블록 하나로 모으고, 출처를 밝힌 주인장 부탁 한 문장을 둘 수 있다(5.1, 5.3).
- 라이선스를 CC BY 4.0으로 정함.
