npx skillsauth add excatt/superclaude-plusplus seoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
SEO 최적화 가이드를 실행합니다.
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>페이지 제목 | 사이트명</title>
<meta name="description" content="155자 이내의 페이지 설명">
<link rel="canonical" href="https://example.com/page">
</head>
<meta property="og:title" content="페이지 제목">
<meta property="og:description" content="페이지 설명">
<meta property="og:image" content="https://example.com/image.jpg">
<meta property="og:url" content="https://example.com/page">
<meta property="og:type" content="website">
<meta property="og:site_name" content="사이트명">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="페이지 제목">
<meta name="twitter:description" content="페이지 설명">
<meta name="twitter:image" content="https://example.com/image.jpg">
<meta name="twitter:site" content="@username">
// app/page.tsx
import { Metadata } from 'next';
export const metadata: Metadata = {
title: '홈 | 사이트명',
description: '사이트 설명',
openGraph: {
title: '홈',
description: '사이트 설명',
images: ['/og-image.jpg'],
},
};
// 동적 메타데이터
export async function generateMetadata({ params }): Promise<Metadata> {
const product = await getProduct(params.id);
return {
title: product.name,
description: product.description,
openGraph: {
images: [product.image],
},
};
}
// app/layout.tsx
export const metadata: Metadata = {
metadataBase: new URL('https://example.com'),
title: {
default: '사이트명',
template: '%s | 사이트명',
},
description: '기본 설명',
robots: {
index: true,
follow: true,
},
alternates: {
canonical: '/',
languages: {
'ko-KR': '/ko',
'en-US': '/en',
},
},
};
// components/JsonLd.tsx
export function JsonLd({ data }) {
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(data) }}
/>
);
}
// 사용
<JsonLd data={{
'@context': 'https://schema.org',
'@type': 'Product',
name: '상품명',
description: '상품 설명',
image: 'https://example.com/image.jpg',
offers: {
'@type': 'Offer',
price: '29000',
priceCurrency: 'KRW',
availability: 'https://schema.org/InStock',
},
}} />
// 조직
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "회사명",
"url": "https://example.com",
"logo": "https://example.com/logo.png"
}
// 기사
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "기사 제목",
"author": { "@type": "Person", "name": "작성자" },
"datePublished": "2024-01-15"
}
// FAQ
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "질문?",
"acceptedAnswer": {
"@type": "Answer",
"text": "답변"
}
}]
}
// 빵부스러기
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "홈",
"item": "https://example.com"
}]
}
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2024-01-15</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/about</loc>
<lastmod>2024-01-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
// app/sitemap.ts
import { MetadataRoute } from 'next';
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const products = await getProducts();
const productUrls = products.map((product) => ({
url: `https://example.com/products/${product.slug}`,
lastModified: product.updatedAt,
changeFrequency: 'weekly' as const,
priority: 0.8,
}));
return [
{
url: 'https://example.com',
lastModified: new Date(),
changeFrequency: 'daily',
priority: 1,
},
...productUrls,
];
}
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/
Disallow: /private/
Sitemap: https://example.com/sitemap.xml
// app/robots.ts (Next.js)
import { MetadataRoute } from 'next';
export default function robots(): MetadataRoute.Robots {
return {
rules: {
userAgent: '*',
allow: '/',
disallow: ['/admin/', '/api/', '/private/'],
},
sitemap: 'https://example.com/sitemap.xml',
};
}
<!-- 중요 이미지 미리 로드 -->
<link rel="preload" as="image" href="/hero.jpg">
<!-- 이미지 최적화 -->
<img
src="/hero.jpg"
srcset="/hero-400.jpg 400w, /hero-800.jpg 800w"
sizes="(max-width: 600px) 400px, 800px"
loading="eager"
fetchpriority="high"
>
/* 이미지에 크기 지정 */
img {
width: 100%;
height: auto;
aspect-ratio: 16 / 9;
}
/* 폰트 로딩 최적화 */
@font-face {
font-family: 'MyFont';
font-display: swap;
}
// 긴 작업 분할
function processLargeArray(items) {
const chunk = items.splice(0, 100);
processChunk(chunk);
if (items.length > 0) {
requestIdleCallback(() => processLargeArray(items));
}
}
## SEO Optimization
### Meta Tags
```html
<head>...</head>
{ "@context": "https://schema.org", ... }
---
요청에 맞는 SEO 최적화를 적용하세요.
testing
사용자 계획을 기존 도메인 모델에 대해 stress-test하는 인터뷰 세션. 용어를 날카롭게 다듬고, 결정이 굳어질 때마다 CONTEXT.md(도메인 어휘 사전)와 ADR을 인라인으로 갱신한다. 새 기능 요구사항 탐색은 `/brainstorm`을, 기존 도메인 모델·용어와의 정합성 점검은 이 스킬을 사용한다.
development
# Excel (XLSX) Spreadsheet Skill Claude Code supports comprehensive spreadsheet operations through the **xlsx** skill, enabling creation, editing, and analysis of Excel files (.xlsx, .xlsm, .csv, .tsv). ## Trigger - When user needs Excel spreadsheet creation or editing - Financial modeling or data analysis required - Spreadsheet formulas and calculations needed - Data import from CSV/TSV files ## Core Capabilities **Primary functions include:** - Creating new spreadsheets with formulas and f
tools
Generate structured implementation workflows from PRDs and feature requirements
development
실시간 통신 설계 가이드를 실행합니다.