# seo-audit > 블로그의 SEO 인프라(메타 태그, canonical, sitemap, robots.txt 등)를 감사합니다. - Author: so098 - Repository: so098/ari-dev - Version: 20260206224714 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/so098/ari-dev - Web: https://mule.run/skillshub/@@so098/ari-dev~seo-audit:20260206224714 --- --- name: seo-audit description: 블로그의 SEO 인프라(메타 태그, canonical, sitemap, robots.txt 등)를 감사합니다. allowed-tools: Read, Glob, Grep, Bash(npm run build *) disable-model-invocation: true --- # SEO 인프라 감사 블로그의 SEO 인프라/컴포넌트 레벨의 건전성을 검사한다. 콘텐츠(frontmatter) 최적화는 `seo-optimize` 스킬이 담당하므로, 이 스킬은 **인프라** 수준의 문제만 감지한다. 수정은 하지 않고 보고만 한다. 수정이 필요하면 사용자에게 안내한다. ## 감사 항목 아래 8개 항목을 순서대로 검사한다. ### 1. Canonical URL 검사 - `src/components/PostHead.astro`와 `src/components/PageHead.astro`를 읽는다. - `` 태그의 `href` 값이 `Astro.url`을 사용하는지 확인한다. - `SITE.href`를 직접 하드코딩하여 canonical URL을 조합하고 있으면 **Fail**로 판정한다. - 예시 (Fail): `href={\`${SITE.href}/blog/...\`}` - 예시 (Pass): `href={Astro.url}` ### 2. OG 메타 태그 완전성 **PostHead.astro** 에서 아래 필수 태그 존재 여부를 확인한다: - OG 태그: `og:title`, `og:description`, `og:image`, `og:url`, `og:type`, `og:locale`, `og:site_name` - Article 태그: `article:published_time`, `article:author` - 누락된 태그가 있으면 **Warn**으로 보고한다. **PageHead.astro** 에서 아래 필수 태그 존재 여부를 확인한다: - OG 태그: `og:title`, `og:description`, `og:image`, `og:url`, `og:type`, `og:locale`, `og:site_name` - 누락된 태그가 있으면 **Warn**으로 보고한다. > Twitter 메타 태그는 의도적으로 제거되었으므로 검사하지 않는다. ### 3. 사이트 설정 일관성 - `src/consts.ts`에서 `SITE.href` 값을 읽는다. - `astro.config.ts`에서 `site` 값을 읽는다. - 두 값이 일치하지 않으면 **Fail**로 판정한다 (trailing slash 차이는 무시). ### 4. robots.txt 검증 - `src/pages/robots.txt.ts` 파일이 존재하는지 확인한다. 없으면 **Fail**. - `npm run build`를 실행한 뒤 `dist/robots.txt` 파일을 읽어 `Sitemap:` URL이 포함되어 있는지 확인한다. - 포함되지 않으면 **Warn**. ### 5. Sitemap 검증 - `astro.config.ts`를 읽어 `@astrojs/sitemap` 통합이 설정되어 있는지 확인한다. - `sitemap()` 호출이 `integrations` 배열에 없으면 **Fail**. - `src/components/Head.astro`에 `` 태그가 존재하는지 확인한다. - 없으면 **Warn**. ### 6. RSS 피드 검증 - `src/pages/rss.xml.ts` 파일이 존재하는지 확인한다. 없으면 **Fail**. - `src/components/Head.astro`에 `` 태그가 존재하는지 확인한다. - 없으면 **Warn**. ### 7. 매니페스트 검사 - `public/site.webmanifest`를 읽는다. - `src/consts.ts`에서 `SITE.title` 값을 읽는다. - `name`과 `short_name` 필드가 `SITE.title` 값과 일치하는지 확인한다. - 일치하지 않으면 **Warn** (브랜딩 불일치). ### 8. JSON-LD 구조화된 데이터 검증 - `src/components/PostHead.astro`를 읽어 `BlogPosting` 타입의 JSON-LD (`