# Claude Codeで過去記事を分析して記事生成を自動化

> 技術記事を書くのは楽しいですが、時間がかかる作業でもあります。記事の構成を毎回ゼロから考えたり、過去記事との一貫性を保つのが難しかったりします。

- URL: https://cardene.dev/articles/5b488d7671476b6acf77
- 公開日: 2025-11-27
- 更新日: 2025-11-27
- トピック: AI
- タグ: ai, 個人開発, 技術記事, claude

## はじめに

初めまして。
『DApps開発入門』という本や色々記事を書いているかるでねです。

https://amzn.asia/d/gxvJ0Pw

以下でも情報発信しているので、興味ある記事があればぜひ読んでみてください！

https://cardene.notion.site/ERC-EIP-2a03fa3ea33d43baa9ed82288f98d4a9?pvs=4

https://twitter.com/cardene777

https://zenn.dev/heku

https://cardene.substack.com/

https://mirror.xyz/0xcE77b9fCd390847627c84359fC1Bc02fC78f0e58

今回は、Claude Code SkillとSubagentで自身の過去記事を分析して、記事生成を自動化した仕組みについてまとめていきます。

## 背景・作った理由

技術記事を書くのは楽しいですが、時間がかかる作業でもあります。
記事の構成を毎回ゼロから考えたり、過去記事との一貫性を保つのが難しかったりします。
QiitaとZennでは記法が異なるため、プラットフォームごとのルールも覚えておく必要があります。

そこで、自分の過去記事を分析して、記事作成を支援するClaude Code SkillとSubagentを作成しました。

**解決したかった問題**

- テンプレートを使って素早く記事のベースとなる構成を作成したい
- 過去記事のパターンをもとに統一感のある記事を作成したい
- QiitaとZenn両方に対応した柔軟な記事作成を実現したい
- 自身が知りたい技術やサービスについて記事にまとめて理解しやすくしたい

例えば自身が作成したアプリケーションの解説記事や特定の技術やサービスに関する記事を書きたいときに、AIにベース部分を書かせて、その後人の手で足りない部分の補強や修正を行うことで記事の執筆効率を上げることができます。
また、過去に執筆した記事がいくつかあれば、その記事の特徴をAIを用いて記事に反映できるのではと思い試してみました。

「自身が知りたい技術やサービスについて記事にまとめて理解しやすくしたい」ですが、これはあくまで自分の学習のためであり、下書きとして書いて公開するかどうかは別の話だと思っています。

:::message alert
ただし、必ず最後は人の手で確認することが重要です。
:::

## Claude Code Skillとは

:::message
Claude Skillについては以下を参考にしてください。
:::

https://zenn.dev/heku/books/claude-code-guide/viewer/customization-skills

Claude Code Skillは、Claudeに特定の領域やタスクに特化した知識やワークフローを提供するモジュール型のパッケージです。
Skillは専門的なワークフロー（特定ドメインのための多段階の手順）、ツール統合（特定のファイル形式やAPIを扱うための指示）、ドメイン知識（企業固有の知識、スキーマ、ビジネスロジック）、バンドルされたリソース（複雑で繰り返しタスクのためのスクリプト、参照資料、アセット）を提供します。

### Skillの構造

すべてのSkillは必須の `SKILL.md` ファイルと、オプションでバンドルされたリソースで構成されます。

```
skill-name/
├── SKILL.md       - 必須
├── scripts/       - 実行可能コード（Python/Bash等）
├── references/    - 必要に応じてコンテキストに読み込むドキュメント
└── assets/        - 出力に使用するファイル（テンプレート等）
```

`SKILL.md` はSkillの中核となるファイルで、YAMLメタデータに `name` と `description` を記述します。
この `description` が非常に重要で、いつSkillを使用すべきかをClaudeが判断する基準になります。

```markdown
---
name: skill-name
description: This skill should be used when...
---

# Skill Name

Instructions for Claude...
```

`scripts/` には実行可能なコード（Python/Bash等）を格納します。
同じコードが繰り返し書き直される場合や決定的な信頼性が必要な場合に含めます。

`references/` にはClaudeの作業を導くために必要に応じてコンテキストに読み込まれるドキュメントを格納します。
データベーススキーマ、APIドキュメント、ドメイン知識、詳細なワークフローガイドなどを含めます。
ファイルが大きい場合（10k語以上）は、`SKILL.md` に検索パターンを含めると効果的です。

