ToolArc

ブログ記事

  • 比較記事
  • アフィリエイト
  • 収益導線
  • ASP
  • 実装
  • Next.js

比較記事の直アフィをブロックする仕組み|実装ログ

"比較Series記事のslugを`DIRECT_AFFILIATE_BLOCKED_SLUGS`で管理し、直アフィリエイトリンクを機械的に弾く仕組みを実装したログです。周辺収益記事へつなぐ2段導線を、コード側でも崩れないようにした工夫を紹介します。"

比較記事から本命記事へ弱リンクでつなぐ2段導線については、以前比較記事から本命記事へ弱リンクする2段導線の作り方で設計の考え方を整理しました。ただ、運用ルールとして決めておくだけだと、案件対応を急いでいるときにうっかり比較記事へ直接アフィリエイトリンクを置いてしまう、ということが起こり得ます。今回は、その「うっかり」をコード側で機械的に防ぐ仕組みを作った話です。

今日の結論

  • 比較Series記事のslugは一覧(DIRECT_AFFILIATE_BLOCKED_SLUGS)で管理し、該当slugには affiliate: マーカーを直接設置できないようにしています
  • ASP案件が「直リンク可」の扱いであっても、slugがブロック対象なら例外なく弾く設計にしました
  • 収益導線は「比較記事 → 周辺記事 → アフィリエイト」の2段構成を維持し、比較記事側は弱リンクのみを置きます
  • 本命の affiliate: マーカーは周辺記事側に設置し、比較記事側では使いません
  • 公開前に検証コマンドで、比較記事に affiliate: マーカーや生URLが残っていないかを確認します

なぜ運用ルールだけでは不十分だったのか

比較記事にアフィリエイトを直接置かない、という方針自体は以前から決めていました。ただ、案件対応をしていると「この案件は直リンクでも問題ない扱いだから」という理由で、うっかり比較記事側に affiliate: マーカーを置いてしまう余地が残っていました。

人が気をつけるだけの運用だと、忙しいときや複数案件を並行対応しているときに抜け漏れが起きやすくなります。そこで、比較Series記事のslugをコード側でも管理し、該当slugでは機械的に直アフィを弾けるようにしました。

DIRECT_AFFILIATE_BLOCKED_SLUGSの仕組み

筆者の実装では、比較Series記事のslugを DIRECT_AFFILIATE_BLOCKED_SLUGS という一覧で保持しています。ポイントは次の2つです。

  • 対象はASPの案件属性ではなく、記事のslugでチェックする
  • 案件が「直リンク可(direct扱い)」であっても、slugがこの一覧に含まれていれば例外なくブロックする

案件側の属性で判定してしまうと、「この案件は直リンクOKだから今回は例外」という個別判断が入りやすくなります。slugベースでチェックすることで、「比較Seriesの記事かどうか」だけで機械的に判定でき、案件ごとの個別事情に左右されにくくなりました。

筆者の環境では、Hubの ChatGPT・Claude・Cursorの違いと使い分けまとめ や spoke の CursorとChatGPTの使い分け方を初心者向けに解説 など、比較Series計7slugを一覧に登録しています。

比較記事側・周辺記事側の役割分担(再確認)

役割分担そのものは、以前整理した2段導線の設計と同じです。

区分内容
比較記事側本文にアフィリエイトを直接置かず、周辺記事への弱リンクを1本だけ置く
周辺記事側具体的な活用方法を説明したあと、本命の affiliate: マーカーを1回だけ設置する

設計の考え方や「向く人/向かない人」の書き方については、比較記事から本命記事へ弱リンクする2段導線の作り方にまとめています。今回の実装ログは、その役割分担をコード側でも崩れないようにしたという位置づけです。

公開前チェックリスト

比較記事を公開・更新するときに、筆者が確認している項目です。

  • 記事slugが DIRECT_AFFILIATE_BLOCKED_SLUGS に含まれるか確認した
  • 含まれる場合、本文に affiliate: マーカーを置いていないか確認した
  • 本命記事への内部リンク(弱リンク)が1本だけ設置されているか確認した
  • 本命記事側に affiliate: マーカーが正しく設置されているか確認した

動作確認コマンド

登録・修正後は、次のコマンドで比較記事側に混入がないかを確認しています。

  1. 検証コマンド(npm run validate:affiliate)を実行し、比較記事に affiliate: マーカーや生URLが残っていないかを確認する
  2. ビルドコマンド(npm run build)を実行し、問題なく通ることを確認する

まとめ・次に読む

比較記事に直アフィを置かないという方針は、運用ルールとして決めるだけでなく、slugベースの一覧でコード側にも組み込むことで、うっかりミスを防ぎやすくなりました。2段導線の設計思想そのものは今後も変わらない前提のため、まずは今ある比較記事のslugが一覧に含まれているかを確認するところから始めてみてください。


免責:本記事は筆者が実際に行った実装(2026-07-07時点)の運用方針をもとにしています。ASPの掲載ルールや案件属性の扱いは変更される可能性があるため、実際の運用では契約中のASP規約もあわせてご確認ください。