원클릭으로
seo-optimization
블로그 SEO(검색 엔진 최적화) 전문 스킬. 메타데이터, sitemap, robots.txt, 구조화된 데이터, 캐노니컬 URL 등 기술적 SEO 구현을 담당합니다.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
블로그 SEO(검색 엔진 최적화) 전문 스킬. 메타데이터, sitemap, robots.txt, 구조화된 데이터, 캐노니컬 URL 등 기술적 SEO 구현을 담당합니다.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
변경된 코드를 분석하여 관심사별로 그룹화하고, 각 그룹을 별도로 git add 하여 단계별 커밋을 수행합니다.
Git 커밋 내역을 분석하여 Obsidian 형식의 개발 기록 마크다운 자동 생성. "오늘 커밋 정리", "개발 기록 작성", "커밋 분석", "작업 로그" 요청 시 트리거. 커밋 메시지, 변경 파일, diff를 분석하여 frontmatter 메타데이터와 기술 개념 설명이 포함된 체계적인 문서 생성 후 Obsidian MCP로 저장.
AEO(Answer Engine Optimization) 및 GEO(Generative Engine Optimization) 최적화 스킬. AI 검색 엔진과 생성형 AI가 콘텐츠를 이해하고 인용할 수 있도록 최적화합니다.
Schema.org 구조화된 데이터(JSON-LD) 구현 스킬. Article, FAQPage, BreadcrumbList, HowTo 등 다양한 스키마를 블로그에 적용합니다.
웹 성능 최적화 스킬. Core Web Vitals(LCP, FID, CLS, INP) 개선, 이미지/폰트 최적화, 코드 스플리팅, 캐싱 전략을 담당합니다.
SOC 직업 분류 기준
| name | seo-optimization |
| description | 블로그 SEO(검색 엔진 최적화) 전문 스킬. 메타데이터, sitemap, robots.txt, 구조화된 데이터, 캐노니컬 URL 등 기술적 SEO 구현을 담당합니다. |
| triggers | ["SEO 최적화해줘","메타데이터 추가해줘","sitemap 생성해줘","검색 최적화"] |
이 스킬은 Next.js 블로그 앱의 SEO(Search Engine Optimization)를 담당합니다. 검색 엔진이 콘텐츠를 효과적으로 크롤링하고 인덱싱할 수 있도록 기술적 최적화를 수행합니다.
// app/[category]/[slug]/page.tsx
export async function generateMetadata({ params }): Promise<Metadata> {
const post = await getPost(params.slug);
return {
title: post.title,
description: post.summary,
keywords: post.keywords,
alternates: {
canonical: `https://yourdomain.com/${params.category}/${params.slug}`,
},
openGraph: {
type: 'article',
title: post.title,
description: post.summary,
publishedTime: post.createdAt,
modifiedTime: post.updatedAt,
authors: ['작성자명'],
tags: post.tags,
},
twitter: {
card: 'summary_large_image',
title: post.title,
description: post.summary,
},
};
}
// components/StructuredData.tsx
export function ArticleSchema({ post }: { post: Post }) {
const schema = {
'@context': 'https://schema.org',
'@type': 'BlogPosting',
headline: post.title,
description: post.summary,
datePublished: post.createdAt,
dateModified: post.updatedAt,
author: {
'@type': 'Person',
name: '작성자명',
url: 'https://yourdomain.com/me',
},
publisher: {
'@type': 'Organization',
name: 'HM Blog',
logo: {
'@type': 'ImageObject',
url: 'https://yourdomain.com/logo.png',
},
},
mainEntityOfPage: {
'@type': 'WebPage',
'@id': `https://yourdomain.com/${post.category}/${post.slug}`,
},
keywords: post.keywords?.join(', '),
image: post.thumbnailImage,
};
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
);
}
// app/sitemap.ts
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const posts = await getAllPosts();
const postEntries = posts.map((post) => ({
url: `https://yourdomain.com/${post.category}/${post.slug}`,
lastModified: new Date(post.updatedAt || post.createdAt),
changeFrequency: 'weekly' as const,
priority: 0.8,
}));
return [
{ url: 'https://yourdomain.com', lastModified: new Date(), priority: 1 },
{ url: 'https://yourdomain.com/tech', lastModified: new Date(), priority: 0.9 },
{ url: 'https://yourdomain.com/life', lastModified: new Date(), priority: 0.9 },
{ url: 'https://yourdomain.com/me', lastModified: new Date(), priority: 0.7 },
...postEntries,
];
}