【WordPress効率化④】ブログのアイキャッチ画像をPython×フリー画像APIで自動設定

Python自動化

はじめに:今回のテーマについて

これまでの連載「WordPress効率化」シリーズでは、Pythonを使って記事の自動投稿やカテゴリ・タグの自動設定など、WordPress運用を効率化するテクニックをご紹介してきました。

第4回となる今回は、多くのブロガーが手間に感じている「アイキャッチ画像の設定」を自動化する方法を解説します。フリー画像を提供しているAPI(Unsplash API)とPythonを組み合わせることで、記事を投稿するたびに自動でアイキャッチ画像を設定できるようになります。

「毎回画像を探すのが面倒…」「センスに自信がなくて選ぶのに時間がかかる…」という方は、ぜひ最後まで読んでみてください。

アイキャッチ画像を自動化する仕組みとメリット

そもそもアイキャッチ画像とは?

アイキャッチ画像とは、記事一覧やSNSシェア時に表示される「記事の顔」となる画像のことです。読者の目を引き、クリック率にも影響する重要な要素ですが、毎回手動で探して設定するのは意外と時間がかかる作業です。

自動化することで得られるメリット

  • 記事投稿の作業時間を大幅に削減できる
  • 画像選びで迷う時間がなくなる
  • 記事タイトルやキーワードに関連した画像を自動選定できる
  • 大量の記事を投稿する際の作業ボトルネックを解消できる

特に、自動投稿の仕組みをすでに構築している方にとっては、この工程を自動化することで完全な「無人投稿フロー」に近づけることができます。

フリー画像APIを準備しよう

Unsplash APIとは

Unsplashは、商用利用も可能な高品質のフリー画像を提供しているサービスです。APIを利用することで、キーワード検索に応じた画像をプログラムから取得できます。

APIキーの取得方法

  1. Unsplash Developersにアクセスし、アカウントを作成します。
  2. 「Your apps」から新しいアプリケーションを登録します。
  3. 登録が完了すると「Access Key」が発行されるので、これをメモしておきます。

このAccess Keyが、Pythonから画像を検索する際に必要になります。

利用時の注意点

Unsplash APIには無料枠のリクエスト制限(デフォルトで1時間あたり50回まで)があります。大量の記事を一気に処理する場合は、リクエスト間隔を調整するなどの工夫が必要です。また、商用利用の際はUnsplashの利用規約を確認しておきましょう。

Pythonでアイキャッチ画像を自動取得・設定する実装

必要なライブラリのインストール

今回は「requests」ライブラリを使ってUnsplash APIとWordPress REST APIの両方にアクセスします。

pip install requests

Unsplashから画像を検索・取得する

まずは、キーワードに応じた画像URLを取得する関数を作成します。

import requests

UNSPLASH_ACCESS_KEY = "あなたのAccess Key"

def get_image_url(keyword):
    url = "https://api.unsplash.com/search/photos"
    params = {
        "query": keyword,
        "per_page": 1,
        "client_id": UNSPLASH_ACCESS_KEY
    }
    response = requests.get(url, params=params)
    data = response.json()
    if data["results"]:
        return data["results"][0]["urls"]["regular"]
    return None

この関数に記事タイトルやキーワードを渡すことで、関連する画像のURLを取得できます。

画像をダウンロードしてWordPressにアップロードする

取得した画像URLから画像データをダウンロードし、WordPressのメディアライブラリにアップロードします。

from requests.auth import HTTPBasicAuth

WP_URL = "https://your-site.com/wp-json/wp/v2/media"
WP_USER = "あなたのユーザー名"
WP_APP_PASSWORD = "アプリケーションパスワード"

def upload_image_to_wp(image_url, filename="eyecatch.jpg"):
    image_data = requests.get(image_url).content
    headers = {
        "Content-Disposition": f'attachment; filename="{filename}"',
        "Content-Type": "image/jpeg"
    }
    response = requests.post(
        WP_URL,
        headers=headers,
        data=image_data,
        auth=HTTPBasicAuth(WP_USER, WP_APP_PASSWORD)
    )
    return response.json()["id"]  # メディアIDを返す

ここで取得できる「メディアID」が、次のステップでアイキャッチ画像として記事に紐づけるために必要になります。

記事にアイキャッチ画像を紐づける

投稿済み記事に設定する場合

すでに投稿済みの記事のIDが分かっている場合、以下のコードでアイキャッチ画像(featured_media)を設定できます。

POST_ID = 123  # 対象の投稿ID

def set_featured_image(post_id, media_id):
    url = f"https://your-site.com/wp-json/wp/v2/posts/{post_id}"
    data = {"featured_media": media_id}
    response = requests.post(
        url,
        json=data,
        auth=HTTPBasicAuth(WP_USER, WP_APP_PASSWORD)
    )
    return response.status_code

新規投稿と同時に設定する場合

新しく記事を投稿する際は、投稿データの中に「featured_media」を含めることで、一度のリクエストでアイキャッチ画像まで設定できます。

def create_post_with_image(title, content, media_id):
    url = "https://your-site.com/wp-json/wp/v2/posts"
    data = {
        "title": title,
        "content": content,
        "status": "publish",
        "featured_media": media_id
    }
    response = requests.post(
        url,
        json=data,
        auth=HTTPBasicAuth(WP_USER, WP_APP_PASSWORD)
    )
    return response.json()

一連の処理をまとめる

これまでの関数を組み合わせると、タイトルを指定するだけでアイキャッチ画像付きの記事を自動投稿できます。

title = "初心者向け!ブログ運営のコツ"
keyword = "blog writing"

image_url = get_image_url(keyword)
media_id = upload_image_to_wp(image_url)
result = create_post_with_image(title, "本文サンプルです。", media_id)

print("投稿完了:", result["link"])

このコードを実行するだけで、キーワードに関連した画像が自動で選ばれ、アイキャッチ画像として設定された記事が公開されます。

まとめ

今回は、PythonとUnsplash APIを活用して、WordPressのアイキャッチ画像を自動設定する方法をご紹介しました。

  • Unsplash APIでキーワードに応じた画像を検索・取得する
  • 取得した画像をWordPressのメディアライブラリにアップロードする
  • アップロードした画像を記事のアイキャッチ画像として設定する

この一連の流れを自動化することで、記事投稿の手間をさらに減らし、より効率的なブログ運営が可能になります。これまでの連載でご紹介してきた自動投稿の仕組みと組み合わせれば、タイトルと本文を用意するだけで、画像設定まで含めた「完全自動投稿」も実現できます。

次回の連載では、さらに一歩進んで、複数記事の一括自動投稿やスケジュール投稿の実装方法について解説していく予定です。ぜひお楽しみに。

\ 高速WordPress環境を構築するなら /

【15日間無料】コアサーバーでWordPressを始める >

タイトルとURLをコピーしました