自分のブログ(旧 blog.tnmt.info / Ghost)と日記(旧 3min.tnmt.info / tDiary)の過去記事をMarkdownでエクスポートし、それを元に文体ガイド WRITING.md を作った。

やりたかったこと

@shibayu36さんが「自分の文体を真似てClaude Codeにブログ記事を書かせる」という記事で、ブログリポジトリに文体ガイド WRITING.md を置くアプローチを紹介していた。@gosukenator(mizzyさん)もこれを参考に自身のブログリポジトリにWRITING.mdを作っていた

これがあると、AIに記事の下書きや推敲を頼む際に自分の文体を再現しやすくなる。良さそうだなと思ったので自分もやることにした。

もうひとつの背景として、旧ブログ(Ghost)と旧日記(tDiary)をこのサイトに統合したことがある。統合にあたって過去記事を全てMarkdownに変換する作業が発生したので、せっかくなら文体分析もやってしまおうという流れだった。そもそもバラバラだったサイトをひとつにまとめたかったのは、自分のコンテンツを自分のドメインひとつで管理したいという気持ちがあったから。コンテンツが一箇所にまとまったことで、文体ガイドも作りやすくなった。

やったこと

1. 過去記事のエクスポート

サイト統合の際に過去記事を全てMarkdownファイルとしてエクスポートしていたので、これを文体分析の元データとして使った。

Ghost (blog.tnmt.info)

Ghost Admin APIを使って全記事を取得するPythonスクリプトを書いた。Ghost Admin APIはJWT認証が必要で、APIキーからHS256でトークンを生成する。取得したHTMLは html2text でMarkdownに変換し、frontmatter(title, date, tags, slug)を付けて保存している。変換精度は完璧ではないが、文体分析の元データとしては十分だった。90記事をエクスポートした。

tDiary (3min.tnmt.info)

tDiaryは .td2 という独自フォーマットでデータを持っている。ヘッダー部(Date, Title, Format等)と本文(GFM Markdown)がドット区切りで並ぶ構造なので、これをパースして日付ごとのMarkdownファイルとして保存するスクリプトを書いた。こちらは外部ライブラリ不要。

2. WRITING.md の作成

エクスポートした記事を読み込んで、文体の特徴を分析した。自分の文章の癖として気付いたのはこんなところ。

  • だ・である調をベースにしつつ、です・ます調も混ぜるカジュアルな文体
  • 一人称は文脈で「自分」と「俺」を使い分けている
  • 建前と本音を分けて書く癖がある(「〜がキッカケ。ではあるが〜が本音」)
  • 締めにユーモラスなオチをつけがち
  • 技術記事は短く、ふりかえり記事は長い

これらをカテゴリ別(技術Tips、開発環境、ふりかえり、イベント参加)のテンプレートと合わせて WRITING.md にまとめた。

日記の書き方も一応入れたが、正直なところ日記は日記なのでスタイルガイドにするほどのものでもなかった。その日あったことを思ったまま書くだけなので、ガイドで縛るものでもない。結果として「短くカジュアルに書く」「完璧を求めない」くらいしか書くことがなく、まあそれはそうだよなという感じ。ブログの方は記事カテゴリごとに構成パターンが違うので、こっちはガイドにした甲斐があった。

3. リポジトリ構成

現在このサイトは Hugo + PaperMod で構築しており、WRITING.md はリポジトリのルートに置いている。

tnmt.info/
├── WRITING.md              # 執筆スタイルガイド
├── CLAUDE.md               # Claude Code 向け指示
├── hugo.toml               # Hugo 設定
├── content/
│   ├── blog/               # ブログ記事 (年/slug)
│   │   └── 2026/
│   │       └── setup2026/
│   │           └── index.md
│   └── diary/              # 日記 (年/月/YYYY-MM-DD.md)
│       └── 2026/
│           └── 01/
│               └── 2026-01-30.md
├── layouts/                # テンプレート
├── scripts/                # ユーティリティスクリプト
└── themes/PaperMod/        # テーマ (submodule)

使い方

Claude Code等のAIツールでこのリポジトリを開き、記事の下書きや推敲を頼む際に WRITING.md と過去記事を参照させることで、自分の文体に近い出力が得られる。例えばこの記事自体も WRITING.md を参照した上で書いている。

感想

自分の文体を言語化するのはなかなか面白い体験だった。2009年から書いているブログの記事が一覧で手元にあるのは、それだけでも感慨深い。長く書き続けていると文体も変わるもので、初期の記事と最近の記事では結構雰囲気が違う。

ということで、この仕組み自体を紹介する記事がこの仕組みで書いた最初の記事になった。自己言及的。