SEO와 AEO.
masonfe-hyunsu
🧭 1. 개요.

예전에는 키워드를 넣고 검색결과 링크를 고르는 흐름이 중심이었다.
지금은 같은 질문이 AI 개요, 어시스턴트, 음성비서, 앱 내 검색으로 재가공되어 나온다.
노출이 한 포털에 머물지 않고 MCP(Multi-Channel Presence, 여러 채널에 동시에 존재하는 상태)로 넓어진다.
그만큼 문서가 색인(검색엔진이 나중에 찾아쓸 수 있게 내용을 저장해 두는 일)되는 것과 답변으로 뽑히는 것을 같이 봐야 한다.
이 포스팅에서는 SEO(Search Engine Optimization, 검색결과에 잘 보이도록 페이지를 다듬는 일)와 AEO(Answer Engine Optimization, AI 답변에 채택되도록 콘텐츠를 다듬는 일)가 어디서 갈라지는지, 프론트엔드에서 손댈 수 있는 경계를 정리해 본다.
🔀 2. SEO와 AEO.
구분 | SEO | AEO |
|---|---|---|
정의 | 검색엔진에 잘 노출되도록 구조, 콘텐츠를 최적화 | AI 응답 시스템에서 답변으로 채택되도록 최적화 |
목표 | 색인 후 SERP(Search Engine Results Page, 검색결과 화면) 상위 노출 | 질문의 직접적인 '답'으로 선택 |
저장 감각 | 페이지(문서) 단위 | 엔티티(사람, 회사, 제품처럼 구분되는 대상), 사실, 관계(지식 조각) |
SEO는 Blue Link(파란 제목 링크), 스니펫(결과 아래 짧은 요약), 랭킹 신호가 핵심이다.
AEO는 FAQ, 정의 문단, JSON-LD(페이지 의미를 기계가 읽기 쉽게 붙이는 구조화 데이터)처럼 LLM(Large Language Model, 글을 이해하고 생성하는 AI 모델)이 잘라 쓰기 좋은 조각이 핵심이다.
둘 다 같은 크롤링(봇이 웹페이지를 돌아다니며 문서를 가져오는 일)에서 시작하지만, 실무에서는 문서 단위 노출과 지식 조각 추출로 나눠 보는 편이 편하다.

SEO는 문서를 올리고, AEO는 지식을 올린다.
🕷️ 3. 수집에서 순위까지.
Google이 공개한 흐름은 Crawling → Indexing → Serving(수집 → 색인 → 결과 제공)이다. 실무 노트에서는 그 사이에 분석(Processing) 을 두고 네 단계로 나눠 봤다.
세부 랭킹 로직은 대부분 비공개다. 조작 방지, 스팸 대응, 정책 변경 여지를 남기기 위해서다. 그래서 우리가 손댈 수 있는 쪽은 문서가 어떻게 읽히게 생겼는지에 가깝다.

수집 (Crawling).
크롤러는 고유 User-Agent(봇이 자신을 밝힐 때 쓰는 이름 문자열)로 페이지를 방문한다. (Googlebot, bingbot, Yeti, GPTBot 등)
URL 후보는
sitemap.xml(사이트 지도, 크롤러에게 주요 URL 목록을 알려 주는 파일), 과거 방문, 내부 링크에서 모인다.robots.txt(크롤러 출입 규칙 파일)로 허용된 URL만 Crawl Queue(다음에 방문할 URL 대기열)에 들어가고, 정적 문서를 가져온다.둘 다 필수는 아니다. sitemap이 없으면 링크 탐색에 더 기대고, robots가 없으면 기본은 허용으로 본다.
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/분석 (Processing).
먼저 정적 HTML을 본다.
의미가 부족하면 JS 렌더링을 지원하는 엔진은 렌더 결과까지 본다. (JavaScript SEO)
CSR(Client-Side Rendering, 브라우저에서 JS로 화면을 그리는 방식)만 쓰면 초기에 텍스트가 비어 색인이 밀리거나 실패하는 케이스가 많다.
이때 뽑히는 신호는 Title, Meta, Heading, alt, Canonical(같은 내용의 대표 URL을 가리키는 표시)뿐 아니라 JSON-LD, FAQ, 엔티티 관계, 문서 의도(Intent)까지 갈라진다.
SEO 쪽은 문서 요약, 링크, 헤딩 구조가 중심이고, AEO 쪽은 엔티티, 사실, 관계, Q→A 조각이 중심이다.
색인 (Indexing).
SEO 쪽(문서 관점): 페이지 레코드. URL, Title, Description, Heading 요약, 본문 요약, 링크, CWV(Core Web Vitals, 로딩, 안정, 반응 같은 핵심 체감 성능 지표) 신호.
AEO 쪽(실무 비유): 지식 그래프처럼 엔티티와 사실, 관계를 조각으로 보는 모델.
isA,foundedYear,PublisherOf같은 속성 감각.SEO는 페이지를 한 덩어리로, AEO는 페이지를 잘게 쪼개 지식 조각으로 보는 감각이다.
noindex(이 페이지를 검색결과에 넣지 말라는 지시)는 문서 노출을 막지만, 지식 조각이 완전히 무시된다고 단정하긴 어렵다.
순위 (Ranking).
SEO는 문서 품질, 링크, 성능 신호로 순위를 매긴다.
AEO는 엔티티, 사실, 관계 기반의 답변 품질을 우선한다.
🛠️ 4. 기획, 개발에서 챙길 점.
모든 페이지에 SEO/AEO를 다 걸 필요는 없다. 먼저 대상 페이지를 선별하는 게 효율적이다.
인앱 웹뷰, 로그인 뒤 화면, 실험용 랜딩은 크롤러를 막을 이유가 더 클 수 있다.
FAQ, 설명형, 사양, 기업/제품 소개 페이지는 AEO 우선 후보다.
국내 서비스면 Google과 Naver를, 글로벌이면 Google과 Bing을 우선 전제로 두면 실무 판단이 단순해진다. (점유율 참고: StatCounter)
SEO 쪽.
콘텐츠 충분성: 주제, 정보량, 중복, 일관성. 메타나 마크업보다 영향이 큰 편이다
시맨틱 구조: H1~H3, 문단, 섹션으로 "무슨 문서인지" 전달
Title / Meta Description: CTR(Click-Through Rate, 노출 대비 클릭 비율)에 직접 영향
SSR / SSG: SSR(Server-Side Rendering, 서버에서 HTML을 만들어 내려주는 방식), SSG(Static Site Generation, 빌드 때 HTML을 미리 만들어 두는 방식). HTML에 실제 텍스트가 있어야 색인이 안정적
Core Web Vitals: LCP, CLS, INP 등 성능 신호
robots / sitemap: 색인 가능 여부의 전제. 내부 링크로 닿기 어려운 중요 URL은 sitemap에 넣는 편이 안전하다
내부 링크: 크롤 효율과 색인률에 직결
외부 링크, 도메인 신뢰: 영향은 크지만 단기 조작이 어렵다. 기대치만 맞추면 된다
AEO 쪽.
JSON-LD (schema.org): 엔티티-속성을 직접 연결. 엔티티 이해와 rich result(검색결과에 별점, FAQ처럼 풍부하게 보이는 형태)에 구조화 단서를 줄 수 있다
Entity-based writing: 개념, 속성, 관계를 문장에서 명확히 쓰는 방식
FAQ (Q → A): LLM이 질문-답 쌍을 그대로 쓰기 쉬움
한 문단 정의: "이게 무엇인지"를 짧게 박아 두는 chunk(LLM이 잘라 저장, 참조하는 의미 단위)
표, 리스트, 비교표: 구조화된 정보는 chunking(의미 단위로 쪼개기)에 유리
문장 명료성: 짧고 사실 중심. 비유와 수식어를 줄이면 추출이 쉽다

