Qiitaの記事から自社サイトへのリンク、押せるのは記事の上だけだった — 12本を数えて、置き場の印が無いと出せない見張りを書いた
当社は 2026-09-22 から、自社で測った数字を Qiita に毎日1本ずつ書いています。どの記事にも、数字の出どころとして、自社サイトの元データのページへのリンクを置いてきました。
ところが、記事から自社サイトに来た人は、ほとんどいませんでした。そこで、リンクが記事のどこに、押せる形で置いてあったのかを数えました。
結論から書きます。2026-09-22〜2026-10-03 に出した12本のうち9本は、元データへ押せるリンクが記事の上の1か所だけでした。記事の末に押せるリンクは0本です。末に書いた元データの URL は、12本とも引用の形のコードの枠の中にあり、押せませんでした。 さらに、要求ログに残る送り主は qiita.com/ だけで、どの記事のどのリンクから来たかは分かりませんでした。
この記事の数字の出どころは、当社サイトに置いた元データです(12本ごとの置き場・本文の位置・要求ログの送り主・この数字で言えないことつき)。
→ 元データ:Qiitaの記事12本のリンクの置き場
1. 押せるリンクを数える
Qiita の本文は Markdown です。コードの枠(```)の中に書いた URL は、リンクになりません。行内のコード()の中も同じです。そこで、枠の外にある自社サイトの URL だけを拾い、最初と最後の ## ` 見出しで「上・中・末」に分けました。
import re
SITE = re.compile(r"https?://(?:www\.)?braincommunity\.jp[^\s)\]>\"'*<]*")
def clickable_links(body):
lines = body.split("\n")
total = max(len(body), 1)
offset, in_code = 0, False
links, headings = [], []
for i, line in enumerate(lines):
if line.startswith("```"):
in_code = not in_code
elif not in_code:
if line.startswith("## "):
headings.append(i)
text = re.sub(r"`[^`\n]*`", " ", line)
for m in SITE.finditer(text):
links.append((i, (offset + m.start()) / total, m.group(0)))
offset += len(line) + 1
return links, headings
def place(i, headings):
if not headings or i < headings[0]:
return "top"
if i > headings[-1]:
return "end"
return "mid"
12本を数えた結果です。
| 元データへ押せるリンクの置き場 | 本数 |
|---|---|
| 上の1か所だけ | 9 |
| 上と中に1つずつ | 2 |
| 上に2つ | 1 |
| 末に在る | 0 |
| 計 | 12 |
上のリンクの位置は、本文の3%〜14%でした。記事を読み終えたところには、押せるリンクがありません。
2. どの記事から来たかは、送り主では分からない
要求ログで、送り主が qiita.com の来訪を、2026-09-10〜2026-10-04 の分すべて見ました。5回あり、当社の回線からの分を除くと、外からは2回です。送り主に残っていたのは、5回とも qiita.com/ だけでした。記事のアドレスは残っていません。
外からの2回は、どちらも AIクローラの名乗りを照合した元データのページに来ていました。そのページへ押せるリンクを持つ記事は1本だけで、置き場は上(本文の10%)です。今回は、着地したページと記事のリンクを突き合わせて推せました。記事が増えると、この推し方はできなくなります。
ここまでの数字(12本ごとの置き場と本文の位置、要求ログの送り主)は、元データに載せています → 元データを見る
3. 置き場の印が無ければ出さない
2026-10-04 から出す記事は、元データへのリンクを上・中・末に1つずつ置き、どこから来たかを数える印(UTM)を付けます。投稿の前の見張りが、この形になっていない記事を止めます。
from urllib.parse import urlsplit, parse_qs
POSITIONS = ("top", "mid", "end")
def check(body, date, data_path):
links, headings = clickable_links(body)
campaign = "qiita_" + date.replace("-", "")
found, errors = {}, []
for i, ratio, url in links:
q = {k: v[0] for k, v in parse_qs(urlsplit(url).query).items()}
if q.get("utm_source") != "qiita" or q.get("utm_campaign") != campaign:
errors.append("no utm: " + url)
continue
pos = q.get("utm_content")
if pos in POSITIONS and urlsplit(url).path == data_path:
found.setdefault(pos, []).append((i, ratio))
for pos in POSITIONS:
if len(found.get(pos, [])) != 1:
errors.append("need exactly one link: " + pos)
if len(headings) >= 2:
first, last = headings[0], headings[-1]
for i, ratio in found.get("top", []):
if i >= first:
errors.append("top is after the first heading")
for i, ratio in found.get("mid", []):
if not (first < i < last and 0.2 <= ratio <= 0.8):
errors.append("mid is not in the middle")
for i, ratio in found.get("end", []):
if i <= last:
errors.append("end is before the last heading")
return errors
中のリンクは、最初と最後の見出しの間で、本文の20%〜80%の位置に置きます。引用の形のコードの枠の URL には、印を付けません。引用する人の出典に、当社の計測の印を混ぜないためです。
この記事も、この形で出しています。
当社はこう読んだ
- 押せるリンクの場所を、数えたことがなかった。 末に URL を書いたつもりでも、引用の枠の中で押せませんでした。
-
送り主だけでは、どの記事が効いたか分からない。 Qiita からの送り主には
qiita.com/しか残りません。 - 外から来た人が少ないことを、置き場のせいとは言わない。 置き場を変えた記録が、まだ無いからです。2026-10-04〜2026-10-17 の14日を、2026-10-18 に同じ測り方で測り直します。
この数字で言えないこと
- 数えたのは、2026-10-04 に公開されていた本文です。
- 押せるかどうかは Markdown の決まりで分けました。Qiita の画面で、1つずつ押して確かめてはいません。
- 外から来たのは2回で、置き場と押されやすさの関係は、この数からは言えません。
- 当社のアカウント1つ・12本の記録です。
元データと引用のしかた
12本ごとの置き場・本文の位置・要求ログの送り主・この数字で言えないことは、当社サイトに置いています → 元データを見る
数字を引用するときは、記事ではなく元データを出典にしてください。そのまま貼れる形はこうです。
出典:ブレインコミュニティ合同会社「Qiitaの記事12本:当社サイトの元データへ押せるリンクは、9本が記事の上の1か所だけだった(当社サイト・2026-09-22〜2026-10-03)」
https://braincommunity.jp/jissoku/qiita-link.html (2026-10-04 測定)
当社が自分で測ったほかの数字も、同じ置き場にまとめています。
→ 当社が自分で測った数字
業務システムの内製化と、AI活用の受託開発をしています。
ブレインコミュニティ合同会社 — braincommunity.jp