Documentation

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월

Documentation | pSEO Wizard