WordPressからTwitter自動連携APIが使用不可に!代替手順を説明
TwitterAPIが使えた頃は・・・
WordPressで書いたブログをTwitterにも自動投稿していたのだが、TwitterAPIが急にケチになって使用不可に。
流入の半分はTwitterから稼いでいたので、これは死活問題ということで対応を始めた。
ポイントは無料で使いたいということ。ブログの方に稼げるほどのアクセスがまだ無いので。
TwitterAPIが使えていた頃はWordPress側のプラグインで、Jetpackを使っていた。こちらも自動連携に制限回数があって使えなくなることがあった。
この対応で使っていたのが、WP to Twitterというプラグイン。これは便利だと重宝し始めた矢先、Twitter側から蹴られるようになった。Twitter側で無料APIを締め出した様子。
APIが使えないので、WordPressで記事を書くたびにTwitterの方に手動投稿するはめに。面倒なことは続かないので、何とか自動化できないかと模索を始める。
PowerAutomateを試してみる
まず、手を出したのがPowerAutomate。WordPressからTwitterへの自動連携パッケージみたいのがあったのだが、無料プランでは使えない。
とりあえず、WordPressに投稿されるたびに記事URLとタイトルをメールで飛ばすようなトリガーを設定。メールの内容をTwitterの投稿画面に貼るだけで良いので、多少は楽に。
メールでとばすかわりにTwitterの投稿画面を開かせて貼り付け、投稿という流れにすれば完成。ウシシシと思っていたのだが、このトリガーが意外と作動しない。フローのテストも問題ないので意味不明。
クラウドフローとデスクトップフローの連携とかも必要で、そっちを構築している間も、トリガーの動作が安定しない。
ので、PowerAutomateはもう良いやと全く別の方法を模索。
pythonで連携させることに
記事が予約投稿される時間は決まっているので、トリガーは別に要らない。定時にWordPressの最新記事のタイトルとURLを取得してくる。そのタイトルとURLをtwitterに投稿する。だけで良い。
これで考えたのがスクレイピング+twitter画面の操作をpythonでやらせること。
スクレイピングやら画面やキーボード操作みたいのをpythonでやらせるのは、既にやっていたので、それらを組み合わせる。
というわけで完成したのが以下。
以下のコードを.py形式のファイルにして保存。タスクスケジューラで自動起動すればいい。タスクスケジューラ部分はまだ導入していないが。
#ssl認証が降りない件を解決
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
#BeautifulSoupなどimport
import urllib.request
from bs4 import BeautifulSoup
#htmlデータを取得
with urllib.request.urlopen("https://ワードプレスのサイトアドレス/") as res:
html=res.read()
soup=BeautifulSoup(html,"html.parser")
result = ""
target_tag=soup.find(id="main")
#全てのリンクタグ<a>を取得し、最初のlinkのみをresultに格納(タイトルとURL)
for link in target_tag.find_all("a"):
if str(link.string) != "None":
result = link.string + " " + str(link.get("href"))
if len(result) > 0:
break
#clipboardへコピー
import pyperclip
pyperclip.copy(result)
import webbrowser
# tweet画面開く
#デフォルトのブラウザでtwitter投稿画面をオープン
webbrowser.open("https://twitter.com/compose/tweet")
import pyautogui as pag
import time
#ブラウザ起動まで待機、秒数は各自環境に応じて修正
time.sleep(9) #9秒待機
# 貼り付けctrl+v押下
pag.hotkey('ctrl', 'v')
# 投稿ボタンをアクティブにするため、tabキーで移動
pag.press(["tab","tab","tab","tab","tab","tab","tab","tab"])
# 投稿ボタン押下
pag.press(["enter"])
前半部分でスクレイピング、指定サイトの最新記事情報を拾ってきて、変数resultに格納している。
中間部でクリップボードにコピー。通常ブラウザにてtwitter投稿画面を起動。当然twitterはログイン済にしておく必要がある。
後半部分は画面操作。
まず、ブラウザ起動を9秒待つ。何秒待つかは個々人の環境次第。5秒から始めて、ブラウザ起動前にctrl+vを送信してしまいスカるたびに1秒ずつ伸ばした。今のところブラウザが立ち上がっていない状態でも9秒ならミスることはなくなった。
9秒待機後、ctrl+vで貼り付け、tabキーを連打させて、「ツイートする」ボタンをアクティブにする。最後にenterを送信して終了。
.pyファイルが動作するようにするには、何らかの設定が必要な気がするが、私の環境ではだいぶ前から普通に動いているので、ちと説明が難しい・・・。
この記事が気に入ったらサポートをしてみませんか?