こんにちは、ゲーム開発者のれいあです。
ブログを書くこと自体は嫌いじゃないんです。
でも、「記事が完成した後の、WordPressへの移植作業」。あれだけはどうしても生産性を感じられませんでした。
- Markdownで書いた原稿を、WordPressのエディタにコピペする
- 適切な場所に画像をアップロードして挿入し直す
- パーマリンク(URLスラッグ)を英語で設定する
- カテゴリを選び、タグを一つひとつ入力する
- 投稿日時を設定する…
これらは一つ一つはなんてことない作業ですが、積み重なると意外と時間が取られます。
「この単純作業をしている時間があれば、その間に別のツール開発が進められるのでは…?」
そう考えた私は、「Markdownで記事を書いたら、コマンド1発で画像挿入から投稿設定まで全自動で行うシステム」をPythonで構築しました。
実際、このシステムが動いている数分間、私は別のコードを書いたり、コーヒーを淹れたりできています。
今回は、そんな「自分専用・ブログ投稿自動化システム」の裏側を紹介します。
開発環境とシステム構成
私のブログ環境は以下の通りです。
- サーバー: Xserver(安定・高速で定番ですね)
- CMS: WordPress
- 画像管理: WordPress標準のメディアライブラリ
特別なデータベースや画像サーバー(S3など)は使わず、WordPress標準の機能を外部からPythonで操作する形をとっています。
自動化システムの全体像

- VSCode (Cursor) でMarkdown記事を書く。
python deploy_article.pyを実行する。- 〜 完 〜
これだけで、以下の処理が全自動で行われます。
- 画像処理: 記事内のローカルパスにある画像をWordPressへアップロードし、URLを置換。
- サムネイル生成: 記事タイトルからアイキャッチ画像を自動生成し、登録。
- メタデータ設定: パーマリンク、カテゴリ、タグ、投稿日時を自動設定。
- 投稿: 下書き(または公開)状態で保存。
1. 「ただのコピペ」をスクリプトにやらせる
まずは「書く」フェーズの効率化です。
毎回「ファイルを作って日付を入れて…」という定型作業も、スクリプト化しました。
# scripts/create_draft.py (抜粋)
def create_draft(title):
date_str = datetime.datetime.now().strftime("%Y-%m-%d")
filename = f"{date_str}-{safe_title}.md"
# フロントマター(設定領域)を自動生成
content = f"""---
title: {title}
date: {date_str}
status: draft
---
# {title}
ここに本文を書く...
"""
with open(filepath, "w") as f:
f.write(content)
python scripts/create_draft.py "記事タイトル" と打つだけで、執筆用のMarkdownファイルが生成されます。
あとは中身を書くだけ。この「開始のハードル」を下げるのが継続のコツです。
2. WordPress REST APIで「完全再現」
一番の目的だった「WordPressへの移植作業」の自動化には、WordPress標準の REST API を使用しました。
Xserverなどのレンタルサーバーでも、設定で「REST API」を有効にする(またはアクセス制限を適切に設定する)ことで使用可能です。
import frontmatter
import markdown
import requests
def deploy_article(md_path):
post = frontmatter.load(md_path)
# Markdownを目的に合わせてHTMLに変換
html_content = markdown.markdown(post.content)
url = "https://leia-talks.com/wp-json/wp/v2/posts"
# アプリケーションパスワードを使用(セキュリティ的におすすめ)
auth = ("user_name", "app_password")
data = {
"title": post.metadata['title'],
"content": html_content,
"status": "draft",
"slug": post.metadata['slug'], # パーマリンクも自動設定
"categories": resolve_categories(post.metadata['category']), # カテゴリID解決
"tags": resolve_tags(post.metadata['tags']) # タグID解決
}
requests.post(url, json=data, auth=auth)
※コードは簡略化しています。
このスクリプトの肝は、「カテゴリやタグのID解決」です。
人間がポチポチ選択していたカテゴリも、プログラムが「既存のカテゴリ名からIDを検索(なければ新規作成)」して自動で紐付けてくれます。
これで、管理画面を開く必要すらなくなりました。
3. 画像もメディアライブラリへ自動アップロード
記事中に画像を貼り付ける際も、以前はいちいちアップロードボタンを押していましたが、今はMarkdownにローカルの画像のパスを書くだけです。
スクリプトが「記事中の画像パスを検出し、API経由でWordPressにアップロードし、返ってきたURLに置換する」という処理を行っています。
これによって、記事の見た目をプレビューしながら書き進め、そのまま投稿できるようになりました。
どうやって勉強した?
ちなみに、私はPythonの専門家ではありません。
今回のスクリプトも、ChatGPTやCursorなどのAIツールに「こういうことがしたい」と相談しながら組み上げました。
「Pythonの文法を覚えてから…」と構えるよりも、「やりたいこと(自動化)」をAIとペアプログラミングしながら実現していく方が、結果的に学びも速いと感じています。
エラーが出てもAIと一緒にデバッグすればいいだけですからね。
今後の展望:AIによる「高品質な」完全自動化
現在は「執筆」は人間、「投稿」は自動化、という分担ですが、今後は「執筆」の部分もAIと協力して自動化したいと考えています。
ただし、よくある「量産型AI記事」を作るつもりはありません。
私の体験や思考(一次情報)を元にしつつ、構成や表現の肉付けをAIが担うような、「読んでいて面白く、かつ人間が書くよりも効率的な」新しい執筆フローを模索中です。
本来人間がやるべき「創造的な作業(ツール開発や体験)」にもっと時間を使うために、これからも面倒な作業はどんどん自動化していこうと思います。