`assets/` にはClaudeが生成する出力内で使用されるファイルを格納します。
テンプレート、画像、アイコン、ボイラープレートコードなどを含めます。

### プログレッシブディスクロージャー

Skillは、コンテキストを効率的に管理するために、3段階の読み込みシステムを使用します。
最初にメタデータ（name + description）が常にコンテキスト内に読み込まれます（約100語）。
次にSkillがトリガーされたときに `SKILL.md` の本文が読み込まれます（5000語未満推奨）。
最後にClaudeが必要に応じてバンドルされたリソースを読み込みます。

この設計により、Skillは軽量でありながら、必要に応じて豊富な情報とツールを提供できます。

## Claude Code Subagentとは

:::message
Claude Subagentについては以下を参考にしてください。
:::

https://zenn.dev/heku/books/claude-code-guide/viewer/customization-agents

Subagentは、特定のタスクを実行する専門エージェントです。
`.claude/agents/` ディレクトリに配置し、複雑なワークフローを実行できます。

### SkillとSubagentの違い

| 項目 | Skill | Subagent |
|------|-------|----------|
| 目的 | 知識やルールの提供 | タスクの実行 |
| 配置場所 | `.claude/skills/` | `.claude/agents/` |
| 呼び出し方 | 自動（Skill tool） | Task tool経由 |
| 複雑さ | シンプル | 複雑なワークフロー可能 |

Skillは「**何を知っているか**」を定義し、Subagentは「**何をするか**」を定義します。
Subagentは複数のSkillを組み合わせて使用でき、MCPツールを活用した複雑な処理も可能です。

:::message
より詳しくは以下の記事などが参考になります。
:::

https://zenn.dev/tmasuyama1114/articles/claude_code_skills_vs_subagents

### Subagentファイルの構成

```markdown
---
name: agent-name
description: エージェントの説明と使用例
model: sonnet
---

You are the **Agent Name**, an expert in...

## Core Identity

エージェントの役割を定義...

## Workflow

1. Step 1
2. Step 2
3. Step 3

## Available Skills

使用するスキルを列挙...
```

メタデータにはエージェントの名前、説明、使用するモデルを記述します。
本文にはエージェントの役割、ワークフロー、使用するSkillを記述します。
使用例を `<example>` タグで記述すると、Claudeがエージェントの使い方を理解しやすくなります。

### いつSubagentを使うべきか

Subagentは複数のステップからなるワークフローがある場合、複数のSkillを組み合わせて使いたい場合、特定のタスクを繰り返し実行する場合、MCPツールを組み合わせた複雑な処理が必要な場合に有効です。

今回の記事作成システムでは、ドキュメント取得、内容分析、構成設計、執筆という複数のフェーズがあり、各フェーズで異なるSkillやMCPツールを使い分ける必要があったため、Subagentを導入しました。

## 作成したシステムの紹介

今回、筆者自身の記事を使用して、2つのSubagentと3つのSkillを作成しました。

:::message
**プラットフォームについて**

この記事ではQiitaとZennを例に説明していますが、これは私が使用しているプラットフォームの例です。
note、Medium、はてなブログ、自分のブログなど、他のプラットフォームを使っている方は、ディレクトリ構造やテンプレートを自分の環境に合わせてカスタマイズしてください。
:::

### 全体構成（完全版）

```text
.claude/
├── agents/
│   ├── article-analyzer.md         # 記事分析Subagent
│   └── article-writer.md           # 記事執筆Subagent
└── skills/
    ├── analysis_framework/         # 記事分析フレームワーク
    │   ├── skill.md                # 分析手法の定義（6要素抽出）
    │   └── examples.md             # 分析結果のサンプル出力（JSON形式）
    ├── article_templates/          # 記事テンプレート集
    │   ├── skill.md                # テンプレート選択ロジック
    │   └── templates/
    │       ├── qiita/
    │       │   ├── erc_eip.md      # ERC/EIP標準テンプレート
    │       │   ├── handson.md      # ハンズオンテンプレート
    │       │   ├── tech_tips.md    # 技術解説テンプレート
    │       │   └── tool_intro.md   # ツール紹介テンプレート
    │       ├── zenn-article/
    │       │   ├── common.md       # Zenn記事共通テンプレート
    │       │   ├── erc_eip.md      # ERC/EIP標準テンプレート
    │       │   ├── contract_analysis.md
    │       │   ├── tech_concept.md
    │       │   ├── tool_service.md
    │       │   └── personal_dev.md
    │       └── zenn-book/
    │           ├── common.md       # Zenn Book共通テンプレート
    │           ├── protocol_service.md
    │           ├── erc_eip.md
    │           ├── defi.md
    │           ├── contract.md
    │           └── solidity.md
    └── tone_guidelines/            # 文体・スタイルガイドライン
        ├── skill.md                # 文体ルールの定義
        ├── intro_outro.md          # はじめに・最後にテンプレート（カスタム）
        └── wordings.md             # 言い回し集（具体的な表現例）
```

