Blogger APIを使ってPythonで記事を自動投稿する方法

ブログ

Blogger APIとは?

Blogger APIは、GoogleのBloggerプラットフォームでブログを作成・管理するためのRESTful APIです。これを使うことで、プログラムからブログの投稿や管理、コメントの操作などを行うことができます。

Outh Client IDの取得

OuthクライアントIDを取得する方法はいくつかありますが、Bloggerページから作成する方法と、GoogleCloudコンソールから作成する方法の2つを紹介します。

BloggerAPIページから取得する

以下のAPIキー取得ページを少しスクロールして、Outhクライアントキーを取得をクリックします。


すると、プロジェクト名を入力する画面になるので、プロジェクト名を適当につけて、NEXTへ進みます。

Prduct名をつけて進みます。

Web browserを選択して、CREATEをクリックします。

認証情報が表示されるので必ずメモしておいてください。

Google CloudコンソールからのAPIキー取得

Google Cloud Consoleにログインします。

プロジェクトを作成するか、既存のプロジェクトを選択します。

「APIとサービス」から「有効なAPIとサービス」を選択し、「APIとサービスを有効にする」をクリックします。

APIライブラリでBloggerAPIを検索します。

BloggerAPIを有効にします。

認証情報を作成をクリックします。

認証情報作成のための必要事項を入力します。
ユーザーデータを選択して、Outhクライアントを作成します。

あるいは、「APIとサービス」> 「認証情報」 > 「認証情報を作成」>「OuthクライアントID」からも作成可能です。

アプリケーションはウェブアプリケーションを選択して、作成します。

クライアントIDやシークレットが表示されるのでメモしておきます。

Pythonからの記事投稿

以下は、Blogger APIを使用して新しい投稿を作成するPythonスクリプトの解説記事です。このコードはOAuth 2.0認証を利用してBlogger APIにアクセスし、投稿を作成する方法を示しています。

スクリプトを実行する前に、以下の準備が必要です。

  1. Google Cloud Platformでの設定:
    – Google Cloud Consoleでプロジェクトを作成し、Blogger APIを有効にします。
    – OAuth 2.0のクライアントIDとクライアントシークレットを取得し、blogger_client_idblogger_client_secretに設定します。
    – 認証情報を保存するcredentials.jsonファイルを作成します。

  2. 必要なライブラリのインストール:
    google-api-python-client
    oauth2client
    httplib2

これらは、以下のコマンドでインストールできます。

bash
pip install google-api-python-client oauth2client httplib2

以下のコードは、Blogger APIを使用して新しい投稿を作成するためのPythonスクリプトです。

import os
import httplib2
from googleapiclient.discovery import build
from oauth2client import file, client, tools

blogger_client_id = os.environ['blogger_client_id']
blogger_client_secret = os.environ['blogger_client_secret']

credential_path = 'credentials.json'  # 認証情報を保存するファイルパス

def blogger_post(blog_id, title, content, labels, isDraft=True):
    if content is None:
        print('コンテンツがないため作成できません')
        return None

    # OAuth 2.0の認証フローを設定
    flow = client.OAuth2WebServerFlow(blogger_client_id, blogger_client_secret, 'https://www.googleapis.com/auth/blogger', redirect_uri='urn:ietf:wg:oauth:2.0:oob')
    storage = file.Storage(credential_path)
    credentials = storage.get()

    if credentials is None or credentials.invalid:
        credentials = tools.run_flow(flow, storage)

    # 認証情報を使用してBlogger APIを初期化
    http = credentials.authorize(httplib2.Http())
    service = build('blogger', 'v3', http=http)

    # 新しい投稿を作成するためのデータ
    post_data = {
        "kind": "blogger#post",
        "blog": {
            "id": blog_id
        },
        "title": title,
        "content": content,
        "labels": labels,
    }

    # 投稿を作成
    try:
        if isDraft:
            new_post = service.posts().insert(blogId=blog_id, body=post_data, isDraft=True).execute()
            print("新しい下書きが作成されました。投稿のID:", new_post['url'])
        else:
            new_post = service.posts().insert(blogId=blog_id, body=post_data).execute()
            print("新しい投稿が作成されました。投稿のID:", new_post['url'])
        return True
    except Exception as e:
        print("投稿の作成中にエラーが発生しました:", str(e))
        return False

blogger_client_id,blogger_client_secretは先ほど取得したIDに書き換えるなどしてください。

コードの解説

  1. OAuth 2.0認証フローの設定:
    client.OAuth2WebServerFlowを使用してOAuth 2.0の認証フローを設定します。ここでは、クライアントID、クライアントシークレット、およびスコープ(https://www.googleapis.com/auth/blogger)を指定します。

  2. 認証情報の取得:
    file.Storageを使って認証情報を取得し、必要に応じて新しく認証フローを実行します。

  3. Blogger APIの初期化:
    認証情報を使って、Blogger APIのサービスオブジェクトを作成します。

  4. 投稿データの準備:
    投稿データを辞書形式で準備し、post_dataとして定義します。

  5. 投稿の作成:
    service.posts().insertメソッドを使って新しい投稿を作成します。isDraftフラグによって、投稿を下書きとして保存するか公開するかを選べます。

これらを実行することで、BloggerにPythonから記事を自動で投稿することが可能になります。

参考:APIキーの取得

公開された記事を取得するだけの場合は、こちらのAPIキーでも可能です。
APIの使い方ページにあるAPIキーの取得部分のキー管理をクリックします。

キーの発行をクリックすると以下のような画面になります。
キーの発行

プロジェクト名をつけて、キーを発行します。
APIキー取得
取得完了

SHOW KEYをクリックして、APIキーを確認し、メモしておきます。

Blogger API: スタートガイド  |  Google for Developers
セットアップからスタイル設定まで、Blogger API の使用方法を学びます。
タイトルとURLをコピーしました