설치 가이드
사이트에는 두 가지가 게시되어야 합니다. 방문자가 보는 고지와, AI 사용을 선언하는 작은 공개 파일(yoursite.com/.well-known/ai-disclosure.json)입니다. 스니펫 태그는 한 번만 붙여 넣으면 되고 모든 페이지에서 동일하며, 어떤 고지가 어디에 나타날지는 선언이 결정합니다. 아래에서 플랫폼을 선택하세요. 대부분 약 10분이 걸립니다.
방문자가 페이지에서 보는 배너와 AI 라벨.
ai-disclosure.json, 자체 도메인에서 읽을 수 있는 공개 파일.
검사기가 레벨 2 · 표시됨을 보여줄 때.
플랫폼 선택
WordPress
플러그인 설치
WordPress 관리자에서: 플러그인 → 새로 추가 → 플러그인 업로드로 이동하여, 아래에서 다운로드한 파일을 선택한 후 활성화를 클릭하세요.
두 작업을 모두 맡기기
플러그인이 고지를 표시하고 선언 파일을 자동으로 게시합니다. 게시글이나 이미지의 "AI 콘텐츠" 토글로 AI 콘텐츠를 표시하세요. 코드 편집이 필요 없습니다.
-
검증
검사기가 레벨 2 · 표시됨을 보여주면 완료입니다.
검사기 실행
Shopify
스니펫 추가
온라인 스토어 → 테마 → ⋯ → 코드 편집 → theme.liquid: </body> 바로 앞에 이 태그 하나를 붙여 넣으세요. theme.liquid는 모든 페이지가 거쳐 렌더링되는 레이아웃이므로 한 번만 붙여 넣으면 스토어 전체에 적용됩니다. Shopify는 도메인 루트에 파일을 호스팅할 수 없으므로, 태그가 AIDisclose 사이트 키(data-aidisclose)를 담아 우리가 대신 호스팅하는 매니페스트를 불러옵니다.
theme.liquid <script src="https://cdn.aidisclose.io/v1/aidisclose.js" data-aidisclose="YOUR_SITE_KEY" defer></script>선언 연결
같은 파일의 <head> 안에 이 링크를 붙여 넣으세요. 대시보드에 두 줄이 사이트 키가 채워진 상태로 표시됩니다.
<head> <link rel="ai-disclosure" href="https://cdn.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY">이는 명세에서 허용하는 방식입니다.
-
검증
검사기가 참고 사항과 함께 레벨 1 · 선언됨을 보여주면 완료입니다. 이는 이 플랫폼에서 예상되는 결과이며, 준수 상태입니다.
검사기 실행
Webflow
스니펫 추가
사이트 설정 → 사용자 지정 코드 → 푸터 코드: 아래 스니펫 블록을 붙여 넣은 후 게시하세요. 사이트 수준의 사용자 지정 코드는 모든 페이지에 로드됩니다.
Footer code <script src="https://cdn.aidisclose.io/v1/aidisclose.js" data-aidisclose="YOUR_SITE_KEY" defer></script>선언 연결
헤드 코드에 선언 링크 줄(아래 두 번째 블록)을 추가하세요. 파일을 자체 도메인에서 제공하고 싶으신가요? DNS가 Cloudflare를 통해 운영된다면 고급 항목의 프록시를 사용하세요.
Head code <link rel="ai-disclosure" href="https://cdn.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY">이는 명세에서 허용하는 방식입니다.
-
검증
검사기가 참고 사항과 함께 레벨 1 · 선언됨을 보여주면 완료입니다. 이는 이 플랫폼에서 예상되는 결과이며, 준수 상태입니다.
검사기 실행
Squarespace
스니펫 추가
설정 → 고급 → 코드 삽입 → 푸터: 아래 스니펫 블록을 붙여 넣으세요. 코드 삽입은 모든 페이지에 적용됩니다. Business 플랜이 필요합니다.
Footer <script src="https://cdn.aidisclose.io/v1/aidisclose.js" data-aidisclose="YOUR_SITE_KEY" defer></script>선언 연결
헤더 삽입에 선언 링크 줄(아래 두 번째 블록)을 추가하세요.
Header <link rel="ai-disclosure" href="https://cdn.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY">이는 명세에서 허용하는 방식입니다.
-
검증
검사기가 참고 사항과 함께 레벨 1 · 선언됨을 보여주면 완료입니다. 이는 이 플랫폼에서 예상되는 결과이며, 준수 상태입니다.
검사기 실행
Google Tag Manager
태그 생성
새 태그 → 태그 구성 → 맞춤 HTML → 스니펫을 붙여 넣으세요. 트리거: 모든 페이지(페이지 뷰). 지연 또는 스크롤 트리거를 사용하지 마세요. 고지 규정은 첫 노출 시점부터 고지를 요구합니다. 작업공간을 게시하세요.
Custom HTML <script src="https://cdn.aidisclose.io/v1/aidisclose.js" defer></script>선언도 게시하기
Tag Manager는 고지만 처리합니다. 선언 파일도 게시되어야 합니다. 다른 탭에서 사용하는 플랫폼의 단계를 따르거나, 자체 사이트를 운영한다면 맞춤 코드 탭을 따르세요.
-
검증
검사기가 레벨 2 · 표시됨을 보여주면 완료입니다.
검사기 실행
맞춤 코드
스니펫 추가
사이트 템플릿이나 레이아웃에 </body> 앞에 한 번 넣으면 모든 페이지와 함께 배포됩니다. 프로덕션 강화(버전 고정, SRI)는 고급 항목에 있습니다.
HTML <script src="https://cdn.aidisclose.io/v1/aidisclose.js" defer></script>선언 파일 제공
ai-disclosure.json 은 도메인의 /.well-known/ 에서 읽을 수 있어야 합니다. Vercel 또는 Netlify에서는 파일을 커밋하십시오. 프레임워크가 모든 경로를 index.html로 다시 쓴다면 그 파일에 예외가 필요합니다. 고급의 싱글 페이지 앱을 참고하십시오. nginx와 Apache 설정도 고급에 있습니다.
Vercel / Netlify # Vercel / Netlify: commit the file public/.well-known/ai-disclosure.json # SPA that rewrites every route to index.html? # Exclude /.well-known/ from the rewrite (see Advanced).-
검증
검사기가 레벨 2 · 표시됨을 보여주면 완료입니다.
검사기 실행
검증
검사기를 실행하세요. 세 가지를 확인합니다. 선언 파일이 유효한지, 스니펫이 실행 중인지, 고지가 페이지에 실제로 나타나는지입니다. (엔지니어용: C1, C3, C4~C6 검사.)
사이트가 검사기(AIDiscloseBot)를 차단하는 경우
검사와 증거 캡처는 AIDiscloseBot/1.0에서 수행됩니다. 공개 페이지만 읽으며, 로그인하거나 양식을 제출하지 않고 robots.txt를 준수합니다. robots.txt나 봇 차단이 알 수 없는 크롤러를 차단한다면 명시적으로 허용하세요:
User-agent: AIDiscloseBot
Allow: /
허용하는 것이 위험할까요? 아닙니다. robots.txt 허용은 어떠한 접근 권한도 부여하지 않습니다. 예의 바른 봇에게 이미 공개된 페이지를 읽어도 된다고 알릴 뿐입니다. 누구나 User-Agent 문자열을 위조할 수 있지만, 위조자가 얻을 수 있는 것은 공개 페이지가 이미 제공하는 것뿐입니다.
WAF나 봇 관리자로 트래픽을 통제한다면, User-Agent만으로 허용 목록에 추가하지 마세요. 출처 검증과 함께 사용하세요. 우리는 크롤러 신원과 할당되는 대로 이그레스 IP 범위를 다음에 공개합니다: aidisclose.io/bot.json.
고급
Theming with CSS variables, custom copy, single-page-app setup, and the full option reference are in the snippet reference.
스크립트를 정확한 버전으로 고정(SRI)
스크립트 태그의 무결성 해시는 수정된 파일의 실행을 브라우저가 거부하게 만듭니다. 버전이 지정된 URL을 고정하고, 배포하는 정확한 파일에서 해시를 생성하세요:
curl -sO https://cdn.aidisclose.io/v1/aidisclose.js
openssl dgst -sha384 -binary aidisclose.js | openssl base64 -A
파일을 직접 제공(nginx / Apache)
직접 관리하는 서버에서는 다운로드한 ai-disclosure.json을 직접 제공하세요:
location = /.well-known/ai-disclosure.json {
alias /var/www/site/ai-disclosure.json;
default_type application/json;
add_header Cache-Control "max-age=3600";
}
Alias "/.well-known/ai-disclosure.json" "/var/www/site/ai-disclosure.json"
<Files "ai-disclosure.json">
ForceType application/json
</Files>
대시보드에서 호스팅되는 파일을 자체 도메인에서 제공
귀하의 서버가 해당 주소 하나에 대한 요청을 우리에게 전달합니다. 파일은 대시보드에서 편집하지만 여전히 귀하의 도메인에서 제공됩니다. 대시보드에 이 내용이 사이트 키가 채워진 상태로 표시됩니다.
location = /.well-known/ai-disclosure.json {
proxy_pass https://cdn.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY;
proxy_set_header Host cdn.aidisclose.io;
proxy_ssl_server_name on;
}
export default {
async fetch(request) {
const url = new URL(request.url);
if (url.pathname === "/.well-known/ai-disclosure.json") {
return fetch("https://cdn.aidisclose.io/v1/hosted-manifest/YOUR_SITE_KEY");
}
return fetch(request);
}
};
싱글 페이지 앱과 정적 호스트
모든 경로를 index.html로 다시 쓰는 프레임워크와 일부 정적 호스트는 /.well-known/ai-disclosure.json 요청을 가로채 애플리케이션의 HTML을 200 상태로 반환합니다. 파일이 커밋된 것처럼 보이지만, 체커는 매니페스트 대신 HTML을 읽습니다. 두 가지 해결 방법이 있습니다. /.well-known/ 을 포괄 재작성 규칙에서 제외하여 정적 파일이 application/json 유형으로 제공되도록 하거나, script 태그에 data-aidisclose="YOUR_SITE_KEY" 를 추가하여 AIDisclose가 호스팅하는 매니페스트를 불러오고 파일을 직접 제공하는 과정을 완전히 생략하십시오.
# netlify.toml: serve the real file before the SPA fallback
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
force = false # a real file at the path wins over this fallback
# vercel.json: rewrite everything EXCEPT /.well-known to the app
{ "rewrites": [
{ "source": "/((?!\.well-known/).*)", "destination": "/index.html" }
] }