### テンプレート部分とカスタム部分

このシステムは、そのまま使える「テンプレート部分」と、各ユーザーが自分の記事を分析して作成する「カスタム部分」に分かれています。

**テンプレート部分（そのまま使える）**

| ファイル | 内容 |
|----------|------|
| `article-analyzer.md` | 記事分析Subagent（分析・分類・テンプレート生成） |
| `article-writer.md` | 記事執筆Subagent（3パターンのワークフロー定義） |
| `analysis_framework/skill.md` | 分析手法の定義（6要素の抽出方法） |
| `tone_guidelines/skill.md` | 文体ルールの定義（句点ルール、コロン禁止など） |

テンプレート部分は汎用的な内容なので、そのままコピーして使用できます。
以下のGitHubリポジトリで公開しています。

https://github.com/cardene777/claude-code-template/tree/main/.claude

**カスタム部分（自分の記事を分析して作成）**

| ファイル | 内容 |
|----------|------|
| `analysis_framework/examples.md` | 自分の記事を分析した結果のサンプル |
| `article_templates/templates/` | カテゴリ別テンプレート（章構成パターン） |
| `tone_guidelines/wordings.md` | 自分の記事から抽出した言い回し集 |
| `tone_guidelines/intro_outro.md` | 「**はじめに**」と「**最後に**」テンプレート（個人のSNSリンク、自己紹介文） |

カスタム部分は、自分の過去記事を分析して抽出した特徴に基づいて作成します。
私の場合はブロックチェーン関連の記事が多いため、ERC/EIP標準、DeFi解説などのカテゴリになっていますが、他のジャンルで活動している方は異なるカテゴリ構成になります。

:::message alert
**カテゴリ分類の注意点**

カテゴリは「**記事の内容**」で分類してください。
著者の所属や自己紹介ではなく、記事本文で「**何を説明しているか**」が基準です。

- 良い例: 「ERC20トークン規格」「Reactフック解説」「Docker環境構築」
- 悪い例: 「XX社の技術記事」「ブロックチェーンゲーム企業の記事」
:::

### `article-analyzer` Subagent

`article-analyzer` は、既存の記事を分析してカスタム部分（`examples.md` と `templates/`）を自動生成するSubagentです。
作成手順のStep 4で使用します。

#### パイプラインフェーズ

| フェーズ | 目的 | 出力 |
|---------|------|------|
| Phase 1: Article Collection | 記事ファイルの収集 | Markdownファイル一覧 |
| Phase 2: Content Analysis | 各記事の6要素抽出 | 分析結果JSON |
| Phase 3: Categorization | カテゴリ分類 | カテゴリ一覧と割合 |
| Phase 4: Generate examples.md | 分析例の生成 | `examples.md` |
| Phase 5: Generate Templates | カテゴリ別テンプレート生成 | `templates/` |

#### 使用例

```text
article-analyzer agentを使用して、qiita/articles/、zenn/articles/、zenn/books/ の記事を分析し、examples.md とカテゴリ別テンプレートを作成してください。
```

このプロンプト1つで以下が自動生成されます。

- `.claude/skills/analysis_framework/examples.md`
- `.claude/skills/article_templates/templates/qiita/`
- `.claude/skills/article_templates/templates/zenn-article/`
- `.claude/skills/article_templates/templates/zenn-book/`

途中でユーザー確認が入り、カテゴリ分類の結果を確認してからテンプレート生成に進みます。

### `article-writer` Subagent

