GAME SEO / DISCOVER & RANK
게임마다 태그와 키워드를 등록하면 페이지가 스스로 SEO됩니다.
KOISCORE는 게임 등록 카탈로그의 seo_json을 읽어 베타 URL, 랜딩, sitemap, JSON-LD에 title·description·keywords를 자동 반영합니다. 장르만으로는 부족한 롱테일 검색어는 개발자가 직접 넣습니다.WHY
왜 카탈로그 SEO인가
KOISCORE에 올린 게임마다 검색 의도가 다릅니다. 같은 “퍼즐” 장르라도 어떤 게임은 “무료 웹 오목”, 어떤 게임은 “브라우저 당구 3쿠션”으로 찾히기를 원합니다. 예전 방식처럼 게임마다 meta HTML 파일을 저장소에 두면, 베타·라이브·locale URL이 늘어날수록 수정 누락이 생기고 Google Search Console에서 soft 404·중복 설명이 쌓입니다. 그래서 KOISCORE는 등록 카탈로그의 seo_json 한 곳을 읽어 title·description·keywords·JSON-LD·sitemap을 자동 생성합니다.
genres는 분류·필터·Discover 태그용이고, keywords는 실제 검색어 롱테일용입니다. 장르만 넣고 keywords를 비워 두면 “casual puzzle” 수준의 generic meta만 나가 AdSense·검색 모두에서 thin content로 보일 수 있습니다. 반대로 keywords를 과하게 넣되 description 본문이 비어 있으면 키워드 stuffing으로 해석될 수 있으니, 아래 SCHEMA·TIPS 섹션의 길이 가이드를 함께 지키세요.
SCHEMA
seo_json 구조
게임별 SEO를 등록하려면 개발자 콘솔 또는 API의 set_seo 액션으로 locale별 객체를 저장합니다. 각 locale 블록은 최소 description 또는 keywords 중 하나는 채우는 것이 좋고, title을 비워 두면 “게임명 + 무료 웹게임 | KOISCORE” 템플릿이 적용됩니다. tags는 schema.org genre와 Discover 필터 slug로 쓰이므로 소문자·하이픈 형태를 권장합니다. 아래 JSON은 당구 게임 예시이며, 실제 검색어를 반영한 문장형 description을 함께 넣는 것이 중요합니다.
{
"ko": {
"title": "웹 당구게임 - 4구·3쿠션 | KOISCORE",
"description": "브라우저에서 즐기는 무료 웹 당구...",
"keywords": ["웹 당구게임", "온라인 당구", "무료 당구게임"],
"tags": ["sports", "billiards", "3-cushion"]
},
"ja": { "keywords": ["ウェブビリヤード"] },
"en": { "keywords": ["web billiards game"] }
}contracts/platform/game-seo.v1.json · 미입력 locale은 title+genre 기반 템플릿으로 자동 생성됩니다.REGISTER
등록 방법
SEO 메타데이터를 바꾸는 방법은 세 가지입니다. (1) 게임 등록 콘솔 UI의 SEO 패널, (2) REST PATCH /api/developers/games/{gameId}, (3) MCP update_game_draft에 seo 필드 포함. 콘솔에서 저장하면 즉시 카탈로그 DB에 반영되고, 다음 SSR/build 시점에 meta·JSON-LD·가이드 페이지 본문에 사용됩니다. 베타 URL은 noindex이지만 UX용 CatalogGameSeoContent에도 같은 copy가 들어가므로, 플레이어가 보는 설명과 검색용 description을 일치시키면 좋습니다.
- 게임 등록 콘솔에서 초안 등록 시 SEO 필드를 입력하거나, 게임 카드의 SEO 태그·키워드 패널에서 수정합니다.
- 베타가 켜져 있으면
/beta/game/{gameId}/{locale}meta·JSON-LD에 즉시 반영됩니다. - 라이브 전환 후 랜딩·sitemap에도 같은 카탈로그 데이터가 사용됩니다.
PATCH /api/developers/games/{gameId}
{
"action": "set_seo",
"seo": {
"ko": {
"description": "브라우저에서 즐기는 무료 퍼즐 게임...",
"keywords": ["무료 웹게임", "브라우저 퍼즐"],
"tags": ["puzzle", "brain"]
}
}
}MCP: update_game_draft에 seo 객체를 넣습니다.
AUTO
플랫폼이 자동으로 붙이는 것
- locale별 canonical·hreflang alternates
- Open Graph / Twitter card (thumbnail 또는 포털 OG)
- schema.org VideoGame JSON-LD (
keywords,genre=tags) - sitemap (
listEnabledBetaGames+ 랜딩 경로) - 장르 라벨·KOISCORE·무료 웹게임 등 플랫폼 기본 키워드 merge
TIPS
작성 가이드
- keywords: 실제 검색어 5~15개 (게임명, 장르, 플레이 방식, “무료/온라인/브라우저”)
- tags: 소문자 slug — Discover 필터·schema genre용
- description: 120~160자, 첫 문장에 핵심 키워드
- editorial: 가이드 페이지에 붙는 장문 역사·문화 (문단 배열 또는 빈 줄로 구분). 비우면 게임·장르 템플릿 자동 생성
- title: 비워두면 “게임명 + 무료 웹게임 | KOISCORE” 템플릿 사용
INDEX POLICY
AdSense · Search Console 색인 정책
Google AdSense·Search Console 심사에서 “가치 없는 콘텐츠”로 분류되는 대표 패턴은 iframe만 있고 사람이 읽을 본문이 없는 URL입니다. KOISCORE는 베타 플레이 URL·외부 Discover 집계·결제 전용 페이지를 noindex하고 sitemap에서 제외합니다. 대신 개발자 문서, 게임 가이드(/games/guide/{gameId}/{locale}), 포털 footer 편집 영역, 장기 FAQ가 있는 랜딩을 index 대상으로 두었습니다. 아래 표는 자주 헷갈리는 URL의 색인 여부 요약입니다. 전체 판단표는 docs/platform/search-index-policy.md를 참고하세요.
| URL | 색인 | 비고 |
|---|---|---|
/beta/game/* | noindex | 베타 테스트 — CatalogGameSeoContent 본문은 UX용 |
/games/discover/* | noindex | 외부 API 집계 |
/portal/{locale} | index | footer 편집 콘텐츠 |
/games/guide/{gameId}/{locale} | index | 게임별 장문 가이드·FAQ·머천트 안내 |
/developers/docs | index | 브릿지·API 계약 (코드+설명 병행) |
/developers/release | index | HTTPS 배포·베타 URL·검수·live 전환 가이드 |
/developers/sandbox | index | 로컬 터널·샌드박스 API·멀티 계정 QA |
/{locale}/games/billiards | index | 가이드·FAQ 포함 (AdSense 양호 사례) |