tags : Claude Code, AI, Agent Skills
Claude Code のスキル(カスタムスラッシュコマンド)。URL の内容を読み取り、コアメッセージがわかるように要約する。
概要
URL を渡すと種別(通常記事、X/Instagram、Reddit)を自動判定し、適切な方法でコンテンツを取得して日本語で要約する Claude Code スキル。 「この記事を要約して」「この URL の内容を教えて」などのリクエストで発火する。Web 開発の検証やブラウザ操作には使わない(それは agent-browser の役割)。
使い方
.claude/skills/url-digest/SKILL.mdとして配置- X/Instagram の取得に
agent-browserCLI ツールが必要(npx agent-browserで利用可能) - フォールバック用に
claude-in-chromeMCP サーバーがあるとよい - Reddit は
curl+jqを使用(WebFetch はブロックされるため) - 通常記事は
WebFetchツールで直接取得するため追加設定不要
SKILL.md テンプレート(汎用版)
---
name: url-digest
description: URL の内容を要約する。記事要約、ページ要約。「この記事を要約して」「この URL の内容を教えて」「要約して」などのリクエストで発火。Web 開発の検証やブラウザ操作には使わない。
allowed-tools: Bash(npx agent-browser:*), Bash(agent-browser:*)
---
# URL要約
複数の URL を読み取り、コアメッセージがわかるように要約する。
## 入力形式
ユーザーから URL が1つ以上渡される。URL は改行区切りまたはスペース区切りで提供される。
## 実行手順
### 1. URL 種別判定
渡された URL を以下のカテゴリに分類:
**X (Twitter) / Instagram** (`x.com/*`, `twitter.com/*`, `instagram.com/*`):
- JavaScriptが必要なためWebFetchでは取得不可
- まず agent-browser(CLI)で取得を試みる
- agent-browser で取得できない場合のみ claude-in-chrome(MCP)にフォールバック
**Reddit** (`reddit.com/r/*/comments/*` または `www.reddit.com/r/*/comments/*`):
- curlでJSON形式で取得(WebFetchはreddit.comをブロック)
- 元記事とコメントの両方を分析
**通常記事**:
- 上記以外のURL
- 直接WebFetchで取得
### 2. コンテンツ取得
#### 通常記事
WebFetch ツールで内容を取得:
- タイトルと本文を抽出
- コアメッセージを要約
#### X (Twitter) / Instagram
JavaScript レンダリングが必要なため、ブラウザ自動化ツールを使用する。
##### 方法1: agent-browser(優先)
```bash
agent-browser open <URL>
agent-browser eval "document.querySelector('article')?.innerText || document.body.innerText"
agent-browser close
```
- `eval` で記事本文を直接取得する
- 取得したテキストが空、またはログイン壁で本文が得られない場合は方法2へ
##### 方法2: claude-in-chrome(フォールバック)
agent-browser で取得できなかった場合のみ使用:
1. `tabs_context_mcp`でタブ情報を取得(`createIfEmpty: true`)
2. `tabs_create_mcp`で新しいタブを作成
3. `navigate`ツールでURLに移動
4. ページ読み込み完了まで待機(`computer`ツールの`wait`アクション、2-3秒)
5. `get_page_text`で本文を取得
##### 抽出する情報
- 投稿本文
- 投稿者名・ハンドル
- 画像/動画の有無(あれば内容を説明)
- リプライ・引用がある場合はその文脈
#### Reddit
**重要**: 投稿情報とコメントは別々の jq クエリで取得すること(一度に取得すると jq エラーになる)
1. **投稿情報の取得**:
```bash
curl -s -H "User-Agent: url-digest/1.0" \
"https://old.reddit.com/r/{subreddit}/comments/{post_id}.json" \
| jq '.[0].data.children[0].data | {title, url, selftext, is_self}'
```
2. **コメントの取得**(別クエリで実行):
```bash
curl -s -H "User-Agent: url-digest/1.0" \
"https://old.reddit.com/r/{subreddit}/comments/{post_id}.json" \
| jq '[.[1].data.children[:8][].data | select(.body) | {body: .body[0:500], score}]'
```
**注意**: `select(.body != null)`は使わない(感嘆符がシェルでエスケープされるため)。`select(.body)`を使う。
3. **元記事取得**:
- `url`フィールドが外部URLの場合、WebFetchで元記事を取得
- 自己投稿(`is_self: true`)の場合、`selftext`が本文
4. **コメント分析**:
- 上位コメントから興味深いインサイト、反論、追加情報を抽出
### 3. 要約生成
各 URL について以下を生成:
**タイトル**:
- 記事の元タイトル
- 英語の場合は日本語に翻訳
**要約**:
- コアメッセージを3-5行で要約
- 何が重要なのか、なぜ注目に値するのかを明確に
- Redditの場合は以下も含める:
- コミュニティの反応(賛否、議論のポイント)
- 興味深いコメントからのインサイト
- 補足情報や反論
**URL**:
- 入力されたURL(Redditの場合はそのまま)
### 4. 出力
会話内で直接要約を返す。ファイル保存はしない。
#### フォーマット
```
## [記事タイトル(英語の場合は日本語訳)]
要約本文。コアメッセージを3-5行で記述。
Reddit の場合はコミュニティの反応やインサイトも含める。
URL
```
## 注意事項
- **すべての記事にURLを必ず含める**
- **英語タイトルは日本語に翻訳**
- **Redditは元記事とコメントの両方を確認**(これが重要)
- **X.com / Instagram は agent-browser を優先**、取得できない場合のみ claude-in-chrome にフォールバック
- Redditはcurlを使用(WebFetchはブロックされる)
- Reddit APIレート制限に注意(1分あたり60リクエスト程度)
- 要約は簡潔に、核心を突く内容で