`article-writer` は、技術記事執筆を自動化するSubagentです。
入力に応じて3つのパターンで記事を作成します。

**Pattern A: Document-based（ドキュメントベース）**

公式ドキュメントのURLを元に記事を作成します。
WebFetchでドキュメントを取得し、WebSearchで背景情報を補完します。

```text
入力例: 「EASについて記事を書きたいです。ドキュメントはこちらです。https://docs.attest.org/」
```

**Pattern B: Reference-based（参考記事ベース）**

複数の参考記事を分析して、新しい記事を作成します。
`analysis_framework` スキルを使って各記事を分析し、共通点や相違点を抽出します。

```text
入力例: 「React Server Componentsについて記事を書きたいです。参考記事が2つあります。https://ja.react.dev/reference/rsc/server-components, https://ja.react.dev/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023#react-server-components」
```

**Pattern C: Code-based（コードベース）**

ソースコードを分析して、解説記事を作成します。
GitHub MCPでリポジトリ構造を取得し、Kiri MCPでコードを解析します。

```text
入力例: 「UniswapV4のコントラクトについて記事を書きたいです。https://github.com/Uniswap/v4-core」
```

:::message
Githubからコードをクローンして、そのパスを渡して書かせることもできます。
:::

#### パイプラインフェーズ

| フェーズ | 目的 | 使用ツール |
|---------|------|-----------|
| Phase 0: Source Acquisition | ソースの取得 | WebFetch, Context7 MCP, GitHub MCP |
| Phase 1: Content Analysis | 内容の分析 | `analysis_framework` skill |
| Phase 2: Outline Design | 構成の設計 | `article_templates` skill |
| Phase 3: Writing | 執筆 | `tone_guidelines` skill |

Pattern Bの場合はPhase 0をスキップし、Phase 1から開始します。

#### 利用可能なツール

| カテゴリ | ツール | 用途 | 必要なパターン |
|---------|--------|------|---------------|
| Web | WebFetch | URLからコンテンツを取得 | 全パターン（標準搭載） |
| Web | WebSearch | 背景情報の検索 | 全パターン（標準搭載） |
| Web | Context7 MCP | ライブラリドキュメント取得 | Pattern A |
| Code | Kiri MCP | コードのセマンティック検索 | Pattern C |
| Code | GitHub MCP | リポジトリの探索 | Pattern C |

:::message
**MCP設定について**

Pattern AやPattern Cを使用する場合は、事前にMCPの設定が必要です。
Pattern B（参考記事ベース）のみ使用する場合は、MCP設定は不要です。

```bash
# Pattern Aを使う場合（ライブラリドキュメント取得）
claude mcp add context7 -- npx -y @upstash/context7-mcp

# Pattern Cを使う場合（コード解析）
claude mcp add kiri -- npx -y @anthropic-ai/kiri-mcp
```
:::

### `analysis_framework` Skill

技術記事を一貫した観点で分析するためのフレームワークを提供するSkillです。
Phase 1（内容分析フェーズ）で使用されます。

#### `skill.md`（テンプレート部分）

分析手法を定義するファイルです。
各記事から以下の6つの要素を抽出します。

- テーマと主張（記事の中心テーマ、著者が伝えたいメッセージ）
- 課題（読者が直面している具体的な痛み）
- 解決アプローチ（提案されている技術・手法）
- 実装・コード例（重要なコードスニペットの役割）
- 前提知識（読者に期待される前提技術）
- 制約・トレードオフ（アプローチが向かないケース）

#### `examples.md`（カスタム部分）

分析結果の具体例を提供するファイルです。
自分の記事を分析した結果をJSON形式で3〜5件程度記載します。
Claude Codeが新しい記事を分析する時に、この例を参照して同様の形式で出力します。

```json
{
  "article_id": "erc20-comprehensive-guide",
  "title": "ERC20を1からわかりやすく解説",
  "theme": "ERC20トークン規格の基礎から実装まで",
  "main_claim": "ERC20は統一されたトークン規格であり...",
  "target_audience": "beginner",
  "problems": [
    {
      "description": "トークン規格が標準化される前は...",
      "context": "DEXやウォレットとの連携が困難で...",
      "impact": "エコシステムの断片化、開発コストの増大"
    }
  ],
  "solutions": [...],
  "code_highlights": [...],
  "prerequisites": ["Solidityの基本構文", "Ethereumのアカウントモデル"],
  "limitations": ["スマートコントラクトへの誤送金時に回収不可能"],
  "structure_notes": {
    "sections": ["はじめに", "ERC20とは", "インターフェース解説", ...],
    "storytelling_techniques": ["問題提起から始める", "図解を使った視覚的説明"]
  }
}
```

