見出し画像

【Webマーケティング】キーワードランキング監視ツール サンプルコード

・業務効率化には何すればいいのかな?
・Pythonで自動化ツールを作成できると聞くけど、具体的に何が作れるの?
・自動化のアイデアが出てこない

こんな悩みを抱えている人に向けて、Pythonで作れる自動化ツールを解説しています。

Webマーケティングのツールについて、こちらの記事で紹介しています。
 ⇒【Webマーケティング】Pythonで作れる自動化ツールの具体例アイデア11選【業務効率化】

本記事では、キーワードランキング監視ツールのサンプルコードを公開しています。

サンプルコードは、自分で作成するのが難しい方や、ツール作成の手間を減らしたい方にお勧めです。ぜひご活用ください。



アイデア「キーワードランキング監視ツール」

概要

指定したキーワードについて、検索エンジンのランキングを監視し、順位をレポートします。

導入メリット

SEO戦略の効果を定量的に測定し、キーワードのパフォーマンスを最適化できます。

ツール機能

検索エンジン(Google)における指定キーワードのランキングを追跡し、ランキングの変動や競合他社との比較データを提供します。

必要技術

Custom Search JSON API:Google検索をおこなう

requests:検索エンジンからのデータ収集と解析に使用

pandas:収集したデータの整理と分析に使用

Matplotlib:分析結果の可視化に使用

処理フロー

  1. 監視したいキーワードと、対象サイトのURLをファイルから読み込む

  2. 指定されたキーワードで検索エンジンをクエリし、ランキングデータを収集

  3. 収集したランキングデータを分析し、サイトのランキング変動を記録

  4. ランキング変動の記録ファイルを読みこみ、ランキング変動の折れ線グラフを表示


注意事項

著作権について

本ソースコードの著作権は、販売者に帰属します。
修正や改変は自由に行えますが、無断での複製、配布は法律で禁止されています。

ライセンスについて

本ソースコードは、個人利用及び商用利用が可能です。ただし、再販売や、本ソースコードを基にした派生作品の販売は禁止します。

返金について

デジタルコンテンツの性質上、購入後の返品や返金は原則として受け付けておりません。

使用上の免責事項

本ソースコードは予告なく変更や修正を行う場合があります。
本ソースコードの動作を保証するものではありません。
本ソースコードの使用から生じたいかなる直接的または間接的な損害に対しても、販売者は責任を負いません。
動作の不具合については、購入者自身の責任で対処してください。

サポートについて

本ソースコードに関するサポートは行っておりません。バグ報告や質問への対応は致しかねます。


事前準備

keywords.csvの作成

「keywords.csv」を作成してください。
フォーマットは下記を参考にしてください。

URL,キーワード
https://www.example.com,example keyword
https://www.sample.com,sample keyword
https://www.test.com,test keyword

APIキーの取得

Custom Search JSON APIを使用するために、APIキーを取得します。
APIキーのIPアドレス制限など、不正利用対策を必ず行ってください。

https://console.cloud.google.com/

カスタム検索エンジンのID取得

検索エンジンのIDを取得します。

https://programmablesearchengine.google.com/


ソースコード

import pandas as pd
import matplotlib.pyplot as plt
import requests
import json
import time

# Custom Search JSON APIのキーと検索エンジンID
API_KEY = 'YOUR_API_KEY'
SEARCH_ENGINE_ID = 'YOUR_SEARCH_ENGINE_ID'

# CSVファイルからキーワードとURLを読み込む関数
def load_keywords(file_path):
    df = pd.read_csv(file_path)
    return df

# Google検索を実行し、順位を取得する関数
def get_rankings(keyword, target_url):
    url = f"https://www.googleapis.com/customsearch/v1?q={keyword}&key={API_KEY}&cx={SEARCH_ENGINE_ID}"
    response = requests.get(url)
    results = response.json()
    ranking = {}
    
    for index, item in enumerate(results.get('items', [])):
        if target_url in item['link']:
            ranking[target_url] = index + 1
            break
    else:
        ranking[target_url] = None
    
    return ranking

# ランキングデータを収集し、CSVファイルに保存する関数
def collect_rankings(file_path, output_file):
    keywords_df = load_keywords(file_path)
    rankings = []

    for _, row in keywords_df.iterrows():
        keyword = row['キーワード']
        url = row['URL']
        rank = get_rankings(keyword, url)
        rankings.append({'URL': url, 'キーワード': keyword, '順位': rank[url], '日付': time.strftime("%Y-%m-%d")})
    
    rankings_df = pd.DataFrame(rankings)
    rankings_df.to_csv(output_file, mode='a', index=False, header=not pd.io.common.file_exists(output_file))
    
    return rankings_df

# ランキング変動を可視化する関数
def plot_rankings(rankings_file):
    df = pd.read_csv(rankings_file)
    pivot_df = df.pivot(index='日付', columns='URL', values='順位')
    
    plt.figure(figsize=(10, 6))
    for column in pivot_df.columns:
        plt.plot(pivot_df.index, pivot_df[column], marker='o', label=column)
    
    plt.title('ランキング変動')
    plt.xlabel('日付')
    plt.ylabel('順位')
    plt.legend()
    plt.gca().invert_yaxis()  # 順位が低いほど下に表示
    plt.grid(True)
    plt.show()

# メイン処理
def main():
    input_file = 'keywords.csv'  # 監視対象のキーワードとURLを含むCSVファイル
    output_file = 'rankings.csv'  # ランキングデータを保存するCSVファイル
    
    # ランキングデータを収集し保存
    rankings_df = collect_rankings(input_file, output_file)
    print("最新のランキングデータを収集しました。")
    
    # ランキング変動を可視化
    plot_rankings(output_file)

if __name__ == "__main__":
    main()

最後まで読んでいただき、ありがとうございました!
参考のなったと思っていただけたら、
♡スキを押していただけると嬉しいです。

今後もサンプルコードを紹介する予定なので、
関心のある方は是非アカウントのフォローをお願いします!

この記事が気に入ったらサポートをしてみませんか?