Claude Codeに"俺の文体"を学習させるZenn執筆テンプレートを作った
おはようございます、こんにちは、こんばんは。
スペースマーケットでWebエンジニアをしています、s0arです。
メリークリスマス。
おじさんは今年も一人です。
今日はClaude Codeで記事を書くときに「なんか自分っぽくない問題」を解決するテンプレートを作った話をします。
なんか自分っぽくない問題
Claude Codeで技術記事を書かせると、まあ普通にいい感じの記事が出てくるんですよね。
文法も正しいし、構成もしっかりしてる。
でもなんかちゃうねん。
自分が書いた記事を読み返すと「草」とか「せやな」とか言ってるし。
唐突にガンダムネタぶっ込んでくるし、関西弁混じりだし。そういうのが全然ない。
AIが書く文章って、きれいすぎるんですよね。きれいすぎて自分っぽくない。
Claude Codeに文体を覚えさせたい
じゃあどうするか。
「スタイルガイドを渡せばいいのでは?」
アッハイ
CLAUDE.mdとかに「関西弁を混ぜてね」「ネタを入れてね」って書けばいい。
でもこれ、自分で書くの面倒なんですよね。
「俺の文体ってなんだ…?」って考え始めると沼にハマる。
しかも記事を書くたびに新しい表現が増えていくから、スタイルガイドも更新しないといけない。
それはちょっと…ほら…ねえ…
自動で育つスタイルガイドという発想
ふと思ったんですよね。
過去記事を分析すればいいのでは?
Claude Codeに「この記事から文体パターンを抽出して」って頼めば、勝手にスタイルガイドを作ってくれる。
記事が増えるたびにガイドも成長する。
Vやねん!(アカン)
テンプレートの中身
てなわけで、テンプレートを作りました。
ファイル構成
.claude/
├── commands/ # スラッシュコマンド定義
│ ├── analyze-style.md
│ ├── new-article.md
│ ├── outline-article.md
│ └── write-article.md
├── style-guide/ # スタイルガイド(自動更新)
│ └── (12ファイル)
└── analyzed-articles # 分析済み記事リスト
articles/ # Zenn記事
src/ # リサーチ・構成案
CLAUDE.md # Claude Code設定
lefthook.yml # Git hook設定
12種類のスタイルガイド
.claude/style-guide/ 配下に12個のファイルがあります。
| ファイル | 内容 |
|---|---|
01-structure.md |
記事の基本構成・フロントマター |
02-greetings.md |
挨拶パターン・アイスブレイク |
03-headings.md |
見出し・セクションタイトルの特徴 |
04-endings.md |
文末・語尾の特徴 |
05-humor.md |
ネタ・ユーモア表現 |
06-tech-writing.md |
技術説明の書き方 |
07-self-deprecation.md |
自虐・謙遜表現 |
08-closing.md |
記事の締め方 |
09-emphasis.md |
強調・装飾の使い方 |
10-titles.md |
記事タイトルの特徴 |
11-phrases.md |
よく使うフレーズ集 |
12-checklist.md |
執筆チェックリスト・絵文字 |
たとえば 05-humor.md にはこんな感じで書いてあります。
## ゲーム・アニメ・漫画ネタ
| 元ネタ | 使用例 |
|--------|--------|
| ガンダム | `こいつ…動くぞ…!` |
| デスクリムゾン | `せっかくだから、俺はこの〇〇を選ぶぜ!` |
過去記事からパターンを抽出して、こういうのが自動で蓄積されていく仕組みです。すごい(KONAMI)
4つのスラッシュコマンド
| コマンド | 機能 |
|---|---|
/new-article |
新規記事ファイル + リサーチディレクトリ作成 |
/outline-article |
リサーチ結果から構成案を作成 |
/write-article |
スタイルガイドに沿って記事を執筆 |
/analyze-style |
公開記事からスタイルパターンを分析・蓄積 |
実際の執筆ワークフロー
実際にどう使うかというと、こんな感じ。
1. 記事を初期化
/new-article my-awesome-article
これで articles/my-awesome-article.md と src/my-awesome-article/report.md が生成されます。
2. リサーチ結果を書く
src/my-awesome-article/report.md に調べた内容をメモ。Claude Codeに調べさせてもいいし、自分で書いてもいい。
3. 構成案を作成
/outline-article my-awesome-article
リサーチ結果から構成案が src/my-awesome-article/index.md に生成されます。
4. 記事を執筆
/write-article my-awesome-article
スタイルガイドを参照しながら記事を書いてくれます。ここで「俺っぽい文章」が出てくるわけですね。
5. 公開後にスタイルガイド更新
記事を published: true にしてコミットしたら、次のステップ。
/analyze-style
公開した記事を分析して、新しい文体パターンがあればスタイルガイドに追加されます。
これを繰り返すと、記事を書くたびにスタイルガイドが育っていくわけです。
Lefthookで忘れない仕組み
ここで問題が一つ。
「記事公開したあとに /analyze-style 実行するの、絶対忘れるやん」
せやろなあ…
というわけで、Lefthookでpost-commitフックを設定しています。
post-commit:
commands:
notify-published-articles:
run: |
# 未分析の公開記事を検出して通知
記事を公開してコミットすると、こんな感じで通知が出ます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📝 新しい記事が公開されました!
- articles/my-awesome-article.md
💡 Claude Code で /analyze-style を実行すると
.claude/style-guide/ を更新できます
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
これで忘れない。オレの勝ち。
使い方
新規で使う場合
- Use this template でリポジトリをコピー
npm installnpx lefthook install
以上。簡単すぎて涙出るね。
既存のZennリポジトリに統合する場合
すでにZennリポジトリを持っている人は、セットアップスクリプト実行でOK。
# リポジトリのルートで実行
curl -fsSL https://raw.githubusercontent.com/s-0-a-r/zenn-claude-writing-template/main/setup.sh | bash
または手動で以下をコピー
-
.claude/ディレクトリをコピー -
CLAUDE.mdをコピー -
lefthook.ymlをコピー
ほいで、lefthookをお好きな方法で入れてください。
まとめ
- Claude Codeに記事を書かせると文体がバラバラになる問題があった
- 過去記事を分析してスタイルガイドを自動生成する仕組みを作った
- 記事を書くたびにスタイルガイドが育っていく
- Lefthookで分析を忘れない仕組みも入れた
- テンプレートとして公開したので使ってみてほしい
ちなみにこの記事も、このテンプレートを使って書いています。ほぼ手直しなし。強いよね。
みんなもこれ使って爆速でアウトプットしような。
超蛇足
ワイはZettelkasten信者なのでブログネタはObsidianで管理してます。
(というか勝手に溜まっていきます)
Zettelkastenの記事、いつか書きたいね。
スペースを簡単に貸し借りできるサービス「スペースマーケット」のエンジニアによる公式ブログです。 弊社採用技術スタックはこちら -> whatweuse.dev/company/spacemarket
Discussion