この例があることで、Claude Codeは「**どのような粒度で分析するか**」、「**どのような形式で出力するか**」を理解できます。

:::message
**なぜ `examples.md` は1つなのか**

`analysis_framework` は記事の「**内容**」を分析するフレームワークです。
抽出する6要素（テーマ、課題、解決策、コード例、前提知識、制約）は、プラットフォームに依存しない本質的な構造です。
プラットフォーム固有の違い（メタデータ形式、記法など）は `article_templates` と `tone_guidelines` で吸収するため、`examples.md` は1つで問題ありません。
:::

### `article_templates` Skill

記事の構成設計を支援するテンプレート集を提供するSkillです。
Phase 2（構成設計フェーズ）で使用されます。

#### `skill.md`（テンプレート部分）

テンプレート選択ロジックを定義するファイルです。
プラットフォーム（Qiita・Zenn Article・Zenn Book）とカテゴリに応じて、適切なテンプレートを選択する方法を記述します。

#### `templates/`（カスタム部分）

カテゴリ別の章構成テンプレートを格納するディレクトリです。
各テンプレートには以下の内容を含めます。

```markdown
# ERC/EIP標準記事テンプレート（Qiita）

577本の分析結果に基づくERC/EIP解説記事のテンプレート。

## メタデータ

(YAMLフロントマターの形式)

## 記事構成

### 1. はじめに（固定）
(固定テンプレート)

### 2. 概要
(このセクションの目的と典型的な内容)

### 3. 動機
...

## 記述ルール

### Qiita固有ルール
- Solidityコードは `js` で記述
- `:::note` ブロック内にリンクを含めない
...

## チェックリスト
- [ ] メタデータが正しい形式
- [ ] はじめに・最後にが固定テンプレート通り
...
```

#### 私の分析規模（参考）

| プラットフォーム | 分析数 | カテゴリ数 |
|-----------------|--------|-----------|
| Qiita | 577記事 | 4カテゴリ |
| Zenn Article | 65記事 | 6カテゴリ |
| Zenn Book | 31冊 | 6カテゴリ |

私のQiitaカテゴリの例として、ERC/EIP標準（91.7%）、ハンズオン（2.3%）、技術解説（1.7%）、ツール紹介（0.9%）があります。
これらのカテゴリはあくまで私の記事を分析した結果です。
自分の記事を分析することで、カテゴリが変わってきます。

### `tone_guidelines` Skill

技術記事執筆時のトーン・スタイルガイドラインを提供するSkillです。
Phase 3（執筆フェーズ）で使用されます。

#### `skill.md`（テンプレート部分 + 一部カスタム）

文体ルールを定義するファイルです。

**プラットフォーム固有の違い（テンプレート部分）**

| 項目 | Qiita | Zenn |
|------|-------|------|
| メタデータ | `tags: Tag1 Tag2` | `topics: ["tag1"]` |
| 補足記法 | `:::note info/warn/alert` | `:::message` |
| 折りたたみ | 未対応 | `:::details` |
| Solidityコード | `js` | `solidity` |

**主なフォーマットルール（テンプレート部分）**

- 文章は句点（。）で終わったら必ず改行する
- コロン（:）で文を終わらせない
- 「」で囲まれた文字は必ず太字にする
- コードブロックには必ず言語とファイル名を指定する
- バッククォートで囲まれたコード要素と日本語テキストの間には半角スペースを入れる

**「はじめに」と「最後に」（カスタム部分）**

「**はじめに**」と「**最後に**」には個人のSNSリンクや自己紹介文が含まれるため、自分用にカスタマイズする必要があります。

#### `wordings.md`（カスタム部分）

自分の記事から抽出した言い回し集です。
Claude Codeが執筆時に参照し、一貫した文体で記事を書くために使用します。

