WordPress-Publishing-Skill-For-Claude は何をしますか?
🚀 WordPressへの投稿をClaudeスキルで簡単に。Gutenberg対応、スマートなカテゴリ選択、REST API経由のSEOタグ生成を提供します。
概要
このスキルは、Claude Code(または他のAIエージェント)がWordPressサイトと連携し、記事を公開するための機能を提供します。以下の特徴があります:
- Gutenbergブロックエディタ対応:リッチなコンテンツを構造化データとして送信できます。
- スマートカテゴリ選択:記事の内容に基づいて適切なカテゴリを自動選択します。
- SEOタグ生成:記事からキーワードを抽出し、SEOに最適化されたタグを自動生成します。
使用方法
- 認証情報の設定:環境変数にWordPressの認証情報(
WP_USER,WP_APP_PASSWORD,WP_SITE_URL)を設定します。 - スキルの呼び出し:Claudeに記事の公開を依頼すると、スキルが自動的にREST APIを介して投稿を作成します。
認証情報
export WP_USER="your_username"
export WP_APP_PASSWORD="your_application_password"
export WP_SITE_URL="https://your-wordpress-site.com/wp-json/wp/v2"
注意:アプリケーションパスワードはWordPress管理画面の「ユーザー」→「アプリケーションパスワード」から生成できます。
実装例
curlを使用する場合
curl -X POST https://your-wordpress-site.com/wp-json/wp/v2/posts \
-u "$WP_USER:$WP_APP_PASSWORD" \
-H "Content-Type: application/json" \
-d '{
"title": "サンプル記事タイトル",
"content": "<!-- wp:paragraph -->\n<p>これはサンプルコンテンツです。</p>\n<!-- /wp:paragraph -->",
"status": "publish",
"categories": [1, 2],
"tags": ["SEO", "WordPress", "ガイド"]
}'
Node.js (axios) を使用する場合
const axios = require('axios');
const wp = axios.create({
baseURL: process.env.WP_SITE_URL,
auth: {
username: process.env.WP_USER,
password: process.env.WP_APP_PASSWORD
}
});
async function createPost(title, content, categories, tags) {
try {
const response = await wp.post('/posts', {
title,
content,
status: 'publish',
categories,
tags
});
console.log('公開された記事ID:', response.data.id);
} catch (error) {
console.error('エラー:', error);
}
}
Python (requests) を使用する場合
import os
import requests
from requests.auth import HTTPBasicAuth
WP_USER = os.environ['WP_USER']
WP_APP_PASSWORD = os.environ['WP_APP_PASSWORD']
WP_SITE_URL = os.environ['WP_SITE_URL']
auth = HTTPBasicAuth(WP_USER, WP_APP_PASSWORD)
headers = {'Content-Type': 'application/json'}
data = {
'title': 'Pythonからの記事',
'content': 'これはPythonスクリプトから送信されたコンテンツです。',
'status': 'publish',
'categories': [1, 3],
'tags': ['Python', '自動化']
}
response = requests.post(f'{WP_SITE_URL}/posts', json=data, auth=auth, headers=headers)
print(response.json())
PHP を使用する場合
<?php
$wp_user = getenv('WP_USER');
$wp_app_password = getenv('WP_APP_PASSWORD');
$wp_site_url = getenv('WP_SITE_URL');
$args = array(
'headers' => array(
'Authorization' => 'Basic ' . base64_encode($wp_user . ':' . $wp_app_password),
'Content-Type' => 'application/json',
),
'body' => json_encode(array(
'title' => 'PHPからの記事',
'content' => 'PHPスクリプトで投稿されました。',
'status' => 'publish',
'categories' => array(1, 4),
'tags' => array('PHP', 'WordPress')
))
);
$response = wp_remote_post($wp_site_url . '/posts', $args);
$body = wp_remote_retrieve_body($response);
echo $body;
?>
トラブルシューティング
- 401 Unauthorized:認証情報が正しいか確認してください。アプリケーションパスワードが有効であることを確認します。
- 403 Forbidden:ユーザーに投稿作成権限があるか確認してください。
- REST APIが無効:WordPress設定でREST APIが有効になっているか確認します。
ライセンス
MIT