Organization 타입 JSON-LD 예시는 대략 이런 형태다.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Studio",
"url": "https://example.com",
"description": "글로벌 게임 퍼블리싱 및 플랫폼 서비스"
}
</script>예전에는 title, description, og(소셜/미리보기용 메타) 정도면 충분했다. 지금은 본문 구조와 함께 schema.org 포맷의 JSON-LD를 같이 넣는 쪽이 맞다.
⚠️ 5. 피해야 할 함정.
잘못된 리다이렉트, 과도한 hop(거쳐 가는 중간 이동), 권역 분기가 크롤 경로를 꼬이게 한다.
글로벌 서비스에서 CloudFront Function 등으로 국가/권역 분기를 걸면, 사람 브라우저와 크롤러의 응답이 달라질 수 있다.
라이브에서 권역 분기 때문에 의도하지 않은 검색결과가 나온 적이 있었다.
robots.txtAllow만으로 안심하면 안 된다. IP, 엣지 정책이 따로 막을 수 있다.크롤러는 기본적으로 정적 문서를 가져온다. User-Agent 분기가 필요하면 CF Function, Lambda@Edge처럼 JS 렌더 이전 단계에서 해야 한다.
📊 6. 실제로 오는 크롤러.
라이브 트래픽을 CloudFront + CloudWatch로 7일간 집계해 보면, 검색봇만 오는 게 아니다.
Googlebot, bingbot뿐 아니라 MJ12bot, GPTBot(OpenAI 쪽 수집 봇) 계열, Yandex, Yeti, AhrefsBot, CCBot 등이 섞인다.
목적이 다르다. 검색 색인봇, 학습 데이터 수집봇, 링크 그래프(누가 누구를 링크했는지 보는 분석) 봇이 한 로그에 같이 찍힌다.
예를 들어 MJ12bot(Majestic)은 본문 색인보다 링크 관계, 도메인 신뢰도 계산 쪽에 가깝다.
하루 수백 건이어도 무시할 수준은 아니다. 검색봇 외 수집봇까지 섞여 들어온다는 신호로 보면 된다.
SEO 대상이 아닌 경로라면 차단을 검토할 수 있다. 초점은 불필요한 색인, 잘못된 노출, SSR, API처럼 요청당 비용이 큰 경로를 봇이 반복 치는 쪽에 둔다.
✅ 7. 체크리스트.
[ ] 이 페이지는 SEO가 필요한가 / AEO가 필요한가
[ ]
robots.txt,sitemap.xml제출(Search Console, Search Advisor)[ ] Title, Meta, og, Heading, 본문 텍스트가 HTML에 존재하고 내용이 충분한가
[ ] 페이지 유형에 맞는 JSON-LD
[ ] FAQ 또는 명확한 Q&A, 한 문단 정의
[ ] 이미지
alt, 내부 링크, Canonical / hreflang(언어, 지역별 대응 페이지 표시)[ ] 권역, 리다이렉트 정책이 크롤러 응답을 왜곡하지 않는지
🔗 8. 참고 자료.
검색 포털 점유율 참고(국내 Google/Naver, 글로벌 Google 중심): StatCounter Search Engine Market Share
댓글