```markdown
## 導入部の表現

### 記事の目的を述べる

**推奨パターン**
今回は『**〇〇**』についてまとめていきます。
「**〇〇がわからない、なんとなく理解している方**」
こんな人の役に立てば幸いです。

## 説明の表現

### 定義を述べる

**推奨パターン**
〇〇とは、△△するための仕組みです。
〇〇は、△△を目的として設計されています。

## 避けるべき表現一覧

| 避けるべき表現 | 推奨表現 |
|--------------|---------|
| 〜である | 〜です |
| **パラメータ**: | パラメータとして、〜 |
| **注意**: | 注意点として、〜 |
```

この言い回し集があることで、Claude Codeは自分の文体を理解し、一貫したトーンで記事を生成できます。

## 作成手順

Claude Code SkillとSubagentを作成するには、以下のステップを順番に進めます。
テンプレート部分はそのまま使用し、カスタム部分は自分の記事を分析して作成します。

### Step 1: テンプレート部分の導入

以下のGitHubリポジトリからテンプレート部分をダウンロードして配置します。

:::message
**テンプレートのダウンロード**

上記リポジトリから以下のファイルをコピーしてください。
:::

```text
.claude/
├── agents/
│   └── article-writer.md       # Subagent本体
└── skills/
    ├── analysis_framework/
    │   └── skill.md            # 分析手法の定義
    ├── article_templates/
    │   └── skill.md            # テンプレート選択ロジック
    └── tone_guidelines/
        └── skill.md            # 文体ルールの定義
```

これらはそのまま使用できます。
カスタム部分（`examples.md`, `wordings.md`, `templates/`）は後続のステップで作成します。

### Step 2: 既存記事の収集

カスタム部分を作成するために、自分の記事をMarkdownファイルとして収集します。
ディレクトリ構造は自由ですが、プラットフォームごとに分けると管理しやすいです。

**ディレクトリ構造の例**

```text
article/
├── [プラットフォーム1]/
│   └── articles/       # 記事のMarkdownファイル
└── [プラットフォーム2]/
    └── articles/       # 記事のMarkdownファイル
```

**筆者の例（Qiita + Zenn）**

```text
article/
├── qiita/
│   └── articles/
└── zenn/
    ├── articles/
    └── books/
```

**記事のエクスポート方法**

各プラットフォームのエクスポート機能を使用するか、手動でコピーしてください。

- Zenn

公式のエクスポート機能があります。

https://zenn.dev/settings/export

- Qiita

公式エクスポート機能はないですが、Qiita CLIで `init` をしたときにローカルに一通りファイルが作成されるはずです。
`public` というディレクトリに作成されます。

https://qiita.com/Qiita/items/666e190490d0af90a92b

### Step 3: Claude Codeの起動

記事を収集したディレクトリでClaude Codeを起動します。

```bash
claude
```

Claude Codeが起動したら、以降のステップでプロンプトを入力して分析・生成を行います。

:::message
Claude Codeがインストールされていない場合は、以下のコマンドでインストールしてください。

```bash
npm install -g @anthropic-ai/claude-code
```
:::

### Step 4: 記事の分析と分類（`article-analyzer` subagentの使用）

`article-analyzer` subagentを使用して、記事の分析・カテゴリ分類・テンプレート生成を一括で行います。

**サンプルプロンプト**

```text
article-analyzer agentを使用して、[記事ディレクトリ] の記事を分析し、examples.md とカテゴリ別テンプレートを作成してください。
```

例（筆者の場合）:
```text
article-analyzer agentを使用して、qiita/articles/、zenn/articles/、zenn/books/ の記事を分析し、examples.md とカテゴリ別テンプレートを作成してください。
```

**処理の流れ**

1. **記事収集**
   指定ディレクトリからMarkdownファイルを収集します。
2. **内容分析**
   各記事から6要素（テーマ、課題、解決策、コード例、前提知識、制約）を抽出します。
3. **カテゴリ分類**
   記事の「**内容**」に基づいて分類します（ここでユーザー確認が入る）。
4. **examples.md生成**
   代表的な記事の分析結果をサンプルとして出力します。
5. **テンプレート生成**
   カテゴリ別の章構成テンプレートを出力します。

:::message
カテゴリ分類は記事本文で「**何を説明しているか**」が基準です。
著者の自己紹介や所属ではなく、技術的な内容で分類されます。
:::

**出力されるファイル**

