最終更新:
Bluesky の文字数制限と投稿のコツ
Bluesky は分散型プロトコル AT Protocol 上に構築された SNS です。X (旧 Twitter) の共同創業者ジャック・ドーシー氏が 2019 年に Twitter 社内で発表した分散化プロジェクトを起源とし、アプリは 2024 年 2 月に招待制を外して一般公開されました。投稿の文字数制限は 300 文字ですが、この「300 文字」の数え方には他の SNS にはない独自の仕組みがあります。本記事では、AT Protocol の技術仕様に踏み込みながら、文字数制限の背景と効果的な投稿術を解説します。
書記素クラスタカウント - Bluesky 独自の文字数計算方式
Bluesky の文字数カウントは「書記素クラスタ (grapheme cluster)」単位で行われます。これは Unicode 標準の UAX #29 で定義された、人間が「1 文字」と認識する最小単位です。この方式は X や Threads のカウント方法とは根本的に異なります。
具体的な違いを見てみましょう。絵文字の肌色バリエーション「👋🏽」は、内部的には U+1F44B (手を振る絵文字) と U+1F3FD (肌色修飾子) の 2 つの Unicode コードポイントで構成されています。X ではこれを 2 文字としてカウントしますが、Bluesky では書記素クラスタとして 1 文字です。同様に、国旗絵文字「🇯🇵」は 2 つの Regional Indicator コードポイント (U+1F1EF + U+1F1F5) から成りますが、Bluesky では 1 文字としてカウントされます。
この仕組みは、家族絵文字のような複合絵文字でさらに顕著です。「👨👩👧👦」は 7 つのコードポイント (4 つの絵文字 + 3 つの ZWJ) で構成されますが、Bluesky では 1 文字です。X では絵文字は構成の複雑さにかかわらず一律 2 文字分としてカウントされるため、この絵文字も 2 文字扱いです。絵文字を多用する投稿では、1 個あたりのカウントが小さい Bluesky のほうが実質的に多くの情報を詰め込めます。
| 投稿に入れる絵文字 | 内部のコードポイント構成 | Bluesky の消費 (書記素クラスタ) | X の消費 (絵文字は一律 2 文字) |
|---|---|---|---|
| 👋🏽 手を振る (肌色付き) | U+1F44B + U+1F3FD (2 コードポイント) | 1 文字 | 2 文字 |
| 🇯🇵 国旗 | U+1F1EF + U+1F1F5 (2 コードポイント) | 1 文字 | 2 文字 |
| 👨👩👧👦 家族 | 絵文字 4 + ZWJ 3 (7 コードポイント) | 1 文字 | 2 文字 |
| 3 個の合計 | 11 コードポイント | 3 文字 | 6 文字 |
本文がまったく同じでも、絵文字の消費分だけ残りの文字数が変わります。上限は Bluesky が 300 文字、X が 280 文字です。書記素クラスタで数える Bluesky では、絵文字の内部構成がどれだけ複雑でも 1 文字のままです。
Bluesky の文字数制限一覧
| 項目 | 文字数上限 | カウント方式 | 備考 |
|---|---|---|---|
| 投稿 (ポスト) | 300 文字 | 書記素クラスタ | UTF-8 で 3,000 バイトの上限も併存 |
| 表示名 | 64 文字 | 書記素クラスタ | プロフィールに表示 |
| プロフィール (自己紹介) | 256 文字 | 書記素クラスタ | Bio 欄 |
| リプライ | 300 文字 | 書記素クラスタ | 投稿と同じ制限 |
| ハンドル名 | 253 文字 | 文字数 | DNS ドメイン名の形式に従う |
| リスト名 | 64 バイト | UTF-8 バイト数 | 書記素の上限がない唯一の項目 |
| リスト説明 | 300 文字 | 書記素クラスタ | リストの説明文 |
| ALT テキスト (画像説明) | 2,000 文字 | 書記素クラスタ | アクセシビリティ用 |
この表で見落としやすいのがリスト名です。AT Protocol のスキーマ定義では、長さ制約は書記素クラスタ数を指定する形式とバイト数を指定する形式の 2 種類があり、後者は UTF-8 バイト数で数えます。リスト名は後者だけが設定されているため、日本語のようにほとんどの文字が 1 文字 3 バイトを消費する言語では、体感で 21 文字前後しか入りません。「英数字なら 64 文字入るのに日本語だと途中で止まる」という現象はこれが原因です。
投稿本文にも同じ二重構造があり、書記素クラスタ 300 とバイト数 3,000 の両方が定められています。日本語では 300 文字書いても 900 バイト程度にとどまるため、実際に先に当たるのは書記素側の 300 です。逆に絵文字を大量に並べた場合は 1 個で 10 バイト以上を消費することもありますが、それでも 300 個並べるほうが先に上限に達します。バイト上限は事実上の安全弁で、日常の投稿で意識する必要はありません。
ハンドル名の 253 文字という値は、ハンドルが DNS のドメイン名としても機能することに由来します。DNS 名の長さ制約を踏襲したものと考えれば覚えやすいでしょう。ALT テキストは 2,000 文字まで入力できるため、視覚障害のあるユーザーに対して画像の内容を十分な分量で説明できます。
300 文字はどこで決まっているのか - プロトコルとアプリの境界
「300 文字」を Bluesky という会社が握っている数字だと思うと、この SNS の構造を読み違えます。上限が書かれているのは AT Protocol の中核仕様ではなく、Bluesky アプリが使うスキーマ定義のほうです。投稿の形を決めるスキーマにテキスト長の制約が書かれており、Bluesky のアプリとサーバーはその定義に従って入力を弾きます。
つまり 300 文字はプロトコルの物理的な限界ではなく、Bluesky というアプリケーションの設計判断です。同じ AT Protocol の上に別のアプリを載せれば、そのアプリは自前のスキーマで 500 文字でも 1,000 文字でも定義できます。X の 280 文字制限のような中央集権型サービスの上限と、見た目は同じ「文字数制限」でも成り立ちが違うわけです。
この違いは実務で 2 つの意味を持ちます。1 つは、Bluesky の投稿データを別のクライアントから読む場合、300 文字はあくまで書き込み時の検証値であって、データ構造そのものの制約ではないという点です。もう 1 つは、上限がスキーマ定義という公開された場所に書かれているため、変更があれば誰でも差分として確認できるという点です。仕様の根拠を確かめたいときは、運営の告知を待つのではなくスキーマ定義を見るのが最短経路になります。
Facets - Bluesky のリッチテキスト処理と文字数への影響
Bluesky の投稿には「Facets」と呼ばれるリッチテキスト機能があります。リンク、メンション (@)、ハッシュタグを本文のどの範囲に対応させるかを、別の領域に注釈として記録する仕組みです。ここで押さえておきたいのは、Facets 自体は文字数を消費しないという点です。装飾のためのタグを本文に埋め込む方式ではないため、リンクにしてもメンションにしても、カウントされるのは画面に見えている本文の文字列だけです。
この設計から、URL の扱いが 2 通りに分かれます。本文中に URL を書けば、その文字列はそのまま本文の文字数を消費します。「https://example.com/very-long-path/to/article」なら 45 文字です。一方、リンクカード (外部サイトのプレビュー) の URL は本文テキストとは別のフィールドに保存されるため、本文の 300 文字とは別枠になります。ただし、本文に書いた URL 文字列を残したままカードを付ければ、その文字列の分は当然カウントされます。文字数を節約したいなら、カードを付けたうえで本文側の URL をどう扱うかまで確認するのが確実です。
メンション (@ユーザー名) は、本文に書いたテキストがそのまま文字数になります。「@alice.bsky.social」と記述すれば 18 文字です。Bluesky のハンドルはドメイン名の形をとるため、X の短い ID に比べて長くなりがちです。独自ドメインの短いハンドルを持つ相手なら数文字で済みますが、既定の bsky.social ドメインのままの相手を複数メンションすると、それだけで数十文字が消えます。
300 文字で効果的に伝える 5 つのコツ
- 結論ファーストで書く。300 文字はタイムライン上ではほぼ全文が表示される長さですが、読者が読み進めるかどうかは冒頭の 1〜2 行で決まります。最も伝えたいメッセージを先頭に置き、理由や補足を後ろに回しましょう。
- 不要な修飾語を削る。「非常に」「とても」「基本的に」などの副詞を削るだけで 10〜20 文字節約できます。日本語の場合、「することができます」を「できます」に置き換えるだけで 5 文字の節約です。
- 改行で読みやすさを確保する。スマートフォンでの閲覧が中心のため、3〜4 行ごとに空行を入れると視認性が向上します。ただし、改行も 1 文字としてカウントされるため、改行の入れすぎには注意が必要です。
- リンクカードを活用する。カードの URL は本文とは別のフィールドに入るため、本文側に長い URL 文字列を残さずに済めば、その分を説明文に回せます。長いパスを持つ URL では数十文字の差になります。
- 投稿前に文字数カウントスで文字数を確認。書記素クラスタ単位のカウントは手動では正確に把握しにくいため、ツールでの事前チェックが安心です。
よくある失敗パターンと回避策
Bluesky での投稿で陥りがちな失敗を、原因と対策を含めて紹介します。
- X と同じ感覚で書き、300 文字に収まると油断して推敲を怠る。X の 280 文字に慣れたユーザーは、20 文字の余裕があるからこそ冗長になりやすい傾向があります。300 文字に収まったからといって推敲を省略せず、「この文は本当に必要か」を 1 文ずつ検証しましょう。
- ハッシュタグを並べて埋める。Bluesky でもタグは検索やフィードの条件として機能しますが、タグの数を増やすこと自体が露出を保証するわけではありません。タグ 1 つにつき「#」を含めて 5〜15 文字を消費するため、3 つ付けるだけで 15〜45 文字が本文から削られます。タグに文字数を割くより、本文にフィードが拾う語を自然に含めるほうが割がよいでしょう。
- 他の SNS からのコピー投稿をそのまま貼り付ける。X の 280 文字に最適化された文章は Bluesky では中途半端になり、Threads の 500 文字向けの文章は大幅にカットが必要です。さらに、書記素クラスタカウントの違いにより、X で 280 文字ぴったりの投稿が Bluesky では異なる文字数になることがあります。プラットフォームごとに最適化しましょう。
- 長い URL をそのまま本文に貼る。「詳しくはこちら → https://...」という書き方では、URL 文字列の長さがそのまま本文の 300 文字から引かれます。X のように URL が一律の文字数に短縮される仕組みはないため、パスの長い URL ほど不利です。リンクカードを添付し、本文には内容の要約を書きましょう。
プロのテクニック
- カスタムフィードを活用する。Bluesky の最大の特徴は、アルゴリズムをユーザーが選べる点です。カスタムフィードはキーワード、言語、インタラクション数などの条件で投稿をフィルタリングします。自分の投稿が表示されやすいフィードを把握し、そのフィードのテーマに合った投稿を心がけると、リーチが拡大します。たとえば日本語の技術系フィードに拾われたい場合、技術用語を含む日本語投稿を意識的に行うことが有効です。
- 独自ドメインをハンドルに設定する。Bluesky ではドメイン認証により、自分のウェブサイトのドメインをハンドル名として使用できます (例: example.com)。設定方法は DNS の TXT レコードに認証トークンを追加するか、ドメインの .well-known/atproto-did ファイルに DID を記載するかの 2 通りです。信頼性の向上とブランディングに効果的で、なりすまし防止にも役立ちます。
- スレッド機能で長文を展開する。300 文字で収まらない内容は、リプライを連ねるスレッド形式で投稿できます。1 投稿目にフックとなる結論や問いかけを置き、2 投稿目以降で詳細を展開する構成が効果的です。スレッドの各投稿もそれぞれ 300 文字の制限が適用されるため、各投稿が独立して意味を持つよう構成しましょう。
- 画像の ALT テキストを活用する。ALT テキストは 2,000 文字まで入力できます。本文の 300 文字とは別枠なので、画像の詳細な説明をここに書けば、本文を圧迫せずに情報量を増やせます。ただし ALT テキストは画面上に常時表示されるものではないため、本文で伝えるべき結論を ALT 側に逃がさないことが前提です。
他の SNS との文字数比較 - カウント方式の違いに注意
| プラットフォーム | 投稿文字数 | カウント方式 | URL の扱い |
|---|---|---|---|
| Bluesky | 300 文字 | 書記素クラスタ | 短縮なし・本文の URL は文字数分そのまま消費 |
| X (Twitter) | 280 文字 (Premium: 25,000 文字) | NFC 正規化後のコードポイント | URL は一律 23 文字 (t.co 短縮) |
| Threads | 500 文字 | Unicode コードポイント | URL は文字数にカウント |
| Mastodon | 500 文字 (サーバーにより異なる) | サーバー実装依存 | URL は一律 23 文字 |
単純な文字数だけを比較すると Bluesky の 300 文字は X の 280 文字より 20 文字多いだけに見えます。しかし絵文字や結合文字を含む投稿では、書記素クラスタで数える Bluesky のほうが消費が小さくなります。逆に URL については、一律の文字数に短縮される X のほうが有利です。どちらが得かは投稿の中身で入れ替わるため、絵文字が多いか URL が多いかで使い分けるのが実際的です。SNS の文字数制限一覧も参考にしてください。
まとめ
Bluesky の 300 文字は、書記素クラスタで数えるという一点で他の SNS と性格が違います。絵文字がどれだけ複雑な構成でも 1 文字として扱われるため、見た目どおりの感覚で書けるのが強みです。一方で URL は短縮されず書いた長さのまま消費するので、リンクを含む投稿では本文とカードの使い分けが効いてきます。上限がスキーマ定義という公開された場所に書かれていることも押さえておけば、仕様の変化を自分で追えます。投稿前に文字数カウントスで文字数を確認すれば、制限オーバーを防げます。