설치부터 API 까지. 이 페이지에 없는 것은 junhuhan99@gmail.com 로 물어보세요.
대시보드에서 사이트를 등록하면 고유 키(am_…)가 나옵니다. 아래 한 줄을 모든 페이지의 <head> 에 넣습니다. 태그 관리자(GTM)로 넣어도 됩니다.
<script src="https://veritai.teamplut.com/veritai.js" data-site="va_XXXXXXXXXXX" defer></script>
넣자마자 하단(또는 상단)에 사전 고지 배너가 뜨고, 라벨 셀렉터에 맞는 요소에 「AI 생성」 라벨이 붙습니다. 첫 기록이 들어오면 대시보드의 사이트 상태가 «가동 중»으로 바뀝니다.
설정은 태그가 아니라 대시보드에 저장되고 스크립트가 5분 캐시로 받아 갑니다. 그래서 문구·색·위치를 바꿔도 사이트 코드를 다시 배포할 필요가 없습니다.
| 항목 | 설명 |
|---|---|
| 배너 켜기/위치/테마/강조색 | 하단·상단, 어두운/밝은 테마, 버튼·테두리 색 |
| 언어 | 자동(문서 lang → 브라우저 언어), 한국어 고정, 영어 고정 |
| 확인 후 재표시 안 함 | 0~365일. 0이면 매번 표시. localStorage 에 확인 시각만 저장 |
| 문구 | 배너 본문·근거 문구·버튼·라벨 문구를 한/영 각각 수정. HTML 은 들어가지 않습니다(텍스트로만 삽입) |
| 「VERIT AI로 고지됨」 표기 | 무료 요금제는 항상 표시, 유료는 끌 수 있음 |
기본값은 [data-veritai], [data-ai-generated], .ai-generated 입니다. 챗봇 답변 말풍선이나 생성 이미지 컨테이너의 CSS 셀렉터를 쉼표로 더 적으면, 지금 있는 요소와 나중에 추가되는 요소 모두에 라벨이 붙습니다(MutationObserver).
/* 예: 채널톡·인터콤 류 위젯의 봇 메시지, 자체 챗 UI */ .ch-bot-message, .intercom-comment[data-bot], .chat .m.b, img.generated
가상 콘텐츠(딥페이크류) 셀렉터를 따로 적으면 「AI 생성 · 가상 콘텐츠」 라벨과 제31조 3항 고지 문구(title·aria-description)가 붙습니다.
라벨은 position:absolute 로 요소 오른쪽 위에 놓이며, 부모가 static 이면 relative 로 바꿉니다. 클래스 .veritai-label 로 스타일을 덮어쓸 수 있습니다.
window.__veritai.label(element) // 이 요소에 라벨 부착 (SPA 에서 직접 호출)
window.__veritai.label(element, {deepfake:true}) // 가상 콘텐츠로 표시
window.__veritai.notice() // 배너를 다시 보여 준다 (확인 기록 삭제)
window.__veritai.count() // 이 페이지에서 붙인 라벨 수
채널톡 상담창은 iframe 안에서 채널톡 서버가 그리므로, 페이지에 넣은 스크립트로는 봇 답변에 라벨을 붙일 수 없습니다. VERIT AI 는 세 겹으로 처리합니다. 대시보드 → 사이트 → 채널톡 탭에서 켭니다.
| 층 | 무엇을 | 설정 위치 |
|---|---|---|
| ① 웹훅 (서버) | 유저챗이 열리거나 첫 메시지가 오면 봇이 고지 메시지를 먼저 보냅니다(채팅당 1회, 증적 기록). 봇 답변은 «표시 부착» 증적으로 기록됩니다. | 채널톡 채널 설정 → 연동 → 웹훅에 대시보드가 주는 주소 등록(이벤트: 유저챗 생성·메시지 생성). 채널 설정 → 보안 및 개발 → Open API 키를 대시보드에 입력. |
| ② ALF 지시문 | AI 상담원 답변 끝줄에 표시 문구를 붙이게 합니다(제31조 2항 «결과물 표시»). | 채널 설정 → ALF → 지시사항에 대시보드의 문장을 붙여 넣기. |
| ③ 화면 (스크립트) | ChannelIO('onShowMessenger') 에 걸어 상담창을 여는 순간 고지 배너를 띄우고 기록합니다(세션당 1회). | 스크립트만 설치돼 있으면 자동. |
Open API 로 보내는 고지 메시지는 채널톡 요금제의 봇 메시지 정책을 따릅니다. 웹훅 주소에는 사이트별 비밀 토큰이 들어 있으니 외부에 공개하지 마세요(설정 탭에서 재발급 가능).
사이트마다 공개 안내 페이지 https://veritai.teamplut.com/p/<키> 와 기계판독 파일 …/p/<키>.json 이 생성됩니다. 배너의 「AI 이용 안내」 링크가 여기로 갑니다. 사이트 푸터에도 링크를 두는 것을 권합니다.
자기 도메인에 두고 싶으면 대시보드에서 ai-disclosure.json 을 내려받아 /.well-known/ai-disclosure.json 에 올리고, 페이지 head 에 다음을 넣습니다.
<meta name="ai-disclosure" content="https://example.com/.well-known/ai-disclosure.json">
대시보드에서 API 키(vai_…)를 발급합니다. 헤더 X-Verit-Key 로 보냅니다. 월 한도는 요금제에 따릅니다.
POST https://veritai.teamplut.com/v1/label/text
X-Verit-Key: vai_…
Content-Type: application/json
{"text":"…AI 답변…", "lang":"ko", "kind":"generated", "position":"suffix"}
→ {"ok":true, "text":"…AI 답변…\n\nAI 생성 콘텐츠 · 이 내용은 생성형 인공지능이 만든 결과물입니다.", "label":"…"}
PNG/JPEG 바이너리를 그대로 보냅니다. 모서리에 보이는 라벨을 얹고(끄려면 ?visible=0), XMP 에 veritai:aiGenerated · IPTC DigitalSourceType=trainedAlgorithmicMedia 를, PNG 는 iTXt 청크에 같은 선언을 심어 돌려줍니다.
curl -X POST "https://veritai.teamplut.com/v1/label/image?lang=ko&corner=br" \
-H "X-Verit-Key: vai_…" -H "Content-Type: image/png" \
--data-binary @generated.png -o labeled.png
# 검증(키 불필요)
curl -X POST https://veritai.teamplut.com/v1/verify/image --data-binary @labeled.png
→ {"ok":true,"labeled":true,"meta":{"aiGenerated":true,"issuer":"VERIT AI …","issuedAt":"…"}}
OpenAI SDK 의 base_url 만 바꾸면 모든 답변 끝에 표시 문구가 붙고 증적이 남습니다. 손님의 OpenAI 키는 Authorization 헤더로 그대로 상류에 전달되며 저장하지 않습니다. 스트리밍도 지원합니다.
from openai import OpenAI
client = OpenAI(
base_url="https://veritai.teamplut.com/v1",
api_key="sk-…", # 귀사의 OpenAI 키 (그대로 전달)
default_headers={"X-Verit-Key": "vai_…", "X-Verit-Lang": "ko"},
)
r = client.chat.completions.create(model="gpt-4.1-mini", messages=[{"role":"user","content":"안녕"}])
print(r.choices[0].message.content) # 끝에 표시 문구가 붙어 있다
X-Verit-Upstream: wit 를 주면 위트 AI API 를 상류로 씁니다(해외카드 없이 원화 결제).
스크립트는 배너 노출(shown)·확인(ack)·라벨 부착(label)을, API 는 처리 건(api)을 기록합니다. 각 기록에는 페이지 경로, 언어, 그때 쓴 문구의 해시가 붙어 «언제 무슨 문구로 고지했는가»를 되짚을 수 있습니다. 대시보드에서 CSV 로 내려받고, 월간 이행 보고서를 인쇄해 제출합니다. 보관 기간은 요금제(7일·90일·3년)에 따르며 기한이 지난 원장은 삭제되고 일별 요약만 남습니다.
스크립트는 쿠키를 쓰지 않습니다. 확인 시각만 localStorage 에 둡니다. 서버는 IP 를 저장하지 않고 날짜+IP+UA 의 해시 앞 24자만 두어 «오늘 몇 명이 고지를 받았나»를 셉니다. 하루가 지나면 같은 사람을 이을 수 없습니다. 페이지 경로는 저장하지만 쿼리스트링은 저장하지 않습니다.
VERIT AI는 고지·표시 실행 도구이며 법률 자문을 제공하지 않습니다. 법령의 해석·적용은 이용 기업의 책임입니다.