> For the complete documentation index, see [llms.txt](https://docs.exoclick.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.exoclick.com/publishers/ja/exoclick-agego.md).

# ExoClickをAgeGOと連携する方法

このガイドでは、以下について説明します：

* AgeGO にサイトを送信する方法。
* AgeGO の年齢確認パラメータを ExoClick に渡し、広告ゾーンで広告をブロックする方法。
* AgeGO と ExoClick の広告ゾーンを連携させ、年齢確認前のユーザーに SFW 広告を表示する方法。

## AgeGO にサイトを送信する方法

AgeGO にサイトを送信するには、 [AgeGO ダッシュボード](https://dashboard.agego.com/login)にログインします。その後、「My Sites」に移動し、「New Site」をクリックします：

![ExoClick AgeGO 1](/files/65f635106882c3825e1c81e3388fac0ffafed1c8)

これらの設定では、少なくとも **名前** と **トップレベルドメイン**を追加する必要があります。設定が完了したら、「Create」をクリックします。サイトがアカウントに追加されます。

デフォルトでは、すべてのサイトは作成時に「Ready」ステータスになります。ただし、これはまだサイトで AgeGO を使用できることを意味しません。サイトで AgeGO を有効にするには、 [**問い合わせフォームから AgeGO に連絡し**](https://www.agego.com/contact-us-business) **、サイトに対応する Site ID を伝える必要があります。**

Site ID はサイト名の横で確認できます：

![ExoClick AgeGO 2](/files/a0ce0624b383193145d27488202002c9fc35a920)

サイトが承認されると、ステータスは「Running」に変更され、AgeGO をサイトに統合するための手順に従えるようになります。このソリューションでは現在、 **Modal（シンプルまたは詳細）** と **S2S**の 2 つの方法が提供されており、それぞれのセットアップ手順は AgeGO ダッシュボードで確認できます。このガイドでは、 **Modal** 方式について説明します。

## 年齢確認ステータスを渡し、SFW 広告を配信する方法

年齢確認システム（AgeGO や他のプロバイダー）を使用している場合、年齢確認をしていないユーザーと確認済みのユーザーの両方に広告を表示し続けたいことがあるかもしれません。

ユーザーが年齢確認を通過した（または通過していない）ことを識別するには、広告ゾーンで `data-ex_av` パラメータを使用します。このパラメータには 3 つの値を指定できます：

* "0": 年齢確認なし（未定義）
* "1": 年齢確認 - 確認済み
* "2": 年齢確認 - 未確認

次に、特定のユーザー（この文脈では、年齢確認をしていないユーザー）への広告配信をブロックするには、 `data-block-ad-types` パラメータを使用します。このパラメータは複数の値を指定できますが、このガイドでは値 `101`.

のみを使用します。したがって、SFW の広告を配信し、かつそのユーザーがまだ年齢確認をしていないと識別したい場合は、次のようにパラメータを組み込みます：

* **非同期広告形式（バナー、FPI、マルチフォーマットなど）：**

```html
<script async type="application/javascript" src="https://a.magsrv.com/ad-provider.js"></script> 
 <ins class="eas6a97888e2" data-zoneid="XXXXXXXX" data-ex_av="2"  data-block-ad-types="101"></ins> 
 <script>(AdProvider = window.AdProvider || []).push({"serve": {}});</script>
```

* **インストリーム**: `https://s.magsrv.com/v1/vast.php?idzone=XXXXXX&ex_av=2&block_ad_types=101`
* **ポップアンダー（リンク）**: `https://s.pemsrv.com/v1/link.php?cat=&idzone=XXXXX&type=8&ex_av=2&block_ad_types=101`
* **ダイレクトリンク**: `https://s.zlinkt.com/v1/d.php?z=XXXXXXX&ex_av=2&blocked_ad_types=101`

**注**：両方を使用する必要があります `data-ex_av` と `data-block-ad-types` SFW 広告を配信する際は、そうしないとユーザーが正しく識別されず、広告がブロックされません。

そして、年齢確認済みのユーザーにあらゆる種類の広告を配信したい場合は、次のように配信します：

* **非同期広告形式（バナー、FPI、マルチフォーマットなど）：**

```html
<script async type="application/javascript" src="https://a.magsrv.com/ad-provider.js"></script> 
<ins class="eas6a97888e2" data-zoneid="XXXXXXX" data-ex_av="1"></ins> 
<script>(AdProvider = window.AdProvider || []).push({"serve": {}});</script>
```

* **インストリーム**: `https://s.magsrv.com/v1/vast.php?idzone=XXXXXXXX&ex_av=1`
* **ポップアンダー（リンク）**: `https://s.pemsrv.com/v1/link.php?cat=&idzone=XXXXXXX&type=8&ex_av=1`
* **ダイレクトリンク**: `https://s.zlinkt.com/v1/d.php?z=XXXXXXX&ex_av=`

## SFW 体験を作成する方法

次のチュートリアルでは、「SFW 体験」、つまりユーザーがまだ年齢確認をしていない場合に SFW 広告のみが配信されるようにする方法を説明します。この方法はあくまで推奨であり、別のユーザーフローに従う必要がある場合はセットアップを変更できます。

このセットアップでは、別のスクリプトファイルを作成する必要があります。この例では、それを `main.js`:

```javascript
function getCookie(name) {
  const value = `${document.cookie};`;
  const parts = value.split(`${name}=`);
  if (parts.length !== 2) return false;
  const token = parts.pop().split(";").shift();
  const format = token.split(".");
  if (format.length !== 3) return false;
  try {
    format.slice(0, 2).forEach(part => {
      const padded = part + "=".repeat((4 - part.length % 4) % 4);
      atob(padded.replace(/-/g, "+").replace(/_/g, "/"));
    });
    return true; 
  } catch (e) {
    return false; 
  }
}

function verifier(event, container) {
    window.AGEGO = window.AGEGO || function () {
	(AGEGO.e = AGEGO.e || []).push(arguments)
	};
     AGEGO('configure', {
	siteId: XXXXXXX, // AgeGo におけるサイトの Site ID
	autoBlur: true,
	verifyMode: 'inline', 
	requireAgeVerification: true, 
	allowDirectContinue: false, 
	overlay: {
		logo: 'wlogo.png', // サイトのロゴ
		theme: 'auto'
		},
	events: {
		onVerificationFlowEnd() {
			console.log("認証に成功しました");
			window.location.reload();
			},
            	onVerificationFlowFailed() {
			console.log("認証はエラーコード:" + error で失敗しました");
			},
            	onAgeVerify() {
			console.log("年齢確認プロセスを開始");
			},
            	onDirectContinue() {
			console.log("DirectContinue アクション");
			},
            	onUnderageSkip() {
			console.log("スキップされました");
			},
            	onVerifiedBefore() {
			console.log("以前に確認済み");
			}
		}
	       }
	);

            var n = document.createEvent("Event");
            n.initEvent("DOMContentLoaded", !0, !0),
            document.dispatchEvent(n);
}

const TARGET_SELECTOR = '.main, .footer; // クリックがインターセプトされるクラスに置き換えてください

function intercept(e) {
   const container = e.target.closest(TARGET_SELECTOR);
   if (!container) return; 
        
   e.preventDefault();
   e.stopImmediatePropagation(); 
   e.stopPropagation();

   verifier(e, container);
}
```

このファイルには 3 つの関数があります。Cookie を検出する関数、AgeGO オーバーレイを読み込む関数、特定のクラスでのクリックを検出する関数です。このケースでは、クラス `.main` と `.footer`.

を使用しています。その後、サイトの HTML には次のものを配置します：

```html
<!--AgeGo のコード-->
<script src="https://verifycdn.agego.com/v1/verify.js"></script>

<!-- カスタム関数のコード-->
<script src="main.js"></script>

<!-- 広告プロバイダーのコード-->
<script async type="application/javascript" src="https://a.magsrv.com/ad-provider.js"></script>

<!-- 広告ゾーン。XXXX と YYYYY は管理パネルで提供されるクラス ID とゾーン ID に対応します。 -->
<div id="videontv">
  <ins class="XXXXXX" data-zoneid="YYYYYY" data-block-ad-types="101"  data-ex_av="2"></ins> 
  <ins class="XXXXXX" data-zoneid="YYYYYY" data-block-ad-types="101"  data-ex_av="2"></ins> 
</div>

<!-- 正しいパラメータで広告を配信するためのコード-->
<script>
	const agegoValue = getCookie("agego_aver");
	if (agegoValue !== false)  {
               console.log("ユーザーは確認済み");
        	   const adInsElements = document.querySelectorAll("ins");
        	   adInsElements.forEach(ins => {
            	ins.setAttribute("data-ex_av", "1");
            	ins.setAttribute("data-block-ad-types", "0");
        		});
    	   }
             else {
                 console.log("ユーザーは未確認");
                 ['pointerdown', 'click', 'touchstart'].forEach(type => {
                 document.addEventListener(type, intercept, { capture: true });
                 });
             }
	(AdProvider = window.AdProvider || []).push({"serve": {}});
</script>
```

この例では、 **ユーザーが年齢を確認するまでは広告はデフォルトで SFW です**。ユーザーが先ほど述べた選択したクラスをクリックすると、AgeGO オーバーレイが表示されます。ユーザーが年齢確認を行った後は、 **ページは通常どおり読み込まれ、今回は広告をブロックしません**.

***

このチュートリアルに関するいくつかの注意点：

1. このセットアップは `agego_aver` Cookie に依存しています。ただし、これは変更できます。AgeGO スクリプトのイベントを使用して localStorage に値を設定し、その値に基づいて表示する広告を決定できます。
2. どちらの方法も広告配信のみに焦点を当てています。このコードでは、動画サムネイルやその他のサイトコンテンツは考慮していません。
3. 現在、AgeGO には国ごとの検出機能が組み込まれていません。このコードをいつ表示するかは自分で決める必要があります。

***

次の方法を `data-ex_av` と `data-block-ad-types` 別の任意のイベントに基づいて設定したい場合は、他のチュートリアルも確認してください： [広告タイプを動的にブロックする](/tutorials/tutorials/publishers-tutorials/dynamically-block-ads-using-data-block-ad-types.md), [インストリーム広告ゾーンで広告タイプを動的にブロックする](/tutorials/tutorials/publishers-tutorials/dynamically-block-ad-types-for-exoclick-in-stream-zones.md).

最後に、年齢確認ソリューションとのより一般的な広告ゾーン統合については、 [こちらの別のチュートリアルをご覧ください。](/tutorials/tutorials/publishers-tutorials/serve-sfw-ads.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.exoclick.com/publishers/ja/exoclick-agego.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
