"""AhrefsとGraphiteの「上位ページのAI割合」を、同じ物差しで並べ直す。

入力は両社が公開している数字だけ（2026-10-08に原ページで確認）。
- Ahrefs (2025-07-07): 上位20位・約60万ページ。AI含有率ごとの内訳。
- Graphite (2025-10-14): 上位2ページ分・英語の記事。AI検出で「主にAI」。
- SE Ranking (2026-03-19): 新規20ドメイン・AI記事2000本の累計。
"""

# Ahrefs: 上位ページのAI含有率の内訳（%、合計100）
ahrefs = [
    ("0%（純人間）", 0, 0, 13.5),
    ("1〜10%", 1, 10, 13.8),
    ("11〜40%", 11, 40, 40.0),
    ("41〜70%", 41, 70, 20.3),
    ("71〜99%", 71, 99, 7.8),
    ("100%（純AI）", 100, 100, 4.6),
]
assert abs(sum(b[3] for b in ahrefs) - 100) < 1e-9


def share(min_pct):
    """AI含有率がmin_pct%以上のページの割合（バケット単位で厳密に出せる範囲）"""
    return sum(p for _, lo, _, p in ahrefs if lo >= min_pct)


print("== Ahrefsの内訳を『AIがどれだけ入っていたらAIと呼ぶか』で切り直す ==")
print(f"1%でも入っていたら : {share(1):5.1f}%   (Ahrefsの見出し 86.5%)")
print(f"11%以上            : {share(11):5.1f}%")
print(f"41%以上            : {share(41):5.1f}%")
print(f"71%以上            : {share(71):5.1f}%")
print(f"100%（純AI）       : {share(100):5.1f}%   (Ahrefs 4.6%)")
print(f"→ 過半数がAI(>50%) は 41〜70%の枠のうち一部〜71%以上の間 = {share(71):.1f}〜{share(41):.1f}%")
print("   Graphiteの『主にAI（>50%）』= 14%  → この範囲に入る")

# SE Ranking: 2000本のAI記事（新規20ドメイン）
articles = 2000
checkpoints = [("約1か月", 244), ("約2.5か月", 782), ("6か月", 1062), ("16か月", 1381)]
print("\n== SE Ranking 新規20ドメイン・AI記事2000本の累計クリック ==")
for name, clicks in checkpoints:
    print(f"{name:8s}: 累計{clicks:5d}クリック  1本あたり {clicks / articles:.2f}")
print(f"6か月までの累計のうち、最初の2.5か月分: {782 / 1062:.1%}")
print(f"2.5か月→16か月で増えたクリック: {1381 - 782}（13.5か月分）")
print(f"16か月の総インプレッション 1,092,079 に対するCTR: {1381 / 1092079:.3%}")
