The Moneytizer ads.txt の自動統合

Moneytizer の ads.txt ファイルを手動で設置している場合、時々更新が必要ですが、自動的に更新できる方法があるので簡単な手順にまとめました。以下は Moneytizer から届いたお知らせです。

「新しいads.txtの更新」のお知らせの下の方に「ads.txt ファイルの更新にうんざりしていませんか?」とあり、自動更新についての記述があります。

作成日:2024年09月27日

ダッシュボードにアクセス

ダッシュボードに表示されているチュートリアルのビデオやPDFは英語なのと、FTPソフトの使い方の説明から始まっているのでわかりにくいですが、作業は単純です。

大まかな手順としては、PHP ファイル(ads_tm.php)をダウンロードして、現在 ads.txt がある場所と同じフォルダーにアップロードし、.htaccess にリダイレクトの記述を追加するだけです。

※ 以下を行うには、ファイルをサーバーにアップロードする方法や .htaccess ファイルの編集方法を理解している必要があります。

ダッシュボードにアクセスして左側のメニューの設定にある「ADS.TXT」をクリックします。

「サイト」を選択し、右側の「自動」タブで、「PHP ファイルのダウンロード」をクリックします。

「ads_tm.php」という PHP ファイルがダウンロードされます。

ads_tm.php をアップロード

ダウンロードした「ads_tm.php」を FTP ソフトや VS Code などを使って、現在サーバーで ads.txt がある場所にアップロードします。アップロードの方法や手順は省略します。

.htaccess ファイルを編集

サーバーの .htaccess ファイルに以下の2行を追加します。

RewriteEngine On

RewriteRule ^ads.txt$ ads_tm.php

RewriteEngine On は mod_rewrite の機能(URL の書き換え処理)を有効にします。すでに記述されていれば、その後に次の RewriteRule ^ads.txt$ ads_tm.php を記述するだけです。

RewriteRule ^ads.txt$ ads_tm.php は ads.txt にアクセスがあったら ads_tm.php にリダイレクトさせる記述です。RewriteRule ディレクティブは、URL の書き換えを行うディレクティブです。

nginx サーバー

設置ガイドの PDF によると、nginx サーバーを使用している場合は、 nginx.conf ファイルに次の行を追加する必要があるとのことですが、お使いの環境によるかと思います。現在使用しているサーバーは nginx ですが、以下を行わなくても問題なく統合できています。

ちなみに、チュートリアルのビデオにはこの手順は含まれていません。

location = /ads.txt { rewrite ^(.*)$ /ads_tm.php; } 

統合の確認

ダッシュボードで「統合の確認」をクリックして、以下のように「自動統合により、ads.txtファイルを更新する必要はありません。」と表示されれば完了です。

これで、今後、ads.txt を更新する必要がなくなります。

必要に応じて、手動で追加していた Moneytizer の記述部分は削除することができます。但し、他の広告パートナー(例 Google Adsense など)の記述は削除しないよう注意が必要です。

ブラウザで ads.txt を確認

ブラウザで「https://自分のドメイン/ads.txt」にアクセスして、実際に ads.txt を開いて確認することもできます。自動統合した場合、 Moneytizer の記述が先にあり、Google Adsense などの記述はその後に追加されています。

ads_tm.php

以下は自動更新のためにアップロードする PHP ファイル ads_tm.php です(参考まで)。

ユーザーのサーバー上にある ads.txt の内容($ads_txt)と Moneytizer のリスト($ads_txt_themoneytizer)をマージして、自動的に必要な行を追加するようになっているようです。

マージする際に重複した値や空の値は削除しています(38行目)。

ads.txt に Google Adsense など Moneytizer 以外の他広告パートナーの記述があれば、それらはテキストの最後に追加されて保存されます。

<?php
header("Content-Type: text/plain");

$filename_adstxt_user = 'ads.txt';

$ads_txt = @file_get_contents($filename_adstxt_user);
$ads_txt_themoneytizer = file_get_contents('https://ads.themoneytizer.com/ads_txt.php?site_id=xxxxxx&id=xxxxxx');
if(empty($ads_txt_themoneytizer)){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, 'https://ads.themoneytizer.com/ads_txt.php?site_id=xxxxxx&id=xxxxxx');
    $ads_txt_themoneytizer = curl_exec($ch);
    curl_close($ch);
}

if(empty($ads_txt)){
    file_put_contents($filename_adstxt_user, $ads_txt_themoneytizer);
    chmod($filename_adstxt_user, 0777);

    //$ads_txt = file_get_contents($filename_adstxt_user);
}

$explode_ads_txt = explode("\n", $ads_txt);

$explode_ads_txt_themoneytizer = explode("\n", $ads_txt_themoneytizer);

$aAdsTxt = array();
$aAdsTxtThemoneytizer = array();

foreach ($explode_ads_txt as $k => $v) {
    $aAdsTxt[] = trim(str_replace(' ', '', $v));
}

foreach ($explode_ads_txt_themoneytizer as $k => $v) {
    $aAdsTxtThemoneytizer[] = trim(str_replace(' ', '', $v));
}

$merge_ads_txt = array_filter(array_unique(array_merge($aAdsTxtThemoneytizer, $aAdsTxt)));
foreach($merge_ads_txt as $k => $v){
    $merge_ads_txt[$k] = str_replace(',', ', ', $merge_ads_txt[$k]);
}

echo implode("\n", $merge_ads_txt);