用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/aksel26/hmkim-blog-keystatic --skill seo-optimization命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| 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 (
);
}
// 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: },
{ : , : (), : },
...postEntries,
];
}