自分の事業LPをマジックリンクで限定公開にしてみた


なるべく非公開にしたいLPがある。

ただし、営業先にだけは見せたい。

この矛盾を「マジックリンク」で解決した話。

何をしたか

LPのURLに、シークレット文字列(合言葉のようなもの)を1つ付けた。

この文字列が付いたURLを一度踏むと、ブラウザに「90日間の通行証」(Cookie)が発行される。次からは普通のURLで入れる。

文字列を知らない人がURLを直接打っても、ページは表示されない。

イメージとしては、玄関の合言葉。一度通れば、あとは家の中を自由に歩ける。

なぜ必要だったか

近々、紙のチラシを近隣の事業者に投函する予定がある。

チラシのQRコードを読んだ人にだけ、LPを見てもらいたい。読んでない人には見えなくていい。

「会員登録してください」では摩擦が大きすぎる。

IDとパスワードを発行されても、相手は「面倒」と思って離脱する。

QRを読む → そのままLPが開く → 90日間は何度でも見られる。

これくらい摩擦のない仕組みじゃないと、紙営業との相性が悪い。

実装は middleware 1本

Cloudflare Pages という置き場所に、functions/_middleware.ts(玄関で来訪者を判定するファイル)を1つ置いた。

中身は40行くらい。Claude Code が書いた。

判定はシンプル:

  • URLにシークレット文字列が付いている → Cookie発行 → 通す
  • Cookieを持っている → 通す
  • どちらも無い → 403(見せない)

私は普段、ブクマからCookieで入る。営業先にはシークレット付きURLを送る。これで両立。

「マジックリンク」という名前を後で知った

実装してから、Claude Code に「これ名前あるんですか」と聞いた。

「マジックリンク」と返ってきた。

メールに届く「クリックしてログイン」のリンク、あれ全部マジックリンクだそうだ。Slackやnoteのログイン画面で何度も踏んできた仕組みに、名前があった。

仕組みを作ってから名前を知る順番、たまにある。

URLが汚い問題

シークレット付きURLは、文字列がランダムなので見た目が良くない。

メールの末尾に貼ると、いかにも怪しい。

そこで _redirects(短縮URL設定ファイル)に1行足して、/go という入口を作った。/go を踏むと、自動でシークレット付きの本URLにリダイレクトされる。

メールには https://yaduru-digital.com/go とだけ書く。

踏んだ人のブラウザが本物のURLを経由して、Cookieを受け取る。

見た目だけ整えるための1行。

まとめ

  • なるべく非公開にしたいLPを、QRやメールから来た人にだけ見せたかった
  • マジックリンク(シークレットURL+Cookie)で実装した
  • middleware 40行、Claude Code が書いた
  • /go の短縮URLでメール文面の見た目を整えた

仕組みを作ってから「マジックリンク」という名前を知った、という遠回りも記録しておく。