pSEO Wizard 매뉴얼 🧙♂️
pSEO Wizard 완전 기술 가이드에 오신 것을 환영합니다. 이 문서는 1,000개 이상의 페이지를 안전하게 출시할 수 있도록 수 주간의 아키텍처 결정을 단일 워크플로로 압축합니다.
💡 Quick Tip: 사이드바 내비게이션을 사용하여 섹션 간 이동하거나 전체 가이드를 스크롤하세요.
🚀 파트 1: 핵심 워크플로
코드에 뛰어들기 전에 "팩토리"가 어떻게 작동하는지 이해하세요:
1. 프로젝트 구성
대상 언어를 신중하게 선택하세요. 이것은 JSON 출력에서 locale 플래그를 설정합니다.
2. 패턴 로직
{City} 또는 {Service}와 같은 변수를 사용하세요. 더 나은 SEO를 위해 패턴을 짧게 유지하세요.
3. 데이터 생성
우리는 데카르트 곱 로직을 사용합니다. 10개 서비스 × 10개 도시 = 100 페이지.
🛡️ 4. "안전" 경고
4단계에서 /blog 아래에 게시하라고 경고합니다. 루트 도메인에 프로그래매틱 콘텐츠를 게시하는 것은 Google에서 색인 해제되는 빠른 방법입니다.
👨💻 파트 2: 개발자 통합
골드 스탠다드
📘 Note: 다음 가이드는 내보낸 파일을 처리하기 위한 Next.js 애플리케이션의 최적 아키텍처를 권장합니다.
"Raw HTML" 전략
pSEO Wizard가 완전하고 스타일이 적용된 HTML 페이지를 생성하므로 표준 React Layout에서 래핑하면 스타일 충돌이 발생합니다.
✅ 해결책: 원시 HTML을 제공하기 위해 Next.js Route Handler를 사용합니다.
// src/app/[locale]/blog/[slug]/route.ts
export async function GET(request, { params }) {
const post = getPostBySlug(params.slug);
if (post.locale !== params.locale) return 404;
const finalHtml = `<head><script src="https://cdn.tailwindcss.com"></script></head>
<body>${post.body_html}</body>`;
return new Response(finalHtml, { headers: { 'Content-Type': 'text/html' } });
}JSON Drop-in 시스템
데이터베이스 마이그레이션을 잊으세요. 파일 시스템 집계를 기반으로 시스템을 구축했습니다.
- 📁디렉토리:
src/app/data/posts-json/ - 🔄워크플로: 내보낸 JSON 파일을 여기에 "드래그 앤 드롭"하면 됩니다.
- ✨매직: blog-posts.ts 집계기가 자동으로 모든 파일을 읽고 즉시 게시합니다.
동적 "스마트" 사이트맵
sitemap.ts는 로케일을 인식합니다. JSON 파일을 스캔하고 로케일별 URL을 생성합니다.
이것은 Google의 "중복 콘텐츠" 페널티를 방지합니다.
🏛️ 파트 3: 기술 아키텍처
왜 Cryptomus인가?
특정 전략적 이유로 Stripe 대신 Cryptomus를 선택했습니다:
🌍 글로벌 도달
전 세계 어디서나 암호화폐 결제를 수락합니다 (지역 은행 제한을 해결하고 글로벌 액세스를 가능하게 함).
⚡ 즉시 잠금 해제
Webhook 시스템은 거래 확인 즉시 "내보내기" 버튼을 잠금 해제합니다.
안티스팸 아키텍처
우리 시스템은 도메인 권위를 보호하도록 설계되었습니다:
- 모든 프로그래매틱 콘텐츠는 /blog 하위 디렉토리 아래에 있음
- 각 페이지에는 고유한 AI 생성 콘텐츠가 있음
- 내부 링크는 SEO 모범 사례를 따름
- 다국어 콘텐츠에 대한 올바른 lang 및 dir 속성
🚑 파트 4: 문제 해결
일반적인 문제와 해결책:
❌ 흰 화면 / 스타일 없는 텍스트
원인: Tailwind CDN이 차단됨.
해결: next.config.js의 CSP 헤더를 확인하세요.
⚠️ 깨진 내부 링크
원인: AI 생성 아티팩트.
해결: route.ts에 "Smart Regex" 클리너가 있는지 확인하세요.
🔍 생성된 게시물 404
원인: Slug 불일치.
해결: decodeURIComponent(slug)를 사용하세요.
✅ CTA 버튼이 /blog로 이동
원인: Regex가 모든 링크를 대체함.
해결: 홈페이지 링크와 블로그 링크에 대해 별도 패턴을 사용하세요.
pSEO Wizard 팀이 ❤️으로 제작
마지막 업데이트: 2024년 12월