自分の事業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でメール文面の見た目を整えた
仕組みを作ってから「マジックリンク」という名前を知った、という遠回りも記録しておく。