
Pythonを使って、WordPressを自動で投稿する方法を解説します。
私がやりたかったことは、全市町村の「地名+○○」というキーワードを狙ったページを自動で生成すること。
全市町村のコピーページを大量に生成するのが、GoogleのSEO的に効果があるのかどうかはわかりませんので、そのあたりは自己責任で使って下さい。
まず、wordpress_xmlrpcというライブラリをインストールしましょう。
そのインストールができたらあとは、簡単です。
以下のソースコードをコピペして、実行するだけ。
使っているのはPython3です。
#!/usr/bin/env python
#-*- coding: utf-8 -*-
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo
from datetime import datetime
import csv, codecs, time, sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
def main(html):
wp = Client('https://www.sample.com/xmlrpc.php','ID','PASS') # Change "sample.com" to target url, and enter the user ID in "ID" and the password in "PASS".
with codecs.open("./timei.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
for r in reader:
timei = r[0] + r[1]
category = r[2]
image_id = r[3]
post = WordPressPost()
post.title = "【timei】Enter the title name here.".replace("timei", timei) # The "timei" part is converted to a place name.
post.content = html.replace("timei", timei)
post.terms_names = {'category': [category]}
post.thumbnail = r[3]
datetime.now()
post.post_status = 'publish'
wp.call(NewPost(post))
print("Post...")
print(r)
time.sleep(2)
def get_html():
html = """
Enter the html code you want to convert here. Put "timei" in the place you want to convert to a place name.
"""
return html
if __name__ == "__main__":
html = get_html()
main(html)
上記のコードを記述したファイルと同じ階層に、timei.csvというファイルを置く。
timei.csvファイルはこちらからダウンロードして下さい。timei.csvには全国の都道府県と市町村データが入っています。
4列目の数字は、各画像に入れたいアイキャッチ画像の画像IDを入力して下さい。
画像IDは、左サイドバーの「メディア」をクリックして、調べたい画像をクリックするとURLバーにitem=16というように数字が表示される。その数字が画像IDである。
あとは、実行するだけ。実行すると、timeiと記述した部分が、全国の市町村の地名に変換されてどんどん自動投稿されていきます。
しばらく、放置して待っていると、こんなサイトが出来上がり。
エックスサーバーを利用している場合には、デフォルトでセキュリティがかかっているので、事前に「WordPressセキュリティ」→「XML-RPC API アクセス制限」をOFFにして下さい。