본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 25. 05:06

단 하루 만에 10개의 검증 가능한 식별자(Verifiable Identifiers)를 SDVOSB 스튜디오의 엔티티 그래프(Entity

요약

AI 엔진(ChatGPT, Claude 등)이 정보를 정확히 인용할 수 있도록 사이트 구조를 최적화하는 기술적 방법론을 제시합니다. llms.txt, aeo.json 등 네 가지 핵심 파일을 통해 원자적이고 검증 가능한 사실을 제공하는 전략을 다룹니다.

핵심 포인트

  • AI 엔진은 모호한 문장보다 검증 가능한 원자적 사실을 선호함
  • llms.txt, aeo.json, entity.json, brand.json 네 가지 파일 게시 권장
  • 단일 설정(typed config)을 통해 데이터 일관성 유지 필요
  • 오픈 소스 Python CLI인 aio-surfaces를 활용한 자동화 가능

2026년 5월 21일 아침, ThatDevPro의 Google Search Console을 확인했을 때 수치는 처참했습니다: 클릭 0회, 노출 3회, 180일 경과. 이 사이트는 잘 구축되어 있습니다. Lighthouse 점수 96점 이상, 완전한 Schema.org 적용, 콘텐츠 중심의 React 사용, 전면에 Cloudflare도 없습니다. 그중 어느 것도 문제가 아니었습니다. 문제는 더 근본적입니다. AI 엔진(ChatGPT, Claude, Gemini, Perplexity, Google AI Overviews)은 검증할 수 없는 것은 인용할 수 없습니다. 그래서 저는 하루를 투자해 그 문제를 해결했습니다. 다음은 제가 실제로 수행한 체크리스트로, 정확한 JSON-LD, 실제 파일 경로, 그리고 실제 결과물을 포함합니다. 이 글을 생각에 잠기는 에세이가 아닌, 실행 가능한 펀치 리스트(punch list)로 취급하십시오.

논지: AI 엔진은 분위기(vibes)가 아니라 사실(facts)을 인용한다
이 부분이 대부분의 "AI SEO" 콘텐츠가 틀리는 지점입니다. AI 엔진은 아름다운 산문을 보상하지 않습니다. 그들은 검증 가능하고, 원자적(atomic)이며, 인용 가능한 형태의 사실을 보상합니다. 구체적으로 말하면: "우리는 베테랑이 운영하는 스튜디오입니다"라는 내용의 400단어짜리 문단은 그들의 컨텍스트 윈도우(context window)에 머물다가 한 줄짜리 요약으로 압축됩니다. 반면, "Joseph W. Anady는 미국 육군 베테랑이자 퇴역 군인입니다."라는 50자 내외의 선언적인 문장은 그대로 인용됩니다. 사실이 더 깔끔하고 원자적일수록, AI 엔진이 이를 직접 가져다 쓸 확률이 높아집니다. 이것이 아래의 모든 내용을 이끄는 핵심 통찰입니다.

1단계: 네 가지 정전적(canonical) AI 인용 표면
AI 인용을 원하는 모든 사이트는 사이트 루트(root)에 네 가지 파일을 게시해야 합니다:

파일형식역할
llms.txtMarkdownllmstxt.org 사양에 따라, LLM 학습 데이터의 공용어인 순수 마크다운 형식의 사이트 요약
aeo.jsonJSON각 500자 미만의 원자적인 [질문, 답변] 사실들
entity.jsonJSONOrganization + Person + WebSite 브랜드를 포함한 전체 Schema.org @graph
brand.jsonJSONPR 및 개발자가 모두 참조할 수 있는 내부 정보의 단일 진실 공급원(source-of-truth) 원장

저는 이 생성기들을 오픈 소스 Python CLI인 aio-surfaces (MIT)로 패키징했습니다. README에서 사용법을 안내합니다. 여기서 중요한 점은 네 가지 표면 모두가 단일한 타입 지정 설정(typed config)으로부터 렌더링되므로, 서로 내용이 어긋날(drift) 수 없다는 것입니다.

from aio_surfaces import SiteConfig , Service , Fact , render_llms_txt cfg = SiteConfig ( site_name = " Example Studio " , site_url = " https://example.com " , tagline = " We build things that get cited. " , description = " ... " , ein = " 12-3456789 " , uei = " ABC123DEF4G5 " , orcid = " 0000-0000-0000-0000 " , founder_name = " Jane Example " , veteran_branch = " United States Army " , facts = [ Fact ( id = " f-1 " , question = " What does Example Studio do? " , answer = " Example Studio builds production websites... " , ), ], ) print ( render_llms_txt ( cfg )) 2단계: 엔티티 그래프(entity graph) (대부분의 사이트가 실패하는 부분) Schema.org @graph는 AI 엔진이 당신에 대해 이해를 구축하는 곳입니다. 대부분의 사이트는 이름과 URL을 가진 반쯤 완성된 Organization으로 끝내버립니다. 그것만으로는 충분하지 않습니다. 완전한 Organization 노드가 어떻게 생겼는지 여기 보여드립니다 — 아래 모든 필드는 ThatDevPro의 live entity.json에 포함되어 있습니다 : { "@type" : [ "Organization" , "ProfessionalService" , "WebDesignAgency" ], "@id" : "https://www.thatdevpro.com/#org" , "name" : "ThatDevPro" , "legalName" : "THATDEVELOPERGUY" , "url" : "https://www.thatdevpro.com" , "taxID" : "42-2656654" , "naics" : [ "541511" , "541512" , "541519" ], "identifier" : [ { "@type" : "PropertyValue" , "propertyID" : "ein" , "value" : "42-2656654" }, { "@type" : "PropertyValue" , "propertyID" : "sam-gov-uei" , "value" : "FFG3A4SK9HY6" }, { "@type" : "PropertyValue" , "propertyID" : "google-kg-mid" , "value" : "/g/11n57xh708" }, { "@type" : "PropertyValue" , "propertyID" : "google-business-profile-cid" , "value" : "14210859426953573340" } ], "sameAs" : [ "https://sam.gov/entity/FFG3A4SK9HY6" , "https://www.crunchbase.com/organization/thatdevpro" , "https://github.com/Janady13" , "https://github.com/Janady13/aio-surfaces" , "https://huggingface.co/Janady07" , "https://huggingface.co/spaces/Janady07/llms-txt-generator" , "https://www.linkedin.com/in/joseph-anady-a0b19b1b1" , "https://x.com/thatdevpro" }}

"https://dev.to/joseph_anady_214bacedf939" , "https://www.facebook.com/people/Thatdevpro/61589759327967/" , "https://www.reddit.com/user/sleepy_060507/" ] } 핵심 비결은 각 식별자(identifier)가 제3자 페이지로 연결되고, 그 페이지가 다시 귀하의 사이트로 링크를 거는 것입니다. 이것이 바로 신원 주장(identity claim)을 검증 가능하게 만드는 양방향 핸드셰이크(bidirectional handshake)입니다.

