AIを使って文章を書く(Cline / Cursor)

最初に

  • 私はこのブログを書いてきてAIを使ったことは一度もない
    • このブログは趣味だし、自分の人格を出したいから
  • 一方、仕事で技術文章を書くことはある。それも楽しく書いている。
  • 楽しく書いている一方、ここまでAIライティングが流行ると、それをAIライティングでやってみたい、という興味が湧いてくる
  • AIライティングによって文章作成の仕事をなくしたい、というより、AIライティングで自分の人格が乗った文章を作成できれば、もっとたくさんの文章=価値が生み出せるのではないか、と考えている

目的

  • AIライティングを使って、自分の人格が乗った文章を生成したい

収集した情報

私が調べた情報には1.ブログ記事を書く、2.小説を書くの2種類がありました。小説は登場人物や物語構成などブログ記事を書くよりも大分レベルが高い内容だと感じました。私の目的は自分の人格の乗ったブログ記事を書くことなので、今回はブログ記事をAIで書かせる情報を採用します。

基本的な考え方

必須なのが、自身の文体・語調を記録した ライティングスタイルファイル。これは、自分で自分のライティングスタイルを言語化できればいいがそれも面倒なので、今までに自分が書いた過去の記事群をAIに分析させ、ライティングスタイルファイルを作ってもらいます。

これをベースにAIライティングを進めればよいが、テーマによってはサンプルテキストやナレッジを与えてやるとより精度が上がる。

また、自分はソリッドに文章を書くのが好きなので、そういった人格を個人プロフィールとして定義するのもよいかもしれない(これはライティングスタイルに書いてもいいかも)

サンプルテキストやナレッジはテーマ毎に変更する想定でいいだろう。例えばこの仕組みをチーム内で使いまわす場合、各人の人格に合わせたライティングスタイル・個人プロフィールを用意し、ブログテーマに合わせたサンプルテキストやナレッジを編集者が用意することで、同じテーマでも別の人格表現によって記事がかける、ということになるかもしれない。

やってみる

1. ライティングスタイルだけを用意して記事を書いてみる

まずはシンプルな形で試します。ライティングスタイルを書いてもらうために、過去に自分が書いた文章を用意する必要があるのでそれをやります。これはAIライティングの本筋とはずれるので、別エントリにまとめました。

WordPress文章をローカルのmarkdownファイルにまとめる | pblog

2. 用意した文章の中から使えるものを選別する

私の場合、このブログを全てエクスポートしたので記事が2,000個弱ありますし、20年前の記事もあります(若かりし頃の日本語が不自由なエントリ…)。ということで、以下の基準で選別します。

  • 捨てるもの
    • 文章力の安定してきた、直近5年程度のエントリのみ採用。それより過去の記事は捨てる
    • 書きなぐり的な記事は省く
  • 選別するもの(もしかして捨てるかも)
    • 旅行記のような写真多めの記事は分ける
      • 写真や地図前提の構成になっているので、文章だけの記事とは毛色が違う

…と思ったけど、記事数が多すぎて「直近5年程度のエントリのみ採用」しかできませんでした。これ、テーマ毎にブログを分けている人とかの方が楽にできそう。

3. Clineに依頼して「ライティングスタイル」を分析し、ルールを作成する

mywroteフォルダ配下に分析対象の記事を補完後、以下のように命令しました。

mywrote は自分が ブログ に書いた記事です。 AIが書いたとバレない範囲で、ブログの記述を自動化したいです。 記事一覧から私の技術の方向性を抽出し、そこからランダムに読んでください。最低限、10記事は読んでください。 そこから私の人格と文体を抽出して、それを docs/writing-style.md に抽出してください。 最終的には、それをベースに記事を執筆してもらいます。

これでひとまずwriting-style.mdができました。以下です。

# ブログ記事執筆スタイルガイド

本ガイドは、過去の記事から抽出した、私の技術の方向性、人格、文体、および具体的な表現の傾向を反映しています。今後の記事自動生成や執筆のベースとして、読者にとって有益で読みやすいコンテンツの提供を目指します。

---

## 1. 基本方針

### 技術の方向性
- **多様な技術・ツールへの関心:**  
  Webサービス、クラウドサービス、ソフトウェア開発など、多岐にわたる技術分野に精通している。
- **実用性と効率重視:**  
  実務に直結する実践的なアドバイスや解決策を中心に、効率的な情報提供を行う。
