※本記事にはPR(アフィリエイト広告)が含まれています。
こんにちは!「ブログ記事メンテナンス自動化講座」第2回へようこそ。前回は、ブログ記事を定期的にメンテナンスすることの重要性と、自動化の全体像についてお話ししました。今回はその中でも特に重要なテーマ、「SEOキーワードの過不足をPythonで自動診断する方法」について、初心者の方にもわかりやすく解説していきます。
「この記事、ちゃんとSEOキーワードを使えているかな?」「キーワードを詰め込みすぎてペナルティにならないかな?」——そんな不安を感じたことはありませんか?今回は、そのチェック作業をPythonで自動化し、効率的に記事の品質を保つ方法をご紹介します。
① なぜSEOキーワードの「過不足」が記事の評価を左右するのか
まずは、なぜキーワードの過不足をチェックする必要があるのか、その理由から押さえておきましょう。
キーワードが不足するとどうなる?
狙っているキーワードが記事内にほとんど登場しない場合、検索エンジンはその記事が「そのキーワードに関連した内容である」と正しく認識できません。結果として、検索結果の上位に表示されにくくなり、せっかく書いた記事がユーザーの目に触れる機会を失ってしまいます。
キーワードを詰め込みすぎるとどうなる?
逆に、キーワードを不自然なほど何度も繰り返す「キーワードスタッフィング」も問題です。読者にとって読みにくい文章になるだけでなく、検索エンジンからスパム的な行為とみなされ、評価を下げられてしまう可能性があります。
つまり、キーワードは「適量」を保つことが非常に重要なのです。しかし、記事が増えてくると、1本1本を手作業でチェックするのは大変な労力がかかります。そこで役立つのが、Pythonによる自動診断です。
② Pythonでキーワード診断を自動化する仕組み
ここでは、キーワード診断をPythonで実現するための基本的な仕組みを解説します。
形態素解析とは?
日本語の文章は英語と違って単語の間にスペースがないため、そのままでは「どこからどこまでが1つの単語か」をコンピュータが判断できません。そこで使われるのが「形態素解析」という技術です。これは文章を単語(形態素)単位に分割し、品詞(名詞・動詞など)を判定してくれる処理のことです。
今回は、Pythonで手軽に形態素解析ができるライブラリ「janome」を使用します。
必要なライブラリをインストールしよう
以下のコマンドでjanomeをインストールしておきましょう。
pip install janome
これだけで、日本語の形態素解析が行える環境が整います。
③ 実践!キーワード診断スクリプトを作ってみよう
それでは実際に、記事本文から狙ったキーワードの出現回数をカウントするスクリプトを作成してみましょう。
基本となるコードの全体像
from janome.tokenizer import Tokenizer
from collections import Counter
def diagnose_keywords(text, target_keywords):
tokenizer = Tokenizer()
# 名詞のみを抽出する
words = [token.surface for token in tokenizer.tokenize(text)
if token.part_of_speech.split(',')[0] == '名詞']
word_count = Counter(words)
total_words = len(words)
result = {}
for keyword in target_keywords:
count = word_count.get(keyword, 0)
density = (count / total_words) * 100 if total_words > 0 else 0
result[keyword] = {
"出現回数": count,
"出現率(%)": round(density, 2)
}
return result
# 使用例
article_text = """
ブログ記事のSEO対策は、検索流入を増やすために非常に重要です。
SEOキーワードを適切に配置することで、記事の評価が向上します。
ただし、SEOキーワードを詰め込みすぎると逆効果になるため注意が必要です。
"""
target_keywords = ["SEO", "キーワード", "対策"]
diagnosis = diagnose_keywords(article_text, target_keywords)
for keyword, data in diagnosis.items():
print(f"キーワード『{keyword}』: {data['出現回数']}回 (出現率 {data['出現率(%)']}%)")
コードの各部分を解説
- Tokenizer():janomeの形態素解析エンジンを呼び出しています。
- part_of_speech.split(‘,’)[0] == ‘名詞’:品詞情報の中から「名詞」だけを抽出する条件です。SEOキーワードは名詞であることが多いため、ここに絞り込んでいます。
- Counter(words):抽出した単語の出現回数を自動的にカウントしてくれる便利な機能です。
- 出現率(キーワード密度):全体の単語数に対して、そのキーワードが何%を占めているかを算出しています。キーワード密度自体は検索順位を決める公式な指標ではありませんが、極端な偏りがないかを確認する目安として参考にできます。
実行してみよう
上記のコードを実行すると、以下のような結果が出力されます(名詞の総数は文章によって変わるため、数値はあくまで一例です)。
キーワード『SEO』: 3回 (出現率 8.33%)
キーワード『キーワード』: 2回 (出現率 5.56%)
キーワード『対策』: 1回 (出現率 2.78%)
この例では「SEO」というキーワードの出現率がやや高めに出ています。実際の記事であれば、この結果をもとに調整を検討すると良いでしょう。
④ 診断結果を記事改善にどう活かすか
スクリプトで診断結果が得られたら、次はそれを実際の記事改善に活かしていきましょう。
キーワードが不足している場合の対処法
出現率が1%未満など、極端に低い場合は、見出しや本文中の自然な文脈の中にキーワードを追加しましょう。ただし、無理に詰め込むのではなく、読者にとって自然な文章であることを優先してください。
キーワードが過剰な場合の対処法
特定のキーワードが不自然なほど繰り返し登場している場合は、キーワードスタッフィングと判断されるリスクがあります。明確な基準値があるわけではありませんが、診断結果の出現率が他のキーワードに比べて突出していないかを目安に確認すると良いでしょう。類義語や言い換え表現を活用し、同じ単語の繰り返しを減らす工夫をしましょう。例えば「SEO対策」を「検索エンジン最適化」と表現を変えるのも一つの方法です。
このように、診断結果を数値として可視化できると、感覚に頼らない客観的な記事改善が可能になります。
まとめ
今回は、SEOキーワードの過不足をPythonで自動診断する方法についてご紹介しました。ポイントを振り返ってみましょう。
- キーワードの過不足は、検索エンジンからの評価に大きく影響する
- janomeライブラリを使えば、日本語の形態素解析が手軽に行える
- Counterを使ってキーワードの出現回数・出現率を自動計算できる
- 診断結果をもとに、不足時は追加、過剰時は言い換えで調整する
手作業でのキーワードチェックは手間がかかりますが、今回紹介したスクリプトを使えば、複数の記事を効率よく診断できるようになります。次回第3回では、さらに一歩進んで「記事の鮮度(更新日)を自動チェックする方法」について解説する予定です。お楽しみに!
Photo by Radowan Nakif Rehan on Unsplash

