一键导入
seo-review
ページ 1 枚または PR 全体を SEO 観点でレビューするスキル。title / description の長さ、見出し階層、内部リンク、JSON-LD、画像 alt を一通り確認する。「この記事を SEO レビューして」「PR の SEO チェックして」と言われたときに使用する。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
ページ 1 枚または PR 全体を SEO 観点でレビューするスキル。title / description の長さ、見出し階層、内部リンク、JSON-LD、画像 alt を一通り確認する。「この記事を SEO レビューして」「PR の SEO チェックして」と言われたときに使用する。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
サービス名と概要を受け取って `src/content/services/` 配下にサービスページを追加するスキル。「○○というサービスページを追加して」「新サービスのページを作って」と言われたときに使用する。
短いニュース 1 件を `src/content/news/` に追加するスキル。「お知らせを 1 つ追加して」「○○のニュースを書いて」と言われたときに使用する。URL を伴う「ブログ記事化」は write-blog スキルを使うこと。
受け取った URL を読み込み、指定された深掘りポイントに沿ってブログ記事化し、`src/content/news/` 配下に Markdown ファイルを追加して PR を作成するスキル。「URL を渡すからブログ記事化して」「この記事をベースに ○○ を深掘りして」と言われたときに使用する。
| name | seo-review |
| description | ページ 1 枚または PR 全体を SEO 観点でレビューするスキル。title / description の長さ、見出し階層、内部リンク、JSON-LD、画像 alt を一通り確認する。「この記事を SEO レビューして」「PR の SEO チェックして」と言われたときに使用する。 |
| allowed-tools | Read, Bash, Grep, Glob |
ページ 1 枚(.md または .astro)または PR 全体に対し、SEO の基本観点でレビューする。
目的は 検索流入を取りこぼさない最低ラインを満たす こと。完璧を目指すのではなく、頻発する漏れを潰す。
ユーザーから以下のいずれかを受け取る:
src/content/news/launch.md、src/pages/about.astro123(# プレフィックス無しの数字で受け取る。シェルで # 以降が comment 化される事故を避ける。その PR で変更されたページすべてが対象)git diff develop...HEAD で変更ファイル一覧を抽出してレビュー| 項目 | 推奨値 | 検出方法 |
|---|---|---|
title | 30〜60 字(全角換算) | frontmatter または <title> |
description | 80〜120 字(全角換算) | frontmatter または <meta name="description"> |
title が 60 字超 → 検索結果で truncate されるdescription が 120 字超 → スニペットで省略されるh1 はページに 1 つだけ(レイアウト側の <h1>{title}</h1> が該当する)## (h2) から開始h2 → h3 → h4 の順で深くする(飛ばさない、戻らない)検出例:
grep -nE '^#{1,6} ' <file>
/services/... または /contact または他のニュース)こちら だけで完結している箇所がないか(アクセシビリティ + SEO)Organization JSON-LD は src/components/SEOHead.astro が 全ページに自動付与 しているArticle 構造化データを必要とする場合は別途追加検討(現状未実装。指摘するのみで本スキルから自動追加はしない) の alt が空文字でないか<img> / <Image> で alt 属性が必ず付いているか検出例:
grep -nE '!\[\]\(' <file> # 空 alt の検出
grep -nE '<img[^>]*>' <file> | grep -v 'alt='
<SEOHead canonical={...} />)、本当に必要か確認ogImage を指定する場合、画像が public/images/ 配下に存在するか確認publishedAt > today は NG)YYYY-MM-DD 形式になっているかpublishedAt を黙って書き換えていないか(履歴改ざんの可能性、要確認)入力に応じて分岐:
gh pr view <number> --json files --jq '.files[].path' で変更ファイル一覧git diff --name-only develop...HEAD.md と .astro を対象とし、それ以外(.ts / .json / 画像)は除外する。
上記 1〜8 を順に確認する。漏れなくチェックリスト化 し、各項目に対し以下を判定:
以下の形式で出力:
# SEO レビュー結果
対象: <ファイル / PR>
## サマリ
- ❌ Critical: <件数>
- ⚠️ Warning: <件数>
- ✅ OK: <件数>
## 詳細
### <ファイルパス 1>
- ✅ title: 42 字(30〜60 字 OK)
- ⚠️ description: 145 字(120 字超過。要短縮)
- ❌ 画像 alt: `images/foo.png` の alt が空(修正必須)
- ✅ 内部リンク: /services/ai-consulting, /contact
- ...
### <ファイルパス 2>
...
## 推奨アクション
1. <Critical の修正項目>
2. <Warning の対応項目>
このスキルは レビュー専門(単一責任)。allowed-tools は Read, Bash, Grep, Glob のみで、ファイル編集系ツール(Edit / Write)は意図的に付与していない。
ユーザーから「直しといて」と指示された場合でも、本スキルからファイルを編集しない。レビュー結果(Critical / Warning と推奨アクション)を出力したうえで、修正は内容に応じて別 Skill に dispatch すること:
write-blog または update-newsadd-service-pagesrc/components/* / src/layouts/* / src/pages/* 等) → 手動で対応するか、ユーザーに相談文字数カウント(日本語は全角換算 = 文字数そのまま):
# title / description の文字数を確認
grep -m1 '^title:' <file> | sed 's/^title: *//' | awk '{print length($0)" 字"}'
grep -m1 '^description:' <file> | sed 's/^description: *//' | awk '{print length($0)" 字"}'
PR の変更ファイル取得:
gh pr view <PR番号> --json files --jq '.files[].path' | grep -E '\.(md|astro)$'
title / description を勝手に書き換える(著者の意図と異なる可能性)publishedAt を黙って書き換える