2025/08/07 📝しないけど😂(OFF-Topic)

08:51

著者: かっぱ

カテゴリー: パソコン・インターネット, 雑記, IT技術ネタ?

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)

 

使い方

 

  1. 上記スクリプトを post_to_mt.py として保存。
  2. ターミナルで実行:

 

python post_to_mt.py

 

  1. スクリプトが OpenAI に記事を書かせ、取得した本文とメタ情報を MT の REST‑API へ送信します。
  2. 成功すると「200 OK」とともに記事 ID が返ります。

 


 

④ 実際に使えるコツ

 

項目 推奨設定
プロンプト タイトル・タグの抽出を自動化したい場合は、prompt 内で「タイトルとタグを必ず含めてください」と明示すると良い。
記事長調整 max_tokens=1500 などを client.chat() に渡して制御。
画像挿入 画像 URL を取得し、本文に ![画像](…) を埋め込む。画像は事前に MT のメディアライブラリへアップロードしておくと便利。
カテゴリ自動付与 MT API では categories フィールドをカンマ区切りで渡せるので、プロンプトで「カテゴリ: …」を書き出させて抽出すると楽。

 


 

⑤ まとめ

 

  1. LM Studio + OpenAI で記事本文+メタ情報を生成
  2. 取得したテキストを Movable Type の REST‑API に渡して投稿
  3. タイトル・タグ・カテゴリはプロンプト内で「必ず出力してください」と指示し、Python 側で抽出

 

これにより、人手で書くことなく、自動化されたブログ記事の作成と即時公開 が可能になります。ぜひ試してみてくださいね! 🚀