PageSourceSearch

https://rafuru.ai/contact/

html rafuru.ai collected 2026-10-05 15:46:55 UTC 26,964 bytes, 264 lines download raw bytes

1<!DOCTYPE html><html lang="ja"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="generator" content="Astro v6.2.2"><meta name="theme-color" content="#0E1112" media="(prefers-color-scheme: light)"><meta name="theme-color" content="#0E1112" media="(prefers-color-scheme: dark)"><title>お問い合わせ | rafuru</title><meta name="description" content="rafuru へのお問い合わせ窓口です。製品や料金・プランのご質問、制作会社・チームでの導入のご相談、メディア掲載・取材のご依頼などをフォームで受け付けています。Pro / Team プランのご相談もこちらから。"><link rel="canonical" href="https://rafuru.ai/contact/"><meta name="robots" content="index, follow, max-image-preview:large"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><link rel="sitemap" href="/sitemap-index.xml"><!-- Meta ドメイン認証(ビジネスポートフォリオ Omochi による rafuru.ai の所有確認) --><meta name="facebook-domain-verification" content="nae1nz6mz553y7uuoo9c0fgynybpua"><link rel="preload" href="/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2" as="font" type="font/woff2" crossorigin><!-- Open Graph --><meta property="og:title" content="お問い合わせ | rafuru"><meta property="og:description" content="rafuru へのお問い合わせ窓口です。製品や料金・プランのご質問、制作会社・チームでの導入のご相談、メディア掲載・取材のご依頼などをフォームで受け付けています。Pro / Team プランのご相談もこちらから。"><meta property="og:url" content="https://rafuru.ai/contact/"><meta property="og:type" content="website"><meta property="og:image" content="https://rafuru.ai/og-image.png"><meta property="og:image:type" content="image/png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="rafuru へのお問い合わせ窓口です。製品や料金・プランのご質問、制作会社・チームでの導入のご相談、メディア掲載・取材のご依頼などをフォームで受け付けています。Pro / Team プランのご相談もこちらから。"><meta property="og:site_name" content="rafuru"><meta property="og:locale" content="ja_JP"><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@rafuru_ai"><meta name="twitter:title" content="お問い合わせ | rafuru"><meta name="twitter:description" content="rafuru へのお問い合わせ窓口です。製品や料金・プランのご質問、制作会社・チームでの導入のご相談、メディア掲載・取材のご依頼などをフォームで受け付けています。Pro / Team プランのご相談もこちらから。"><meta name="twitter:image" content="https://rafuru.ai/og-image.png"><meta name="twitter:image:alt" content="rafuru へのお問い合わせ窓口です。製品や料金・プランのご質問、制作会社・チームでの導入のご相談、メディア掲載・取材のご依頼などをフォームで受け付けています。Pro / Team プランのご相談もこちらから。"><!-- 構造化データ(サイト共通: Organization / WebSite) -->
1<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://rafuru.ai/#organization","name":"rafuru","alternateName":"ラフル","legalName":"Omochi","url":"https://rafuru.ai/","logo":{"@type":"ImageObject","url":"https://rafuru.ai/logo/rafuru-logo-light.svg"},"email":"[email protected]","sameAs":["https://x.com/rafuru_ai","https://www.instagram.com/rafuru_ai/","https://www.youtube.com/@rafuru_ai","https://www.tiktok.com/@rafuru_ai"]},{"@type":"WebSite","@id":"https://rafuru.ai/#website","name":"rafuru","alternateName":"ラフル","url":"https://rafuru.ai/","inLanguage":"ja","publisher":{"@id":"https://rafuru.ai/#organization"}}]}</script>
1<!-- ページ固有の <head> 追加(article:* メタ・パンくず JSON-LD など) --><link rel="stylesheet" href="/_astro/BaseLayout.B7ffeRUC.css">
2<style>.form-control[data-astro-cid-ca7uxiov]{width:100%;background-color:var(--color-input);color:var(--color-foreground);border:1px solid var(--color-border);border-radius:var(--radius);padding:10px 14px;font-size:var(--text-base);line-height:var(--leading-normal);transition:border-color var(--duration-fast) var(--ease-in-out)}.form-control[data-astro-cid-ca7uxiov]:hover{border-color:color-mix(in oklab,var(--color-foreground) 30%,transparent)}.form-control[data-astro-cid-ca7uxiov]::placeholder{color:var(--color-muted-foreground)}textarea[data-astro-cid-ca7uxiov].form-control{min-height:9rem}#contact-form[data-astro-cid-ca7uxiov][data-attempted=true] .form-control[data-astro-cid-ca7uxiov]:invalid{border-color:var(--color-destructive)}
3</style></head> <body class="bg-background text-foreground flex min-h-screen flex-col"> <header class="z-sticky pointer-events-none fixed inset-x-0 top-4" data-astro-cid-qlfjksao> <div class="container-page flex justify-center" data-astro-cid-qlfjksao> <div class="pointer-events-auto relative" data-astro-cid-qlfjksao> <div id="glass-nav" class="glass-nav flex items-center gap-1 sm:gap-2" data-astro-cid-qlfjksao> <a href="/" class="duration-fast mr-2 inline-flex items-center transition-opacity hover:opacity-80 sm:mr-3" aria-label="rafuru ホーム" data-astro-cid-qlfjksao> <img src="/logo/rafuru-logo-dark.svg" alt="rafuru" width="84" height="28" class="h-6 w-auto sm:h-7" data-astro-cid-qlfjksao> </a> <nav class="glass-links items-center gap-1 sm:gap-2" data-astro-cid-qlfjksao> <a href="/#showcase" class="glass-link" data-astro-cid-qlfjksao>作例</a> <a href="/pricing/" class="glass-link" data-astro-cid-qlfjksao>料金</a> <a href="/blog/" class="glass-link" data-astro-cid-qlfjksao>ブログ</a> <a href="https://app.rafuru.ai/login" class="glass-link" target="_blank" rel="noopener noreferrer" data-astro-cid-qlfjksao>ログイン</a> </nav> <a href="https://app.rafuru.ai/signup" class="glass-cta" target="_blank" rel="noopener noreferrer" data-astro-cid-qlfjksao>無料で試す</a> <button type="button" id="glass-burger" class="glass-burger" aria-expanded="false" aria-controls="glass-mobile-menu" aria-label="メニューを開く" data-astro-cid-qlfjksao> <span class="burger-bar" aria-hidden="true" data-astro-cid-qlfjksao></span> <span class="burger-bar" aria-hidden="true" data-astro-cid-qlfjksao></span> <span class="burger-bar" aria-hidden="true" data-astro-cid-qlfjksao></span> </button> </div> <!-- モバイルメニュー(ピル直下のガラスパネル) --> <nav id="glass-mobile-menu" class="glass-menu" aria-label="メニュー" hidden data-astro-cid-qlfjksao> <a href="/#showcase" class="glass-menu-link" data-astro-cid-qlfjksao>作例</a> <a href="/pricing/" class="glass-menu-link" data-astro-cid-qlfjksao>料金</a> <a href="/blog/" class="glass-menu-link" data-astro-cid-qlfjksao>ブログ</a> <a href="https://app.rafuru.ai/login" class="glass-menu-link" target="_blank" rel="noopener noreferrer" data-astro-cid-qlfjksao>ログイン</a> </nav> </div> </div> </header>  
3<script>
4  // スクロールでナビをわずかに縮める(Level 2 スクロール演出の一部)
5  (function () {
6    const nav = document.getElementById("glass-nav");
7    if (!nav) return;
8    let ticking = false;
9    function update() {
10      ticking = false;
11      nav.classList.toggle("is-condensed", window.scrollY > 40);
12    }
13    window.addEventListener(
14      "scroll",
15      function () {
16        if (!ticking) {
17          ticking = true;
18          requestAnimationFrame(update);
19        }
20      },
21      { passive: true },
22    );
23    update();
24  })();
25
26  // モバイルのハンバーガーメニュー開閉。
27  // リンクタップ・外側タップ・Esc で閉じる。
28  (function () {
29    const burger = document.getElementById("glass-burger");
30    const menu = document.getElementById("glass-mobile-menu");
31    if (!burger || !menu) return;
32    function setOpen(open) {
33      burger.setAttribute("aria-expanded", open ? "true" : "false");
34      burger.setAttribute(
35        "aria-label",
36        open ? "メニューを閉じる" : "メニューを開く",
37      );
38      menu.hidden = !open;
39    }
40    burger.addEventListener("click", function () {
41      setOpen(menu.hidden);
42    });
43    menu.addEventListener("click", function (e) {
44      if (e.target.closest("a")) setOpen(false);
45    });
46    document.addEventListener("click", function (e) {
47      if (!menu.hidden && !e.target.closest("#glass-nav, #glass-mobile-menu"))
48        setOpen(false);
49    });
50    document.addEventListener("keydown", function (e) {
51      if (e.key === "Escape" && !menu.hidden) {
52        setOpen(false);
53        burger.focus();
54      }
55    });
56  })();
57</script>
57  <main class="flex-1 pt-24">  <section class="bg-background py-20 text-center sm:py-24"> <div class="container-page"> <p class="text-accent mb-3 text-xs font-medium tracking-wide uppercase">
58Contact
59</p> <h1 class="text-foreground mx-auto max-w-3xl text-2xl font-medium tracking-tight sm:text-3xl">
60お問い合わせ
61</h1> <p class="text-muted-foreground sm:text-md mx-auto mt-4 max-w-prose text-base leading-relaxed">
62製品に関するご質問、導入のご相談、メディア掲載・取材依頼など、こちらのフォームからお気軽にお問い合わせください。
63</p> </div> </section> <section class="bg-muted py-16 sm:py-20 lg:py-24" data-astro-cid-ca7uxiov> <div class="container-page" data-astro-cid-ca7uxiov> <div class="reveal mx-auto max-w-2xl" data-astro-cid-ca7uxiov> <form id="contact-form" action="https://formspree.io/f/xaqvbloq" method="POST" class="border-border bg-card rounded-lg border p-6 shadow-sm sm:p-10" novalidate data-astro-cid-ca7uxiov>  <input type="text" name="_gotcha" tabindex="-1" autocomplete="off" aria-hidden="true" class="hidden" data-astro-cid-ca7uxiov> <input type="hidden" name="_subject" value="rafuru LP からのお問い合わせ" data-astro-cid-ca7uxiov> <div data-form-fields class="flex flex-col gap-6 sm:gap-7" data-astro-cid-ca7uxiov> <p class="text-muted-foreground text-xs leading-relaxed sm:text-sm" data-astro-cid-ca7uxiov>
64クレジットカード番号、マイナンバー、パスワード等の金融・認証情報、第三者から預かった個人情報(顧客名簿等)、第三者の要配慮個人情報(他者の健康・思想信条等)、NDA
65            対象情報は記載しないでください。詳細は <a href="/legal/privacy/" target="_blank" rel="noopener noreferrer" class="duration-fast hover:text-accent-hover text-accent underline-offset-4 transition-colors hover:underline" data-astro-cid-ca7uxiov>プライバシーポリシー</a>をご覧ください。
66</p> <div class="flex flex-col gap-2" data-astro-cid-ca7uxiov> <label for="contact-name" class="text-foreground flex items-center gap-2 text-sm font-medium" data-astro-cid-ca7uxiov>
67お名前
68<span class="bg-accent/10 text-accent rounded-sm px-1.5 py-0.5 text-xs font-semibold" data-astro-cid-ca7uxiov>必須</span> </label> <input id="contact-name" name="name" type="text" required autocomplete="name" class="form-control" data-astro-cid-ca7uxiov> </div> <div class="flex flex-col gap-2" data-astro-cid-ca7uxiov> <label for="contact-email" class="text-foreground flex items-center gap-2 text-sm font-medium" data-astro-cid-ca7uxiov>
69メールアドレス
70<span class="bg-accent/10 text-accent rounded-sm px-1.5 py-0.5 text-xs font-semibold" data-astro-cid-ca7uxiov>必須</span> </label> <input id="contact-email" name="email" type="email" required autocomplete="email" inputmode="email" class="form-control" data-astro-cid-ca7uxiov> </div> <div class="flex flex-col gap-2" data-astro-cid-ca7uxiov> <label for="contact-affiliation" class="text-foreground flex items-center gap-2 text-sm font-medium" data-astro-cid-ca7uxiov>
71ご所属
72<span class="bg-accent/10 text-accent rounded-sm px-1.5 py-0.5 text-xs font-semibold" data-astro-cid-ca7uxiov>必須</span> </label> <div class="relative" data-astro-cid-ca7uxiov> <select id="contact-affiliation" name="affiliation" required class="form-control appearance-none pr-10" data-astro-cid-ca7uxiov> <option value="" disabled selected data-astro-cid-ca7uxiov>選択してください</option> <option value="Web 制作会社" data-astro-cid-ca7uxiov>Web 制作会社</option><option value="フリーランス" data-astro-cid-ca7uxiov>フリーランス</option><option value="事業会社のインハウス" data-astro-cid-ca7uxiov>事業会社のインハウス</option><option value="その他" data-astro-cid-ca7uxiov>その他</option> </select> <svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true" class="text-muted-foreground pointer-events-none absolute top-1/2 right-3.5 -translate-y-1/2" fill="none" data-astro-cid-ca7uxiov> <path d="M4 6l4 4 4-4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ca7uxiov></path> </svg> </div> </div> <div class="flex flex-col gap-2" data-astro-cid-ca7uxiov> <label for="contact-message" class="text-foreground flex items-center gap-2 text-sm font-medium" data-astro-cid-ca7uxiov>
73お問い合わせ内容
74<span class="bg-accent/10 text-accent rounded-sm px-1.5 py-0.5 text-xs font-semibold" data-astro-cid-ca7uxiov>必須</span> </label> <textarea id="contact-message" name="message" required rows="6" class="form-control resize-y" data-astro-cid-ca7uxiov></textarea> </div> <label class="text-foreground flex cursor-pointer items-start gap-3 text-sm leading-relaxed" data-astro-cid-ca7uxiov> <input type="checkbox" name="privacy_consent" value="agreed" required class="border-border accent-accent mt-0.5 size-4 shrink-0 cursor-pointer rounded-sm" data-astro-cid-ca7uxiov> <span data-astro-cid-ca7uxiov> <a href="/legal/privacy/" target="_blank" rel="noopener noreferrer" class="text-accent duration-fast hover:text-accent-hover underline-offset-4 transition-colors hover:underline" data-astro-cid-ca7uxiov>プライバシーポリシー</a>に同意します
75</span> </label> <div data-status="error" role="alert" hidden class="border-destructive/30 bg-destructive/5 text-destructive rounded border p-4 text-sm" data-astro-cid-ca7uxiov>
76送信に失敗しました。時間をおいて再度お試しいただくか、<a href="/cdn-cgi/l/email-protection#becdcbceced1cccafeccdfd8cbcccb90dfd7" class="underline underline-offset-4" data-astro-cid-ca7uxiov><span class="__cf_email__" data-cfemail="86f5f3f6f6e9f4f2c6f4e7e0f3f4f3a8e7ef">[email&#160;protected]</span></a> までご連絡ください。
77</div> <button type="submit" data-submit class="bg-primary text-md text-primary-foreground duration-normal hover:bg-primary/90 inline-flex h-12 items-center justify-center gap-2 rounded px-7 font-medium transition-all ease-out hover:-translate-y-0.5 hover:shadow-lg disabled:pointer-events-none disabled:opacity-60" data-astro-cid-ca7uxiov> <span data-submit-label data-astro-cid-ca7uxiov>送信する</span> <span data-submit-loading hidden data-astro-cid-ca7uxiov>送信中…</span> </button> </div>
77 <div data-status="success" role="status" aria-live="polite" hidden class="flex flex-col items-center gap-4 py-6 text-center sm:py-10" data-astro-cid-ca7uxiov> <span class="bg-success/10 text-success inline-flex size-12 items-center justify-center rounded-full" aria-hidden="true" data-astro-cid-ca7uxiov> <svg viewBox="0 0 24 24" width="24" height="24" fill="none" data-astro-cid-ca7uxiov> <path d="M5 12.5l4.5 4.5L19 7.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ca7uxiov></path> </svg> </span> <h2 class="text-foreground text-lg font-medium sm:text-xl" data-astro-cid-ca7uxiov>
78お問い合わせを受け付けました
79</h2> <p class="text-muted-foreground max-w-md text-base leading-relaxed" data-astro-cid-ca7uxiov>
80ご入力いただいたメールアドレス宛に、通常 2〜3 営業日以内に rafuru
81            チームよりご返信いたします。
82</p> </div> </form> <p class="text-muted-foreground mt-6 text-center text-xs leading-relaxed sm:text-sm" data-astro-cid-ca7uxiov>
83※ 通常 2〜3
84        営業日以内にご返信いたします。土日祝のお問い合わせは翌営業日以降の対応となります。
85</p> </div> </div> </section>
vendor: 110 bytes, line 85
85  <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
85<script type="module">(function(){const e=document.getElementById("contact-form");if(!e)return;const s=e.querySelector("[data-submit]"),n=e.querySelector("[data-submit-label]"),a=e.querySelector("[data-submit-loading]"),i=e.querySelector("[data-form-fields]"),o=e.querySelector('[data-status="success"]'),r=e.querySelector('[data-status="error"]');if(!s||!n||!a||!i||!o||!r)return;function d(t){!s||!n||!a||(s.disabled=t,n.hidden=t,a.hidden=!t)}e.addEventListener("submit",async t=>{if(t.preventDefault(),!!e&&(e.dataset.attempted="true",r.hidden=!0,!!e.reportValidity())){d(!0);try{(await fetch(e.action,{method:"POST",body:new FormData(e),headers:{Accept:"application/json"}})).ok?(i.hidden=!0,o.hidden=!1,o.scrollIntoView({behavior:"smooth",block:"center"})):r.hidden=!1}catch{r.hidden=!1}finally{d(!1)}}})})();</script>
85  </main> <!--
86  Footer は OS のテーマに関係なく常に「ダークコンテキスト」として描画する
87  デザインとして固定。`data-theme="dark"` を当てることで、内部の
88  bg-background / text-foreground / border-border 等のセマンティック
89  トークンがすべて dark 値に解決される。
90--><footer data-theme="dark" class="bg-background text-muted-foreground"> <div class="container-page py-16 sm:py-20"> <div class="border-border flex flex-col gap-8 border-b pb-12 sm:flex-row sm:items-start sm:justify-between"> <div> <a href="/" class="duration-fast inline-flex items-center transition-opacity hover:opacity-80" aria-label="rafuru ホーム"> <img src="/logo/rafuru-logo-dark.svg" alt="rafuru" width="96" height="32" class="h-8 w-auto"> </a> <p class="text-muted-foreground mt-3 text-sm"> <span class="inline-block">クライアントと合意しながら作る、</span><span class="inline-block">Web 制作者のための AI 制作プラットフォーム。</span> </p> </div> <nav class="flex flex-wrap items-center gap-x-8 gap-y-3"> <a href="/" class="text-muted-foreground duration-fast hover:text-foreground text-sm transition-colors"> ホーム </a><a href="/pricing/" class="text-muted-foreground duration-fast hover:text-foreground text-sm transition-colors"> 料金 </a><a href="/blog/" class="text-muted-foreground duration-fast hover:text-foreground text-sm transition-colors"> ブログ </a><a href="/legal/terms/" class="text-muted-foreground duration-fast hover:text-foreground text-sm transition-colors"> 利用規約 </a><a href="/legal/privacy/" class="text-muted-foreground duration-fast hover:text-foreground text-sm transition-colors"> プライバシーポリシー </a><a href="/legal/tokushoho/" class="text-muted-foreground duration-fast hover:text-foreground text-sm transition-colors"> 特商法表記 </a><a href="/contact/" class="text-muted-foreground duration-fast hover:text-foreground text-sm transition-colors"> お問い合わせ </a> </nav> </div> <div class="flex flex-wrap items-center justify-between gap-3 pt-8"> <span class="text-muted-foreground text-xs">
91© 2026 rafuru. All rights reserved.
92</span> </div> </div> </footer> 
92<script>
93      // Scroll-triggered reveal — `.reveal` 要素が viewport に入ったら
94      // `.is-visible` を付与し、CSS 側のトランジションで出現させる。
95      // prefers-reduced-motion の場合は即時 visible 化(再生せず)。
96      (function () {
97        const targets = document.querySelectorAll(".reveal");
98        if (!targets.length) return;
99        const reduced =
100          window.matchMedia &&
101          window.matchMedia("(prefers-reduced-motion: reduce)").matches;
102        if (reduced || !("IntersectionObserver" in window)) {
103          targets.forEach(function (el) {
104            el.classList.add("is-visible");
105          });
106          return;
107        }
108        const obs = new IntersectionObserver(
109          function (entries) {
110            for (let i = 0; i < entries.length; i++) {
111              const entry = entries[i];
112              if (entry.isIntersecting) {
113                entry.target.classList.add("is-visible");
114                obs.unobserve(entry.target);
115              }
116            }
117          },
118          { rootMargin: "0px 0px -8% 0px", threshold: 0.1 },
119        );
120        targets.forEach(function (el) {
121          obs.observe(el);
122        });
123      })();
124    </script>
124 
124<script>
125      // First-touch アトリビューション — 広告・SNS 流入時の UTM / fbclid を
126      // localStorage に保持し(初回のみ。上書きしない)、アプリ
127      // (app.rafuru.ai) へのリンクに引き継ぐ。app 側は signup 時にこの
128      // クエリをユーザーレコードへ保存する(docs/sns-strategy.md §7)。
129      (function () {
130        const KEY = "rafuru.firstTouch";
131        const KEEP = [
132          "utm_source",
133          "utm_medium",
134          "utm_campaign",
135          "utm_content",
136          "utm_term",
137          "fbclid",
138        ];
139        // AI アシスタント経由の流入は UTM が付かないことが多く、リファラー
140        // だけが手がかり(ChatGPT は utm_source=chatgpt.com を付けるが、
141        // Claude 等はリファラーのみ)。既知の AI ドメインからの流入は
142        // utm_source=<サービス名> / utm_medium=ai_referral として合成し、
143        // 広告・SNS と同じ経路で signup まで追跡できるようにする。
144        const AI_HOSTS = {
145          "chatgpt.com": "chatgpt",
146          "chat.openai.com": "chatgpt",
147          "claude.ai": "claude",
148          "perplexity.ai": "perplexity",
149          "www.perplexity.ai": "perplexity",
150          "gemini.google.com": "gemini",
151          "copilot.microsoft.com": "copilot",
152        };
153        try {
154          const cur = new URLSearchParams(location.search);
155          const hasAny = KEEP.some(function (k) {
156            return cur.get(k);
157          });
158          let aiSource = "";
159          try {
160            if (document.referrer) {
161              aiSource = AI_HOSTS[new URL(document.referrer).hostname] || "";
162            }
163          } catch {
164            // リファラーが URL として不正な場合は無視
165          }
166          if ((hasAny || aiSource) && !localStorage.getItem(KEY)) {
167            const data = { landingPath: location.pathname };
168            KEEP.forEach(function (k) {
169              if (cur.get(k)) data[k] = cur.get(k);
170            });
171            if (!hasAny && aiSource) {
172              data.utm_source = aiSource;
173              data.utm_medium = "ai_referral";
174            }
175            localStorage.setItem(KEY, JSON.stringify(data));
176          }
177          const saved = JSON.parse(localStorage.getItem(KEY) || "null");
178          if (!saved) return;
179          document
180            .querySelectorAll('a[href^="https://app.rafuru.ai"]')
181            .forEach(function (a) {
182              const u = new URL(a.href);
183              let touched = false;
184              KEEP.forEach(function (k) {
185                if (saved[k] && !u.searchParams.has(k)) {
186                  u.searchParams.set(k, saved[k]);
187                  touched = true;
188                }
189              });
190              if (touched) a.href = u.toString();
191            });
192        } catch {
193          // localStorage が使えない環境(プライベートモード等)では何もしない
194        }
195      })();
196    </script>
196 
196<script>
197      // Meta ピクセル — 広告効果測定(privacy §11)。ポリシー改訂の事前周知
198      // 期間を置くため、施行日 2026-07-21 00:00 JST までは発火させない
199      // (§11「導入時は改訂のうえ事前に周知」の履行)。施行日前の動作確認は
200      // URL に ?meta_pixel_test=1 を付ける。登録・課金の CV はアプリ側 CAPI
201      // から送る設計(docs/sns-strategy.md §7)で、LP はページビュー・
202      // アプリ送客クリック・記事50%スクロール(広告の上流CV)のみを計測する。
203      (function () {
204        const LIVE_FROM = Date.parse("2026-07-21T00:00:00+09:00");
205        const isTest = /[?&]meta_pixel_test=1/.test(location.search);
206        if (Date.now() < LIVE_FROM && !isTest) return;
207        (function (f, b, e, v) {
208          if (f.fbq) return;
209          const n = (f.fbq = function (...args) {
210            if (n.callMethod) {
211              n.callMethod(...args);
212            } else {
213              n.queue.push(args);
214            }
215          });
216          if (!f._fbq) f._fbq = n;
217          n.push = n;
218          n.loaded = true;
219          n.version = "2.0";
220          n.queue = [];
221          const t = b.createElement(e);
222          t.async = true;
223          t.src = v;
224          const s = b.getElementsByTagName(e)[0];
225          s.parentNode.insertBefore(t, s);
226        })(
227          window,
228          document,
229          "script",
230          "https://connect.facebook.net/en_US/fbevents.js",
231        );
232        window.fbq("init", "1028084989602298");
233        window.fbq("track", "PageView");
234        document.addEventListener("click", function (ev) {
235          const a =
236            ev.target && ev.target.closest ? ev.target.closest("a") : null;
237          if (a && /^https:\/\/app\.rafuru\.ai/.test(a.href)) {
238            window.fbq("trackCustom", "AppLinkClick", {
239              path: location.pathname,
240            });
241          }
242        });
243        // 記事50%スクロール — 広告セットAS1(記事着地)の最適化イベント
244        // (sns-strategy §5/§7)。/blog/ 配下で1ページビューにつき1回だけ発火。
245        if (location.pathname.startsWith("/blog/")) {
246          let scrollFired = false;
247          const onArticleScroll = function () {
248            if (scrollFired) return;
249            const doc = document.documentElement;
250            const depth =
251              (window.scrollY + window.innerHeight) / doc.scrollHeight;
252            if (depth >= 0.5) {
253              scrollFired = true;
254              window.removeEventListener("scroll", onArticleScroll);
255              window.fbq("trackCustom", "ArticleScroll50", {
256                path: location.pathname,
257              });
258            }
259          };
260          window.addEventListener("scroll", onArticleScroll, { passive: true });
261          onArticleScroll();
262        }
263      })();
264    </script>
264 </body> </html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.