2025/08/07 📝しないけど😂(OFF-Topic)
08:51
…
analysisNeed explain conversion to Movable Type.
assistantfinal## ① 「Movable Type」に投稿しやすい形に変換するとは?
- ブログ記事の本文 → Markdown / HTML(MT が扱えるフォーマット)
- タグ・カテゴリ → MT のタグ/カテゴリー設定に自動で付与
- 画像・添付ファイル → 事前にアップロードし、URL を埋め込む
以下では、Python + LM Studio(OpenAI API を呼び出すプラグイン)を使って「ブログ記事のアイデア」→「完成した記事本文+メタ情報」を自動生成し、さらに Movable Type の REST‑API で投稿する一連の流れを示します。
② 環境構築(必要なもの)
| 項目 | 内容 |
|---|---|
| Python 3.10+ | 標準ライブラリ+ requests など |
| LM Studio + OpenAI プラグイン | 上記回答で説明した通りにセットアップ |
| Movable Type の REST‑API 有効化 | MT 管理画面 → Tools → API で “REST‑API” を有効化し、キーを取得 |
| 環境変数 | OPENAI_API_KEY, MT_API_URL, MT_API_USER, MT_API_PASSWORD |
export OPENAI_API_KEY="sk-xxxxxxxxxxxx"
export MT_API_URL="https://yourblog.com/mt-api.php"
export MT_API_USER="admin" # API ユーザー名
export MT_API_PASSWORD="password" # API パスワード
③ 記事生成スクリプト(Python)
import os, json, requests
from lmstudio import LMStudioClient
# ---------- 1. OpenAI を呼び出して記事を作る ----------
client = LMStudioClient() # ローカルサーバに接続
prompt = """
You are a professional travel blogger.
Write an engaging blog post (≈800 words) about the hidden gems of Kyoto.
Include a catchy title, subheadings, and a short list of recommended restaurants.
Add relevant tags: travel, Kyoto, hidden gems, food.
"""
response = client.chat(
model="gpt-4o-mini",
messages=[{"role":"user","content":prompt}],
)
article_text = response.choices[0].message.content
# ---------- 2. タイトル・タグ抽出 ----------
def extract_title_and_tags(text):
lines = text.splitlines()
title = None
tags = []
for line in lines:
if line.lower().startswith("title:"):
title = line.partition(":")[2].strip()
elif line.lower().startswith("tags:"):
tags_str = line.partition(":")[2].strip()
tags = [t.strip() for t in tags_str.split(",")]
return title, tags
title, tags = extract_title_and_tags(article_text)
# ---------- 3. Movable Type API で投稿 ----------
mt_api_url = os.getenv("MT_API_URL")
api_user = os.getenv("MT_API_USER")
api_pass = os.getenv("MT_API_PASSWORD")
payload = {
"mode": "publish",
"action": "newentry",
"blog_id": 1, # 対象ブログ ID(管理画面で確認)
"title": title,
"text": article_text,
"tags": ",".join(tags),
"categories":"Travel", # 必要なら複数カンマ区切り
}
r = requests.post(mt_api_url, data=payload, auth=(api_user, api_pass))
print("MT API status:", r.status_code)
print("Response:", r.text)
使い方
- 上記スクリプトを
post_to_mt.pyとして保存。 - ターミナルで実行:
python post_to_mt.py
- スクリプトが OpenAI に記事を書かせ、取得した本文とメタ情報を MT の REST‑API へ送信します。
- 成功すると「200 OK」とともに記事 ID が返ります。
④ 実際に使えるコツ
| 項目 | 推奨設定 |
|---|---|
| プロンプト | タイトル・タグの抽出を自動化したい場合は、prompt 内で「タイトルとタグを必ず含めてください」と明示すると良い。 |
| 記事長調整 | max_tokens=1500 などを client.chat() に渡して制御。 |
| 画像挿入 | 画像 URL を取得し、本文に  を埋め込む。画像は事前に MT のメディアライブラリへアップロードしておくと便利。 |
| カテゴリ自動付与 | MT API では categories フィールドをカンマ区切りで渡せるので、プロンプトで「カテゴリ: …」を書き出させて抽出すると楽。 |
⑤ まとめ
- LM Studio + OpenAI で記事本文+メタ情報を生成
- 取得したテキストを Movable Type の REST‑API に渡して投稿
- タイトル・タグ・カテゴリはプロンプト内で「必ず出力してください」と指示し、Python 側で抽出
これにより、人手で書くことなく、自動化されたブログ記事の作成と即時公開 が可能になります。ぜひ試してみてくださいね! 🚀