Files
2nd/10_Wiki/Topics/AI_and_ML/SEO.md
T
koriweb d8a80f6272 chore(wiki): dangling 링크 canonical 정규화 (768파일/1200건)
이름만 다른(표기 변형) [[위키링크]]를 대상 문서의 canonical 제목으로 치환해
끊겼던 1,200개 링크를 연결. 제목/파일명 정규화 일치만 적용하고 별칭 매칭은
과병합 위험으로 제외(애매성 가드). 원본은 _link_reconcile_backup/ 에 백업.
도구: Datacollect/scripts/link_reconcile_apply.mjs

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 12:24:15 +09:00

6.6 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-seo SEO 10_Wiki/Topics verified self
Search Engine Optimization
Organic Search
none A 0.9 applied
seo
web
core-web-vitals
ai-overviews
technical-seo
2026-05-10 pending
language framework
HTML Next.js 15

SEO

매 한 줄

"매 SEO 는 search engine 의 'helpful content' signal 에 align — 매 2026 은 Google AI Overviews + Perplexity + ChatGPT search 의 multi-engine 시대". 매 origin 은 1990s keyword stuffing; 매 modern state 는 E-E-A-T, Core Web Vitals, structured data, 그리고 매 GEO (Generative Engine Optimization) — LLM citation 을 target.

매 핵심

매 3 layer

  • Technical SEO: crawlability, indexability, performance (Core Web Vitals: LCP, INP, CLS).
  • Content SEO: E-E-A-T (Experience, Expertise, Authoritativeness, Trust), search intent match.
  • Off-page: backlinks, brand mentions, citation in LLM training data.

매 2026 의 큰 변화

  • AI Overviews (Google SGE): 매 SERP top 의 LLM-generated summary — 매 "position 0".
  • GEO (Generative Engine Optimization): 매 ChatGPT/Perplexity/Claude citation 을 target.
  • Core Web Vitals: INP (Interaction to Next Paint) ≤ 200ms, LCP ≤ 2.5s, CLS ≤ 0.1.
  • Helpful content update: 매 thin/AI-spam content demote.

매 응용

  1. Organic traffic acquisition.
  2. LLM citation (brand mention in ChatGPT answers).
  3. Local SEO (Google Business Profile).
  4. E-commerce product discovery.

💻 패턴

매 Next.js 15 metadata API (App Router)

// app/blog/[slug]/page.tsx
import type { Metadata } from "next";

export async function generateMetadata({ params }): Promise<Metadata> {
  const post = await getPost(params.slug);
  return {
    title: `${post.title} | Acme Blog`,
    description: post.excerpt.slice(0, 160),
    alternates: { canonical: `https://acme.com/blog/${params.slug}` },
    openGraph: {
      title: post.title,
      description: post.excerpt,
      images: [post.coverImage],
      type: "article",
      publishedTime: post.publishedAt,
      authors: [post.author.name],
    },
    twitter: { card: "summary_large_image" },
  };
}

매 JSON-LD structured data (Article)

export default function BlogPost({ post }) {
  const jsonLd = {
    "@context": "https://schema.org",
    "@type": "Article",
    headline: post.title,
    image: [post.coverImage],
    datePublished: post.publishedAt,
    dateModified: post.updatedAt,
    author: { "@type": "Person", name: post.author.name, url: post.author.url },
    publisher: {
      "@type": "Organization",
      name: "Acme",
      logo: { "@type": "ImageObject", url: "https://acme.com/logo.png" },
    },
  };
  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
      />
      <article>{post.content}</article>
    </>
  );
}

매 sitemap.xml (Next.js 15 dynamic)

// app/sitemap.ts
import { MetadataRoute } from "next";

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const posts = await getAllPosts();
  return [
    { url: "https://acme.com", lastModified: new Date(), priority: 1.0 },
    ...posts.map(p => ({
      url: `https://acme.com/blog/${p.slug}`,
      lastModified: p.updatedAt,
      changeFrequency: "monthly" as const,
      priority: 0.7,
    })),
  ];
}

매 robots.txt (매 LLM crawler 분기)

# robots.txt
User-agent: *
Allow: /
Sitemap: https://acme.com/sitemap.xml

# 매 OpenAI 의 training crawler block (매 GPTBot)
User-agent: GPTBot
Disallow: /

# 매 ChatGPT search-time citation crawler (매 OAI-SearchBot) → allow
User-agent: OAI-SearchBot
Allow: /

# 매 Anthropic ClaudeBot (training) — 매 block 선택지
User-agent: ClaudeBot
Disallow: /

# 매 Anthropic 의 search-time citation (claude-web) → 매 allow
User-agent: claude-web
Allow: /

매 Core Web Vitals 측정 (web-vitals v4)

import { onLCP, onINP, onCLS } from "web-vitals";

onLCP(metric => sendToAnalytics(metric));   // 매 ≤ 2.5s 매 good
onINP(metric => sendToAnalytics(metric));   // 매 ≤ 200ms 매 good
onCLS(metric => sendToAnalytics(metric));   // 매 ≤ 0.1 매 good

function sendToAnalytics({ name, value, id }) {
  navigator.sendBeacon("/api/vitals", JSON.stringify({ name, value, id }));
}

매 GEO — LLM citation friendly content

<!-- 매 LLM 이 cite 하기 쉬운 형식: -->

## What is X?
X is a Y that does Z.  <!-- 매 첫 sentence definitional -->

## Key facts about X
- Fact 1 with concrete number (e.g., "47% of...").
- Fact 2 with year (e.g., "Released in 2024 by...").
- Fact 3 with named source.

## How X works
1. Step 1
2. Step 2
3. Step 3

<!-- 매 LLM citation 은 declarative, dated, sourced content 선호 -->

매 hreflang (multi-region)

<link rel="alternate" hreflang="en-us" href="https://acme.com/en/page" />
<link rel="alternate" hreflang="ko-kr" href="https://acme.com/ko/page" />
<link rel="alternate" hreflang="x-default" href="https://acme.com/page" />

매 결정 기준

상황 Approach
매 informational query long-form pillar content + JSON-LD Article
매 transactional query Product schema + clear CTA
매 local LocalBusiness schema + Google Business Profile
매 LLM citation 노림 declarative facts + dates + sources
매 INP 느림 scheduler.yield + break long tasks

기본값: Next.js 15 App Router + metadata API + JSON-LD + INP-first perf.

🔗 Graph

🤖 LLM 활용

언제: 매 content brief 생성 (search intent → outline). 매 meta description draft. 매 structured data scaffolding. 언제 X: 매 entire article 의 mass generation — 매 Helpful Content Update demote 위험.

안티패턴

  • Keyword stuffing: 매 2026 에 still 하는 사람 → demote.
  • AI-spam content: 매 LLM dump w/o expertise → Helpful Content penalty.
  • Doorway pages: 매 thin variation per geo/keyword.
  • Cloaking: 매 bot 과 user 에게 다른 content → manual action.
  • Ignoring INP: 매 long task 가 SERP 영향 (2024 부터).

🧪 검증 / 중복

  • Verified (Google Search Central docs 2026, web.dev Core Web Vitals, Schema.org).
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — AI Overviews / GEO / INP / Next.js 15 metadata