- **最新技術の採用:**  
  時代に合わせた最新トレンドや技術を積極的に取り入れる姿勢がある。

### 人格と文体の基本特徴
- **客観的かつ論理的:**  
  論理構成が明確で、具体例や客観データを交えながら正確な技術的事実を伝える。
- **親しみやすく温かみのある表現:**  
  丁寧な語り口(「〜です」「〜ます」を基本)を用いつつ、時折ユーモアや個人的視点を取り入れて親近感を演出する。
- **探求心と情熱:**  
  技術革新や新しい挑戦に対する意欲を感じさせ、読者に新たな発見と学びを提供する。

---

## 2. 表現および文体の詳細

### 基本の言い回しと表現
- **敬語と柔らかい語調:**  
  基本は「〜です」「〜ます」などの丁寧な表現を使用し、堅苦しさを避けるために柔らかく親しみやすい語彙を取り入れる。
- **シンプル且つ具体的な表現:**  
  長ったらしい表現は避け、短い文章や箇条書きを効果的に用いて要点を明確に伝える。
- **口語体と論理的表現のバランス:**  
  自身の実体験や具体例を交えながら、論理的な展開を重視する。必要に応じて口語的な省略形や繰り返し表現も用いる。

### 語尾・文末の傾向
- **丁寧な敬語と断定的な表現:**  
  文章の結びは「〜です」「〜ます」を基本としながらも、「〜である」や「〜と考えられる」などの断定的な表現を適宜用いる。
- **柔らかさを保つ工夫:**  
  堅苦しさを避けるため、感嘆符や疑問符を取り入れることで、文全体のリズムと親近感を演出する。

### 全体の文章構成と印象
- **平易な日本語と専門用語のバランス:**  
  読者層を限定せず、幅広い層に理解しやすい表現を心がける。
- **整理された段落構成と箇条書き:**  
  適切な改行や段落分け、箇条書きの活用により、視覚的に情報を整理し、読みやすさを向上させる。
- **実体験と客観データの融合:**  
  個人的な経験と客観的な解説をバランスよく組み合わせ、説得力のある記事構成とする。

課題と解決策

これで試しにテーマを与えて生成しましたが、しっくりきませんでした。生成AI臭が残るような、自分が書いたのじゃないような…。

ここからどうしよう?このアプローチだと、 学習データを絞っても抽象的なwriting-style.mdしか作ってくれなさそう だ。

で、思ったのは文章を生成しまくって、気に入らない表現をかたっぱしから具体的に禁止していくようにしました。例えば以下のようなものです。

## 3. 表現および文体の詳細(より具体的な内容)

- 丁寧すぎる表現は堅苦しく読者との距離感を出すため、禁止する
    - 禁止表現例1:解説いたします。
    - 代替表現例1:解説します。
    - 禁止表現例2:ご活用いただけます。
    - 代替表現例2:活用できます。

最終的に、禁止パターンは5つくらいになり、これをベースに生成すると70%くらい満足するような記事が出来ました。

いざ記事が出来てみると「まるで自分が書いたのか?」と思えるような内容で不思議であり気味が悪くもあり…という感じです。

これからやること

このブログでは一番シンプルなパターンで実現したので、まだまだ精度を高めることが出来そうです。

1. 記事パターン別にサンプル記事、writing-style.mdを用意する

このブログであれば、旅行記と考察記事では全く構成や文体が違うので、それらを別カテゴリにしてwriting-style.mdを作成する

※ このブログを投稿した後実施したけど、同じようなwriting-style.mdが生成されてしまったのでやり方を変える必要があるかも?

2. 推奨する表現や、文体のクセを具体的に定義する

句読点の使い方、記号の使い方などを詳しく指定すればよいかも?

雑談:思ったこと

世は大生成LLM時代。感じたのは「文章読むの、めっちゃ大変」ということです。長文を簡単に生成できるのをよいことに、あるトピックについて解説する記事の場合、前段の説明~メインまでずっと長文続き。スキがなく間違いがない、と・すべての人を対象読者にできる、というのもありますが、長文すぎて読んでてしんどいです。

こうなってくると、生成LLM時代はただ文章を作成できるのは当たり前、それに加えて以下のような手法で差別化するしかないと思っています。

  • 特定のターゲットに向けて文章をとがらせる
  • 人格を出し、ファンを付ける
  • 図解をして分かりやすくする
  • 漫画や動画で表現する

など、単純な文章生成だけにとどまらない価値が必要だなと感じました。