Skip to content

Commit 03780ef

Browse files
author
jungtaeinn
committed
feat(seo): Open Graph/Twitter 카드 및 구조화 데이터 개선
app/opengraph-image.tsx: OG 이미지 렌더링 개선 및 메타 최적화 app/twitter-image.tsx: Twitter 카드 이미지/메타 구성 정비 components/seo/structured-data.tsx: 스키마(Structured Data) 보완 및 정확도 향상 app/layout.tsx: 전역 메타/레이아웃 정리로 일관성 및 성능 개선 app/posts/layout.tsx: 포스트 레이아웃의 SEO 신호 강화 및 마크업 정리 app/about/page.tsx: 소개 페이지 콘텐츠/마크업 다듬기 docs(SEO_GUIDE.md): 최신 전략 반영 및 가이드 업데이트
1 parent df0b123 commit 03780ef

File tree

7 files changed

+25
-130
lines changed

7 files changed

+25
-130
lines changed

SEO_GUIDE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,3 +359,4 @@ export default function RootLayout({ children }) {
359359
**작성일**: 2025-10-16
360360
**버전**: 1.0.0
361361

362+

app/about/page.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { Github, Mail, Linkedin, Instagram, MapPin, Calendar, FileText, External
1010
* @description SEO 최적화를 위한 About 페이지 메타데이터
1111
*/
1212
export const metadata: Metadata = {
13-
title: 'About - jungtaeinn',
13+
title: 'About - jungtaeinn | Frontend Engineer',
1414
description: 'Frontend Engineer 정태인입니다. React, Next.js, TypeScript를 활용한 프론트엔드 설계/개발을 담당하고 있습니다. Frontend 코어 설계, Monorepo 아키텍처, 성능 최적화, AI 자동화, SEO/GEO에 관심이 많습니다.',
1515
keywords: [
1616
'정태인',
@@ -29,7 +29,7 @@ export const metadata: Metadata = {
2929
'GEO'
3030
],
3131
openGraph: {
32-
title: 'About - 정태인 | Frontend Engineer',
32+
title: 'About - jungtaeinn | Frontend Engineer',
3333
description: 'Frontend Engineer 정태인입니다. React, Next.js, TypeScript를 활용한 프론트엔드 설계/개발을 담당하고 있습니다.',
3434
type: 'profile',
3535
url: 'https://jungtaeinn.github.io/about',
@@ -44,7 +44,7 @@ export const metadata: Metadata = {
4444
},
4545
twitter: {
4646
card: 'summary',
47-
title: 'About - 정태인 | Frontend Engineer',
47+
title: 'About - jungtaeinn | Frontend Engineer',
4848
description: 'Frontend Engineer 정태인입니다. React, Next.js, TypeScript 기반의 Frontend Engineer 입니다.',
4949
images: ['https://jungtaeinn.github.io/images/profile.png'],
5050
},
@@ -59,7 +59,7 @@ export default function AboutPage() {
5959
{/* 구조화된 데이터 추가 */}
6060
<PersonStructuredData
6161
data={{
62-
name: '정태인',
62+
name: 'jungtaeinn',
6363
jobTitle: 'Frontend Engineer',
6464
description: 'AMOREPACIFIC에서 React, Next.js, TypeScript를 활용한 프론트엔드 개발을 담당하고 있습니다. Monorepo 아키텍처 설계, 성능 최적화, AI 자동화에 관심이 많습니다.',
6565
url: 'https://jungtaeinn.github.io',

app/layout.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export const metadata: Metadata = {
4040
siteName: 'jungtaeinn.github.io',
4141
images: [
4242
{
43-
url: '/images/og-image.jpg',
43+
url: '/images/profile.png',
4444
width: 1200,
4545
height: 630,
4646
alt: 'jungtaeinn.github.io',
@@ -51,7 +51,7 @@ export const metadata: Metadata = {
5151
card: 'summary_large_image',
5252
title: 'jungtaeinn.github.io',
5353
description: '개발자 정태인의 블로그입니다. 개발 경험과 학습 내용을 공유합니다.',
54-
images: ['/images/twitter-image.jpg'],
54+
images: ['/images/profile.png'],
5555
creator: '@jungtaeinn',
5656
},
5757
robots: {

app/opengraph-image.tsx

Lines changed: 8 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -20,75 +20,21 @@ export default async function Image() {
2020
(
2121
<div
2222
style={{
23-
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
2423
width: '100%',
2524
height: '100%',
2625
display: 'flex',
2726
alignItems: 'center',
2827
justifyContent: 'center',
29-
flexDirection: 'column',
30-
fontFamily: 'Inter, sans-serif',
28+
backgroundColor: '#ffffff',
3129
}}
3230
>
33-
<div
34-
style={{
35-
display: 'flex',
36-
alignItems: 'center',
37-
justifyContent: 'center',
38-
flexDirection: 'column',
39-
textAlign: 'center',
40-
color: 'white',
41-
}}
42-
>
43-
<div
44-
style={{
45-
width: '200px',
46-
height: '200px',
47-
borderRadius: '50%',
48-
background: 'white',
49-
display: 'flex',
50-
alignItems: 'center',
51-
justifyContent: 'center',
52-
marginBottom: '40px',
53-
boxShadow: '0 20px 40px rgba(0,0,0,0.3)',
54-
}}
55-
>
56-
<div
57-
style={{
58-
width: '180px',
59-
height: '180px',
60-
borderRadius: '50%',
61-
background: 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)',
62-
display: 'flex',
63-
alignItems: 'center',
64-
justifyContent: 'center',
65-
fontSize: '80px',
66-
}}
67-
>
68-
👨‍💻
69-
</div>
70-
</div>
71-
<h1
72-
style={{
73-
fontSize: '72px',
74-
fontWeight: 'bold',
75-
margin: '0 0 20px 0',
76-
textShadow: '0 4px 8px rgba(0,0,0,0.3)',
77-
}}
78-
>
79-
jungtaeinn.github.io
80-
</h1>
81-
<p
82-
style={{
83-
fontSize: '32px',
84-
margin: '0',
85-
opacity: 0.9,
86-
fontWeight: '300',
87-
}}
88-
>
89-
개발자로서의 경험과 학습 내용을 공유합니다
90-
</p>
91-
</div>
31+
<img
32+
src="https://jungtaeinn.github.io/images/profile.png"
33+
width={600}
34+
height={600}
35+
alt="jungtaeinn profile"
36+
style={{ objectFit: 'contain', borderRadius: 24 }}
37+
/>
9238
</div>
9339
),
9440
{

app/posts/layout.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,4 @@ export default function PostsLayout({
4343
return <>{children}</>;
4444
}
4545

46+

app/twitter-image.tsx

Lines changed: 8 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -20,75 +20,21 @@ export default async function Image() {
2020
(
2121
<div
2222
style={{
23-
background: 'linear-gradient(135deg, #1e3c72 0%, #2a5298 100%)',
2423
width: '100%',
2524
height: '100%',
2625
display: 'flex',
2726
alignItems: 'center',
2827
justifyContent: 'center',
29-
flexDirection: 'column',
30-
fontFamily: 'Inter, sans-serif',
28+
backgroundColor: '#ffffff',
3129
}}
3230
>
33-
<div
34-
style={{
35-
display: 'flex',
36-
alignItems: 'center',
37-
justifyContent: 'center',
38-
flexDirection: 'column',
39-
textAlign: 'center',
40-
color: 'white',
41-
}}
42-
>
43-
<div
44-
style={{
45-
width: '150px',
46-
height: '150px',
47-
borderRadius: '50%',
48-
background: 'white',
49-
display: 'flex',
50-
alignItems: 'center',
51-
justifyContent: 'center',
52-
marginBottom: '30px',
53-
boxShadow: '0 15px 30px rgba(0,0,0,0.3)',
54-
}}
55-
>
56-
<div
57-
style={{
58-
width: '130px',
59-
height: '130px',
60-
borderRadius: '50%',
61-
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
62-
display: 'flex',
63-
alignItems: 'center',
64-
justifyContent: 'center',
65-
fontSize: '60px',
66-
}}
67-
>
68-
👨‍💻
69-
</div>
70-
</div>
71-
<h1
72-
style={{
73-
fontSize: '56px',
74-
fontWeight: 'bold',
75-
margin: '0 0 15px 0',
76-
textShadow: '0 3px 6px rgba(0,0,0,0.3)',
77-
}}
78-
>
79-
jungtaeinn.github.io
80-
</h1>
81-
<p
82-
style={{
83-
fontSize: '24px',
84-
margin: '0',
85-
opacity: 0.9,
86-
fontWeight: '300',
87-
}}
88-
>
89-
개발자로서의 경험과 학습 내용을 공유합니다
90-
</p>
91-
</div>
31+
<img
32+
src="https://jungtaeinn.github.io/images/profile.png"
33+
width={600}
34+
height={600}
35+
alt="jungtaeinn profile"
36+
style={{ objectFit: 'contain', borderRadius: 24 }}
37+
/>
9238
</div>
9339
),
9440
{

components/seo/structured-data.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,3 +191,4 @@ export function BreadcrumbStructuredData({ items }: { items: { name: string; url
191191
);
192192
}
193193

194+

0 commit comments

Comments
 (0)