Twitterに自動投稿できる文字数について。(URLは長さに関係なく23文字!)


概要

Twitterの自動投稿Botを作っていて、文字数制限がややこしかったので、色々試してみました。
特にURLは長さに関係なく23文字扱いだそうで。
折角色々試したので、残しておきます。

前提

PHPで実験しています。
また、外国語のややこしい文字についてのテストはしていません。

結論

実験の様子は後で書くとして、先に結論。


  • 文字数は、全角2文字、半角1文字として計280文字まで。

  • URLは、長さに関係なく23文字としてカウントされる。(なので、全文字数が280文字未満でアウトになったり、超過してもセーフのケースがある)

  • TwitterがURLと認識しなかった場合は、当然23文字ルールは適用されない

実験の様子

結論は上記の通りなのだけど、エビデンスとして。
実験に使ったコードの文字列を書いておきます。
なお、コメントの~文字は、全て半角換算で記載しています。
※ちなみに、同じツイートを連投するとエラーになるようなので、実験の際はご注意ください。

// 280文字、URL含まず⇒OK(\nは1文字としてカウントされます)
$str="テストしてます。111\n01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";

// 281文字、URL含まず⇒NG(\nは1文字としてカウントされます)
$str="テストしてます。111\n012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890";

// 280文字、URLを含むがURLと認識せず⇒OK
$str = "テストしてます。111\n0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123https://mixi.jp/";

//280文字、URLと認識⇒NG(URL自体は16文字なのだが、23文字としてカウントされたのでNG)
$str = "テストしてます。111\n012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012 https://mixi.jp/";

//258文字+URL⇒NG(URLは22文字として認識される、という記事を見かけたので境界値テスト。NGなので23文字以上という事がわかりました)
$str = "テストしてます。1111012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 https://mixi.jp/";

// 257文字+URL⇒OK(境界値テストその②。OKなのでURL=23文字扱い確定)
$str = "テストしてます。111101234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345 https://mixi.jp/";

// 257文字+長いURL⇒OK(文字数は458文字)
$str = "テストしてます。111101234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345 https://www.google.com/search?q=php+%E6%96%87%E5%AD%97+%E3%83%90%E3%82%A4%E3%83%88%E6%95%B0&oq=php+%E6%96%87%E5%AD%97%E3%80%80%E3%83%90%E3%82%A4%E3%83%88%E6%95%B0&aqs=chrome..69i57j0.9445j0j9&sourceid=chrome&ie=UTF-8";

最後に

以下は弊社の宣伝になります。

現在弊社では、HRモンスターと呼ばれる
採用の新しいスタイルを提供するサービスをローンチいたしました。

ローンチ後のさらなる機能追加、改善などのPDCAサイクルを回すべく、
エンジニアを募集しております。
https://www.wantedly.com/projects/341182

Kubernetes、Vue.js(Javascript)、Django(Python)といったモダンな技術を使って、
開発しておりますので、もしご興味がある方はぜひ、ご応募お待ちしております。