```text
.claude/skills/
├── analysis_framework/
│   └── examples.md             # 分析サンプル（JSON形式）
└── article_templates/
    └── templates/
        └── [プラットフォーム名]/
            ├── [カテゴリ名].md  # カテゴリ別テンプレート
            └── ...
```

**出力される `examples.md` の形式**

```json
{
  "articles": [
    {
      "article_id": "erc20-comprehensive-guide",
      "title": "ERC20を1からわかりやすく解説",
      "platform": "zenn-article",
      "theme": "ERC20トークン規格の基礎から実装まで",
      "main_claim": "ERC20は統一されたトークン規格であり...",
      "target_audience": "beginner",
      "problems": [...],
      "solutions": [...],
      "code_highlights": [...],
      "prerequisites": ["Solidityの基本構文"],
      "limitations": ["スマートコントラクトへの誤送金時に回収不可能"],
      "structure_notes": {
        "sections": ["はじめに", "ERC20とは", "インターフェース解説"],
        "storytelling_techniques": ["問題提起から始める"]
      }
    }
  ],
  "analysis_metadata": {
    "date": "2024-01-15",
    "total_articles": 10,
    "platforms": { "qiita": 5, "zenn-article": 3, "zenn-book": 2 }
  }
}
```

**出力されるテンプレートの形式**

```markdown
# ERC/EIP標準記事テンプレート（Qiita）

577本の分析結果に基づくERC/EIP解説記事のテンプレート。

## メタデータ

(YAMLフロントマターの形式を記載)

## 記事構成

### 1. はじめに（固定）
(固定テンプレートを記載)

### 2. 概要
(このセクションの目的と典型的な内容を記載)

## 記述ルール

### Qiita固有ルール
- Solidityコードは `js` で記述
- `:::note` ブロック内にリンクを含めない

## チェックリスト
- [ ] メタデータが正しい形式
- [ ] はじめに・最後にが固定テンプレート通り
```

:::message
途中でカテゴリ分類の結果が表示され、確認を求められます。
カテゴリ名や分類に問題がなければ承認し、テンプレート生成に進みます。
:::

### Step 5: 言い回しの抽出（`wordings.md` の作成）

自分の記事から頻出する言い回しを抽出し、`wordings.md` を作成します。

:::message alert
**トークン制限について**

記事が多い場合、全記事を一度に読み込むとトークン制限（25,000トークン）を超えることがあります。
その場合は、各カテゴリから代表的な記事を5〜10件サンプリングして分析してください。
:::

**サンプルプロンプト**

```text
[記事ディレクトリ] から各カテゴリの代表的な記事を5〜10件選び、頻出する言い回しパターンを抽出してください。「導入部の表現」「説明の表現」「注意点の表現」「避けるべき表現」に分類し、.claude/skills/tone_guidelines/wordings.md に出力してください。
```

例（筆者の場合）:
```text
qiita/articles/、zenn/articles/、zenn/books/ から各カテゴリの代表的な記事を5〜10件選び、頻出する言い回しパターンを抽出してください。「導入部の表現」「説明の表現」「注意点の表現」「避けるべき表現」に分類し、.claude/skills/tone_guidelines/wordings.md に出力してください。
```

**出力される `wordings.md` の形式**

```markdown
# 言い回し集

## 1. 導入部の表現

### 記事の目的を述べる

**推奨パターン**
今回は『**〇〇**』についてまとめていきます。

## 2. 説明の表現

### 定義を述べる

**推奨パターン**
〇〇とは、△△するための仕組みです。

## 11. 避けるべき表現一覧

| 避けるべき表現 | 推奨表現 |
|--------------|---------|
| 〜である | 〜です |
| **パラメータ**: | パラメータとして、〜 |
```

### Step 6: 「はじめに」と「最後に」のカスタマイズ

`tone_guidelines/intro_outro.md` を編集して、自分のSNSリンクや自己紹介文を設定します。
プラットフォームごとにテンプレートを用意しておくと、記事作成時に自動で適用されます。

**`intro_outro.md` のテンプレート構造**

````markdown
# Intro/Outro Templates (CUSTOM - Replace with your own)

このファイルには固定の「はじめに」と「最後に」のテンプレートを定義しています。
プレースホルダーを自分の情報に置き換えてください。

## プレースホルダー

