Communitygithub.com

ReitoKira/WordPress-Publishing-Skill-For-Claude

🚀 WordPressへの投稿をClaudeスキルで簡単に。Gutenberg対応、スマートなカテゴリ選択、REST API経由のSEOタグ生成を提供します。

WordPress-Publishing-Skill-For-Claude とは?

このスキルは、Claude CodeなどのAIエージェントがWordPressのREST APIを利用して、投稿を効率的に公開できるようにするためのツールです。Gutenbergブロックエディタをサポートしており、リッチなコンテンツを直接WordPressに送信できます。また、スマートなカテゴリ選択機能により、適切なカテゴリを自動で割り当て、SEOに最適なタグを生成することで、検索エンジンでの可視性を向上させます。開発者向けに、curlやNode.js、Python、PHPなど様々な言語での実装例が提供されており、カスタマイズが容易です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add ReitoKira/WordPress-Publishing-Skill-For-Claude

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

WordPress-Publishing-Skill-For-Claude は何をしますか?

🚀 WordPressへの投稿をClaudeスキルで簡単に。Gutenberg対応、スマートなカテゴリ選択、REST API経由のSEOタグ生成を提供します。

概要

このスキルは、Claude Code(または他のAIエージェント)がWordPressサイトと連携し、記事を公開するための機能を提供します。以下の特徴があります:

  • Gutenbergブロックエディタ対応:リッチなコンテンツを構造化データとして送信できます。
  • スマートカテゴリ選択:記事の内容に基づいて適切なカテゴリを自動選択します。
  • SEOタグ生成:記事からキーワードを抽出し、SEOに最適化されたタグを自動生成します。

使用方法

  1. 認証情報の設定:環境変数にWordPressの認証情報(WP_USER, WP_APP_PASSWORD, WP_SITE_URL)を設定します。
  2. スキルの呼び出し: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

関連スキル