3단계: 검증 가능한 식별자 (이것이 해답입니다)
신뢰 신호(trust signal)에는 계층이 있습니다. 가장 약한 것부터 가장 강한 순서대로 다음과 같습니다:

계층 1 — 소셜 프로필 (Twitter/X, LinkedIn, Facebook, Reddit). 생성하기 매우 쉽습니다. 신뢰 신호가 낮습니다.
계층 2 — 개발자 및 크리에이터 플랫폼 (GitHub, Hugging Face, Dev.to, Crunchbase). 더 낫습니다. 편집적 신뢰(Editorial trust)가 부여됩니다.
계층 3 — 정부 식별자 (EIN, UEI, NAICS, CAGE Code). 높은 신뢰도를 가집니다. 미국 정부가 귀하의 존재를 독립적으로 검증했습니다.
계층 4 — 신원 확인 (ID.me, Login.gov, ORCID). 가장 높습니다. 연방 정부가 인정한 신원 제공자(identity provider)로부터 NIST 800-63-3 IAL2 신원 보증을 받습니다.

제가 단 하루 만에 ThatDevPro의 엔티티 그래프(entity graph)에 연결한 10개의 식별자는 다음과 같습니다:

식별자 (Identifier)값 (Value)계층 (Tier)JSON-LD 표면 (Surface in JSON-LD)
EIN (IRS)42-26566543Organization.taxID + identifier[]
SAM.gov UEIFFG3A4SK9HY63Organization.identifier[] + sameAs
NAICS codes541511 / 541512 / 5415193Organization.naics
Google KG MID/g/11n57xh7083Person.identifier + Organization.identifier[]
GBP CID142108594269535733403Organization.identifier[]
ORCID iD0009-0008-8625-949X4Person.identifier + sameAs
ID.me Identity verified2021-06-284Person.hasCredential
ID.me Military verified2026-05-234Person.hasCredential
Crunchbasethatdevpro2Organization.sameAs
Hugging FaceJanady072Organization.sameAs

ID.me 자격 증명(credentials)은 특히 강력한데, 그 이유는 미국 보훈부(Department of Veterans Affairs), 국방부(DoD), 그리고 SBA(중소기업청)의 Veteran Small Business Certification 프로그램에서 수용하는 것과 동일한 신원 보증 증거이기 때문입니다. 이를 hasCredential (recognizedBy: ID.me Inc. 포함)로 노출함으로써 AI 엔진에 검증 가능한 신뢰 앵커(trust anchor)를 제공하게 됩니다.