- `{platform_1}`, `{platform_2}`: 使用するプラットフォーム名
- `{your_sns_links}`: あなたのSNSリンクや自己紹介

---

## 1. {platform_1}用

### はじめに

```markdown
## はじめに

{your_sns_links}

今回は「**〇〇**」についてまとめていきます。
```

### 最後に

```markdown
## 最後に

今回は「**〇〇**」についてまとめてきました。

{your_sns_links}
```

---

## 2. {platform_2}用

### はじめに

```markdown
## はじめに

{your_sns_links}

今回は「**〇〇**」についてまとめていきます。
```

### 最後に

```markdown
## 最後に

今回は「**〇〇**」についてまとめてきました。

{your_sns_links}
```

---

## 使い方

1. `{platform_1}`, `{platform_2}` を使用するプラットフォーム名に置き換える
2. `{your_sns_links}` を自分のSNSリンクや自己紹介に置き換える
3. 「**〇〇**」の部分は記事作成時にテーマに置き換えられる
4. プラットフォームごとにリンク先が異なる場合は、それぞれ設定する
````

:::message
プラットフォームの数は自由に増減できます。
筆者の場合はQiita、Zenn Article、Zenn Bookの3つを使用しています。
:::

### Step 7: 動作確認

`article-writer` agentを使用して、作成したSkillが正しく動作するか確認します。

```text
article-writer agentを使用して、〇〇について簡単な記事を書いてください。
```

**確認ポイント**

- `examples.md` の形式で分析が行われるか
- `templates/` の構成に従って記事が作成されるか
- `wordings.md` の言い回しが使用されるか
- 「**はじめに**」「**最後に**」が自分のテンプレート通りか

動作確認後、必要に応じてファイルを直接編集したり、Claude Codeに追記してほしいことを伝えてカスタマイズします。

### 最終的なディレクトリ構造

全ステップ完了後、以下の構造になります。

```text
.claude/
├── agents/
│   ├── article-analyzer.md         # テンプレート
│   └── article-writer.md           # テンプレート
└── skills/
    ├── analysis_framework/
    │   ├── skill.md                # テンプレート
    │   └── examples.md             # Step 4で作成
    ├── article_templates/
    │   ├── skill.md                # テンプレート
    │   └── templates/              # Step 4で作成
    │       ├── qiita/
    │       ├── zenn-article/
    │       └── zenn-book/
    └── tone_guidelines/
        ├── skill.md                # テンプレート
        ├── intro_outro.md          # Step 6でカスタマイズ
        └── wordings.md             # Step 5で作成
```

## 使い方と実例

### Pattern Aの使用例（ドキュメントベース）

```text
article-writer agentを使用して、EASについてZenn記事を書いてください。ドキュメントはこちらです。https://docs.attest.org/
```

agentがWebFetchでドキュメントを取得し、WebSearchで背景情報を補完します。
`article_templates` でプラットフォームとカテゴリを選択し、`tone_guidelines` の文体ガイドラインに従って執筆します。

### Pattern Bの使用例（参考記事ベース）

```text
article-writer agentを使用して、React Server ComponentsについてQiita記事を書いてください。参考記事: https://example.com/article1 https://example.com/article2
```

agentがWebFetchで各記事を取得し、`analysis_framework` で分析して共通点・相違点を抽出します。
`article_templates` でテンプレート選択後、`tone_guidelines` に従って執筆します。

### Pattern Cの使用例（コードベース）

```text
article-writer agentを使用して、OpenZeppelinのERC20実装について解説記事を書いてください。https://github.com/OpenZeppelin/openzeppelin-contracts
```

agentがGitHub MCPでリポジトリ構造を取得し、Kiri MCPでコードを解析します。
`article_templates` でテンプレート選択後、`tone_guidelines` に従って執筆します。

## 最後に

今回は『過去記事を分析してClaude Code SkillとSubagentで記事生成を自動化した仕組み』についてまとめてきました。
他でも色々記事を書いているのでぜひよろしければ読んでいってください！

https://amzn.asia/d/gxvJ0Pw

https://cardene.notion.site/EIP-2a03fa3ea33d43baa9ed82288f98d4a9?source=copy_link

https://zenn.dev/heku

https://mirror.xyz/0xcE77b9fCd390847627c84359fC1Bc02fC78f0e58

https://twitter.com/cardene777

https://cardene.substack.com/
