01 / 本文
順位は悪くないのにクリックされない
技術ブログのSearch Consoleを見ると、数字がちぐはぐだった。
28日 クリック 1 ・表示 36 ・平均順位 6.4
90日 クリック 2 ・表示 83 ・平均順位 10.502 / 本文
平均順位6.4は1ページ目
平均順位6.4は検索結果の1ページ目。 技術的な不具合があるわけではない。インデックスも全部通っていて、未登録のエラーも無かった。
記事の厚さも足りていた。18本の本文は中央値2,945字で、1,000字を切るものは1本も無い。
それでも90日のクリックが2件しかない。順位でも、インデックスでも、本文の量でもない何かが効いている。
03 / 本文
表示が付いたクエリを見ると分かった
90日で名前が出たクエリは7件しかなく、そのうち2件が同じ技術ワードだった。
secrets: inherit 3 表示
github actions secrets inherit 1 表示04 / 本文
その語はタイトルの55字目にあった
該当する記事のタイトルは、サイト名を含めて78字あった。
GitHub Actionsの再利用ワークフローでSecretが空になり、メールが止まっていた|secrets: inherit を忘れた | 積み上げログ
↑ ここで切れる05 / 本文
検索結果に出ているのは先頭30字前後
日本語の検索結果でタイトルとして表示されるのは、おおむね先頭30字前後まで。ピクセル幅で決まるので文字数は目安だが、全角で30字を超えたあたりから切られる。
つまり検索した人が見ていたのは GitHub Actionsの再利用ワークフローでSecre までで、実際に検索された secrets: inherit は一度も表示されていなかった。
需要はある。順位も付いている。見えていなかっただけ。
06 / 本文
18本中17本が30字を超えていた
全記事のタイトル長を機械的に測ったら、1本を除いて全部が30字を超えていた。英数字のキーワードが切れる側に落ちていた記事も複数あった。
CUT = 30
for a in articles:
t = a['title']
head, tail = t[:CUT], t[CUT:]
lost = [w for w in re.findall(r'[A-Za-z_][A-Za-z0-9_.:-]{3,}', t)
if w in tail and w not in head]
if lost:
print(', '.join(lost), '→', t)07 / 本文
書き直し方
やったのは、検索語を文頭に出して、説明を後ろに回すだけ。記事は1行も書き足していない。
直す前 GitHub Actionsの再利用ワークフローでSecretが空になり、メールが止まっていた|secrets: inherit を忘れた
直した後 secrets: inherit 忘れでGitHub ActionsのSecretが空になる|再利用ワークフロー08 / 本文
サイト名の接尾辞も外した
記事ページのタイトルに | サイト名 を付けていると、その分だけ検索語が押し出される。記事ページでは付けないことにした。 全記事で7字ぶん戻った。
トップページや一覧ページには残してよい。切られて困る語が無いため。
09 / 本文
測り方
思い込みで直さないよう、順番を決めておくとよい。
- Search Console の クエリを見て、表示が付いている語を特定する
- その語が、記事タイトルの何字目にあるかを数える
- 30字を超えていたら、先頭に出す
- 本番の <title> をcurlで取り直して確かめる
平均順位が1桁なのにクリックが無いときは、まずタイトルの長さを疑う。 本文を書き足すより先にできて、効果が出るまでの時間も短い。
10 / 本文
まとめ
- 日本語の検索結果でタイトルが出るのは先頭30字前後
- 検索語が31字目以降にあると、検索した人には一度も見えない
- 順位が1桁でクリックが無いときの第一候補
- 記事ページのタイトルにサイト名を付けない
- 直したら本番の <title> を取り直して確かめる
コメント
この記事へのコメント
お名前だけで投稿できます。アカウント登録やログインは不要です。 いただいたコメントは確認のうえ公開します。