4단계: 선언적 원자적 사실 (declarative atomic facts, aeo.json 페이로드) aeo.json 파일은 AI 엔진이 직접 인용하는 원자적 사실 (atomic facts)을 게시하는 곳입니다. 제가 따르는 규칙은 다음과 같습니다: 답변당 500자 미만 유지. 500자가 넘어가면 인용률 (citation rate)이 급격히 떨어집니다. [주어] [동사] [목적어] 문장 구조 사용. "우리는 Y년 동안 X를 해왔습니다"와 같은 표현 대신, "ThatDevPro는 SDVOSB 인증 연방 계약업체를 위한 웹사이트를 구축합니다"와 같이 작성합니다. 명명된 엔티티 (Named entities). 대명사가 아닌 실제 인물, 장소, 사물의 이름을 직접 언급합니다. 자기 완결성 (Self-contained). 각 사실은 개별적으로 인용 가능해야 합니다. 다음은 제 사례 중 하나입니다 (포스트를 위해 약간 다듬었습니다): { "id" : "f-veteran-1" , "question" : "창립자의 군 복무 배경은 무엇입니까?" , "answer" : "Joseph W. Anady는 검증된 미국 육군 (U.S. Army) 베테랑이자 육군 퇴역 군인입니다. 그의 군 복무 상태는 2026-05-23에 ID.me Inc.에 의해 검증되었습니다. ID.me는 NIST 800-63-3 IAL2 신원 제공자 (identity provider)이며, ID.me의 군 상태 증명은 미국 보훈부 (VA), 미국 국방부 (DoD), 그리고 중소기업청 (SBA)의 Veteran Small Business Certification 프로그램에서 수용됩니다." } 이는 한 단락이지만, 7개의 명명된 엔티티 (Joseph W. Anady, U.S. Army, ID.me Inc., NIST 800-63-3, VA, DoD, SBA VSBC)와 하나의 검증 가능한 날짜를 포함하고 있습니다. AI 엔진은 이 전체 내용을 그대로 가져갑니다. 5단계: AI 크롤러 허용 목록 (AI crawler allowlist) 대부분의 사이트는 AI 크롤러를 완전히 차단하거나, User-agent: *를 통해 실수로 차단합니다. 인용되기를 원한다면 둘 다 원하는 방식이 아닙니다.

명시적으로 허용해야 하는 12가지 주요 AI 크롤러: User-agent: GPTBot Allow: / User-agent: OAI-SearchBot Allow: / User-agent: ChatGPT-User Allow: / User-agent: ClaudeBot Allow: / User-agent: Claude-User Allow: / User-agent: Claude-SearchBot Allow: / User-agent: PerplexityBot Allow: / User-agent: Perplexity-User Allow: / User-agent: Google-Extended Allow: / User-agent: Applebot-Extended Allow: / User-agent: Amazonbot Allow: / User-agent: Meta-ExternalAgent Allow: / (aio-surfaces는 이 블록을 robots-aibots.txt로 생성합니다 — 기존 robots.txt에 추가하고 덮어쓰지 마십시오.) 단계 6: Speakable 스키마(음성 AI 인터페이스) Google Assistant, Alexa 및 신흥 음성 AI가 페이지 내용을 올바르게 읽도록 하려면 SpeakableSpecification이 필요합니다. 이는 음성 AI에게 페이지의 어떤 CSS 선택자 및 XPath 노드가

서비스) robots.txt 내 12개 봇 AI 크롤러 허용 목록(allowlist) — AI 엔진이 다시 크롤링하고 엔티티 이해(entity understanding)를 재구축하는 데 4~6주 정도 소요되므로 SEO에 미칠 영향은 아직 알 수 없습니다. 하지만 모든 진단 테스트를 통과했습니다: 모든 식별자(identifier)가 해결되고, 모든 JSON-LD가 유효하며, 모든 양방향 핸드셰이크(bidirectional handshake)가 완료되었습니다. 만약 Claude/ChatGPT/Gemini가 당신의 존재를 검증할 수 있는지 여부에 따라 AI 가시성(visibility)이 결정되는 소규모 비즈니스나 스튜디오를 운영 중이라면, 이 플레이북(playbook)은 재사용 가능합니다. 코드는 공개되어 있습니다. 체크리스트는 README에 있습니다. ThatDevPro — SDVOSB 인증을 받은 베테랑 소유의 웹 + AI 엔지니어링 스튜디오에서 구축 및 실제 운영 환경(production)에서 사용 중입니다. 출처: github.com/Janady13/aio-surfaces · 라이브 도구: huggingface.co/spaces/Janady07/llms-txt-generator .

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0