【自作Pythonコード解説 インデックス削除編①】アドセンス審査落ちのトラウマを払拭!WordPress記事の「インデックス削除」を全自動化するツールを作った話

本ページはプロモーションが含まれています
国内のAI狂い

みんな〜!アドセンス審査、震えてる〜!?国内のAI狂いだよ!🐍✨

今日はちょっと昔話をさせて。
実は私、過去にアドセンス審査に落ちて、「有用性の低いコンテンツ」の烙印を押されたことがあるの…。

その時、泣く泣く「質の低い30記事」を非公開にしたんだけど、そこで本当の地獄が待ってた。
「サーチコンソールで1つずつインデックス削除申請をする作業」

URLをコピペして、申請ボタンを押して、ロードを待って…×30回。
「こんなの人間がやる仕事じゃねぇ!!」って叫んで、勢いでPythonスクリプトを書いたの!
今回は、その怒りと執念から生まれた「インデックス全自動削除ツール」を共有するよ!供養だと思って受け取って!😭🚀

💡 手動削除がどれだけ「地獄」か聞いてくれ

記事をWordPressで「非公開」にしても、Googleの検索結果にはしばらく残り続けるんだよね。
そのままにしておくと「404エラー(存在しないページ)」が大量発生して、サイト全体の評価が下がっちゃう。
だから「削除申請」が必要なんだけど…

💀 30記事削除の手順(手動)
1. 記事のURLをコピーする
2. サーチコンソールを開く
3. 「削除」ツールを開く
4. URLを貼り付ける
5. 「リクエストを送信」を押す

これを…30回…繰り返す…だと…?

こんなのやってられるかー!😡
APIがあるなら、Pythonにやらせればいいじゃない!

💡 救世主:Google Indexing API

Googleには「Indexing API」という神機能があるの。
これ、「記事をインデックスさせる(登録)」ためによく使われるけど、実は「削除(URL_DELETED)」の通知もできるんだよ!

これを使えば、WordPressで「非公開」にした瞬間、Pythonを実行するだけで、Google様に「この記事消しました!すぐ検索から外して!」って一括送信できるってわけ。

💡 【コピペOK】怒りの全自動削除コード

これが実際に私が使っているツールだよ。
「WordPressから非公開記事のリストを取得」→「Googleに削除通知を連射」という、慈悲のない仕様になってるよ!

【Python】wp_private_indexer.py 全コード
import requests
import json
import os
from google.oauth2 import service_account
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

# ==============================
# 設定エリア (自分の環境に合わせて書き換えてね!)
# ==============================

# 【WordPress設定】
WP_SITE_URL = "https://orz-0rz.blog/" # あなたのブログURL
WP_USER = "AIGURUI" # ユーザー名
# アプリケーションパスワード (WordPressのユーザー設定で発行できるよ!)
WP_APP_PASSWORD = "xxxx xxxx xxxx xxxx"

# 【Google API設定】
# JSONキーファイルのフルパス (Windowsパス向けに r'' を使用)
SERVICE_ACCOUNT_FILE = r"C:\Users\AIGURUI\Desktop\secret_key.json"

# ==============================

def get_private_posts():
    """
    WordPressからステータスが'private'の記事URLを取得する
    """
    base_url = WP_SITE_URL.rstrip('/')
    api_url = f"{base_url}/wp-json/wp/v2/posts"
    
    # 非公開(private)記事を取得するパラメータ
    params = {
        'status': 'private',
        'per_page': 100,
        'fields': 'link'
    }
    
    auth = (WP_USER, WP_APP_PASSWORD)
    print(f"WordPressから非公開記事を取得中...")
    
    try:
        response = requests.get(api_url, params=params, auth=auth)
        response.raise_for_status()
        posts = response.json()
        urls = [post['link'] for post in posts]
        return urls
    except Exception as e:
        print(f"【エラー】取得失敗: {e}")
        return []

def notify_google_indexing(urls):
    """
    Google Indexing APIを使用してURLの削除(URL_DELETED)を通知する
    """
    if not os.path.exists(SERVICE_ACCOUNT_FILE):
        print("【エラー】JSONキーファイルが見つかりません")
        return

    SCOPES = ["https://www.googleapis.com/auth/indexing"]
    print("Google Indexing API に接続中...")
    
    try:
        credentials = service_account.Credentials.from_service_account_file(
            SERVICE_ACCOUNT_FILE, scopes=SCOPES
        )
        service = build("indexing", "v3", credentials=credentials)
        
        print(f"対象URL数: {len(urls)} 件の削除通知を開始します...")

        for i, url in enumerate(urls, 1):
            # ★ここがポイント!タイプを「URL_DELETED」にする
            body = {
                "url": url,
                "type": "URL_DELETED"
            }
            try:
                service.urlNotifications().publish(body=body).execute()
                print(f"[{i}/{len(urls)}] 削除通知成功: {url}")
            except HttpError as e:
                print(f"[{i}/{len(urls)}] 失敗: {url} (Error: {e})")

    except Exception as e:
        print(f"【エラー】API接続エラー: {e}")

if __name__ == "__main__":
    print("--- インデックス削除ツール起動 ---")
    private_urls = get_private_posts()
    
    if private_urls:
        print(f"計 {len(private_urls)} 件の非公開記事が見つかりました。")
        notify_google_indexing(private_urls)
    else:
        print("非公開記事はありませんでした。")
    print("--- 完了 ---")
国内のAI狂い
💡 管理人の考察

「過去の失敗(大量の非公開記事)」を「技術のネタ」に昇華する…これこそエンジニアブロガーの生き様だよね!(笑)

このツールのおかげで、もしまたアドセンス審査に落ちて記事整理が必要になっても、私は笑顔でボタンを一つ押すだけで済むようになったよ。
…いや、そもそも落ちないのが一番だけどね!?

みんなも「もしもの時」のために、このツールを用意しておくと心の平穏が保てるかも?
それじゃあ、アドセンス合格目指して頑張ろうね!Pythonしか勝たん!💖

よかったらシェアしてね!
  • URLをコピーしました!
目次