Files
jaengseung-made/app/layout.tsx
gahusb 9be23a5d00 feat: Phase 2 — SEO 인프라 + GA 이벤트 + 콘텐츠 엔진 구축
[SEO 인프라]
- app/sitemap.ts: Next.js App Router 사이트맵 자동 생성 (/sitemap.xml)
- app/robots.ts: 크롤러 허용/차단 규칙 + 사이트맵 경로 등록
- app/layout.tsx: JSON-LD 구조화 데이터 추가 (Person + LocalBusiness + OfferCatalog 스키마)
- GA4 config 업데이트 (send_page_view, custom_map)

[서비스 페이지 SEO 메타태그 강화]
- automation: 'AI 업무 자동화 외주' 키워드 12종 최적화
- prompt: 'ChatGPT 프롬프트 잘 쓰는 법', '이미지 생성 프롬프트' 등 구매형 키워드 추가
- website: '소상공인 홈페이지 제작 외주', '홈페이지 제작 비용' 등 롱테일 키워드 추가

[GA 이벤트 트래킹]
- ContactModal: contact_attempt / generate_lead / contact_error 이벤트 추가
  (전환 추적 핵심 — 어떤 서비스에서 문의가 오는지 GA에서 확인 가능)

[홈페이지 콘텐츠 위젯]
- 'AI 자동화 실전 팁' 블로그 포스트 3종 카드 섹션 추가 (블로그 연동 준비)

[콘텐츠 자산 (CONTENT/ 폴더)]
- brand-story.md: 풀/숏/초단문/유튜브 채널 소개용 4종 브랜드 스토리 원고
- youtube-scripts.md: 유튜브 숏츠 스크립트 10편 (훅→문제→시연→CTA 구조)
- sns-calendar.md: 30일 SNS 포스팅 캘린더 (블로그·스레드·카카오·블라인드 채널별)
- blog-drafts.md: 네이버 블로그 SEO 초안 10편 (키워드·소제목·본문 완성)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-24 11:31:20 +09:00

129 lines
4.6 KiB
TypeScript

import type { Metadata } from "next";
import Script from "next/script";
import "./globals.css";
import DashboardShell from "./components/DashboardShell";
export const metadata: Metadata = {
title: {
default: "쟁승메이드 | 연락 두절 없는 현직 대기업 개발자",
template: "%s | 쟁승메이드",
},
description:
"계약서 먼저, 납기 지키고, 소스코드 100% 인도. 현직 대기업 백엔드 개발자가 운영하는 외주 개발·업무 자동화·RPA 서비스.",
keywords: [
"외주 개발",
"프리랜서 개발자",
"업무 자동화",
"RPA",
"웹사이트 제작",
"로또 번호 추천",
"주식 자동 매매",
"텔레그램 봇",
"엑셀 자동화",
"프롬프트 엔지니어링",
],
authors: [{ name: "박재오", url: "https://jaengseung-made.com" }],
creator: "박재오",
openGraph: {
type: "website",
locale: "ko_KR",
url: "https://jaengseung-made.com",
siteName: "쟁승메이드",
title: "쟁승메이드 | 연락 두절 없는 현직 대기업 개발자",
description:
"계약서 먼저, 납기 지키고, 소스코드 100% 인도. 외주 개발·업무 자동화·RPA 전문.",
images: [
{
url: "https://jaengseung-made.com/og-image.png",
width: 1200,
height: 630,
alt: "쟁승메이드 — 연락 두절 없는 개발자",
},
],
},
twitter: {
card: "summary_large_image",
title: "쟁승메이드 | 연락 두절 없는 현직 대기업 개발자",
description: "계약서 먼저, 납기 지키고, 소스코드 100% 인도.",
},
robots: {
index: true,
follow: true,
googleBot: { index: true, follow: true },
},
};
const jsonLd = {
'@context': 'https://schema.org',
'@graph': [
{
'@type': 'Person',
'@id': 'https://jaengseung-made.com/#person',
name: '박재오',
url: 'https://jaengseung-made.com',
jobTitle: '백엔드 개발자 · AI 자동화 전문가',
worksFor: { '@type': 'Organization', name: '대기업 재직 중' },
email: 'bgg8988@gmail.com',
telephone: '010-3907-1392',
knowsAbout: ['Python', 'Java', 'Spring Boot', 'Next.js', 'RPA', 'AI 자동화', '업무 자동화'],
description: '현직 대기업 백엔드 개발자. 계약서 먼저, 납기 보장, 소스코드 100% 인도 원칙으로 외주 개발·AI 자동화·프롬프트 엔지니어링 서비스를 제공합니다.',
},
{
'@type': 'LocalBusiness',
'@id': 'https://jaengseung-made.com/#business',
name: '쟁승메이드',
url: 'https://jaengseung-made.com',
description: '현직 대기업 개발자가 운영하는 AI 자동화·외주 개발 서비스. 계약서 포함, 납기 패널티, 소스코드 인도.',
email: 'bgg8988@gmail.com',
telephone: '010-3907-1392',
priceRange: '₩₩',
areaServed: '대한민국',
hasOfferCatalog: {
'@type': 'OfferCatalog',
name: '쟁승메이드 서비스 목록',
itemListElement: [
{ '@type': 'Offer', itemOffered: { '@type': 'Service', name: '업무 자동화 개발', url: 'https://jaengseung-made.com/services/automation' } },
{ '@type': 'Offer', itemOffered: { '@type': 'Service', name: '외주 개발', url: 'https://jaengseung-made.com/freelance' } },
{ '@type': 'Offer', itemOffered: { '@type': 'Service', name: '프롬프트 엔지니어링', url: 'https://jaengseung-made.com/services/prompt' } },
{ '@type': 'Offer', itemOffered: { '@type': 'Service', name: '홈페이지 제작', url: 'https://jaengseung-made.com/services/website' } },
],
},
},
],
};
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="ko">
<head>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
<Script
src="https://www.googletagmanager.com/gtag/js?id=G-WG77RNHXRK"
strategy="afterInteractive"
/>
<Script id="google-analytics" strategy="afterInteractive">
{`
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-WG77RNHXRK', {
send_page_view: true,
custom_map: { dimension1: 'service_type' }
});
`}
</Script>
</head>
<body className="antialiased">
<DashboardShell>{children}</DashboardShell>
</body>
</html>
);
}