본문 바로가기

카테고리 없음

WordPress에서 ChatGPT를 활용한 게시물 자동 생성 및 퍼블리싱

 

 

ChatGPT의 API를 사용하려면 유료버전을 사용해야 한다고 합니다.

제가 유료버전은 이용하지 않아 ChatGPT를 이용한 컨텐츠 생성은 다음 기회에 적용해 보겠습니다.

 

오늘은 ChatGPT에 질문만 해서 프로그램을 만들어 보려고 합니다.

아래 내용도 ChatGPT에게 포스팅 내용도 부탁하여 작성한 내용입니다.

 

시작하겠습니다.

 


 

 

서론

최근에는 콘텐츠 제작과 관리를 자동화하는 방법이 중요성을 갖추고 있습니다. 이에 따라 WordPress와 ChatGPT를 연동하여 게시물을 자동으로 생성하고 퍼블리싱하는 방법을 소개하고자 합니다.

1. ChatGPT와 WordPress 연동하기

1.1 ChatGPT API 호출하기


$chatgptResponse = $chatgptAPI->generatePostContent($prompt);
$chatgptResult = json_decode($chatgptResponse, true);

// 생성된 글의 제목과 내용 추출
$postTitle = $chatgptResult['choices'][0]['message']['content'];
$postContent = $chatgptResult['choices'][1]['message']['content'];
            

2. WordPress에 글 등록하기

2.1 WordPress REST API 호출


$tags = ['Tag1', 'Tag2'];
$categories = ['Category1', 'Category2'];

$wordpressResponse = $wordpressAPI->addPost($postTitle, $postContent, $tags, $categories);

// 결과 확인
if ($wordpressResponse === false) {
    echo 'Failed to post on WordPress.';
} else {
    echo 'Post added successfully!';
}
            

3. 포스팅 성공과 오류 처리

3.1 결과 확인


// 결과 확인
if ($wordpressResponse === false) {
    echo 'Failed to post on WordPress.';
} else {
    echo 'Post added successfully!';
}
            

4. 마무리

이렇게해서 우리는 ChatGPT와 WordPress를 통합하여 게시물을 자동으로 생성하고 퍼블리싱하는 과정을 살펴보았습니다. SEO를 고려한 자동화된 콘텐츠 생성과 퍼블리싱은 검색 엔진 랭킹을 높이고 사용자에게 풍부한 정보를 제공하는 효과적인 전략입니다.

더 자세한 코드와 설정은 GitHub 저장소 에서 확인 가능합니다. 앞으로 더 많은 자동화 및 통합에 대한 내용들로 계속해서 함께해요!

 


 

여기까지가 ChatGPT가 작성해준 포스팅 내용입니다.

제가 ChatGPT와 주고 받은 내용을 4,000자로 요약해서 포스팅을 부탁했습니다.

요약해서 그런지 프로그램 내용에 빠진 부분이 많습니다.

 

아래는 실제 ChatGPT가 만들어준 프로그램 내용입니다.

파일이름까지 지정해 달라고 했습니다.

 

 

form.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ChatGPT WordPress Integration</title>
</head>
<body>
    <h1>ChatGPT WordPress Integration</h1>

    <form action="chatgpt_wordpress_integration.php" method="post">
        <label for="prompt">Enter your ChatGPT prompt:</label>
        <input type="text" id="prompt" name="prompt" required>
        <br>
        <button type="submit">Generate and Post</button>
    </form>
</body>
</html>

 

 

chatgpt_wordpress_integration.php


class CurlRequest
{
    private $url;
    private $headers;
    private $data;
    private $verbose;

    public function __construct($url, $headers = [], $data = [], $verbose = false)
    {
        $this->url = $url;
        $this->headers = $headers;
        $this->data = $data;
        $this->verbose = $verbose;
    }

    public function execute()
    {
        $ch = curl_init($this->url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($this->data));
        curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_VERBOSE, $this->verbose);

        $response = curl_exec($ch);

        // 디버깅 정보 출력
        if ($this->verbose) {
            echo "cURL Request:\n";
            echo curl_getinfo($ch, CURLINFO_HEADER_OUT) . "\n";
            echo "cURL Response:\n";
            echo $response . "\n";
        }

        curl_close($ch);

        return $response;
    }
}

class ChatGPTAPI
{
    private $apiKey;

    public function __construct($apiKey)
    {
        $this->apiKey = $apiKey;
    }

    public function generatePostContent($prompt)
    {
        $url = 'https://api.openai.com/v1/chat/completions';
        $headers = [
            'Content-Type: application/json',
            'Authorization: Bearer ' . $this->apiKey,
        ];

        $data = [
            'messages' => [
                ['role' => 'system', 'content' => 'You are a helpful assistant.'],
                ['role' => 'user', 'content' => $prompt],
            ],
        ];

        $request = new CurlRequest($url, $headers, $data);
        return $request->execute();
    }
}

class WordPressAPI
{
    private $apiUrl;
    private $username;
    private $password;

    public function __construct($apiUrl, $username, $password)
    {
        $this->apiUrl = $apiUrl;
        $this->username = $username;
        $this->password = $password;
    }

    public function getAuthToken()
    {
        $url = $this->apiUrl . '/wp-json/jwt-auth/v1/token';
        $headers = ['Content-Type: application/json'];
        $data = [
            'username' => $this->username,
            'password' => $this->password,
        ];

        $request = new CurlRequest($url, $headers, $data);
        $response = $request->execute();
        $result = json_decode($response, true);

        return isset($result['token']) ? $result['token'] : null;
    }

    public function addPost($title, $content, $tags, $categories)
    {
        $authToken = $this->getAuthToken();

        if ($authToken) {
            $url = $this->apiUrl . '/wp-json/wp/v2/posts';
            $headers = [
                'Content-Type: application/json',
                'Authorization: Bearer ' . $authToken,
            ];
            $data = [
                'title' => $title,
                'content' => $content,
                'tags' => $tags,
                'categories' => $categories,
            ];

            $request = new CurlRequest($url, $headers, $data);
            return $request->execute();
        } else {
            return false; // 인증 토큰을 가져오지 못한 경우
        }
    }
}

// 사용자로부터 입력 받은 ChatGPT prompt
$prompt = isset($_POST['prompt']) ? $_POST['prompt'] : '';

// WordPress API 및 사용자 정보
$wordpressApiUrl = 'YOUR_WORDPRESS_REST_API_URL';
$wordpressUsername = 'YOUR_WORDPRESS_USERNAME';
$wordpressPassword = 'YOUR_WORDPRESS_PASSWORD';

$chatgptApiKey = 'YOUR_CHATGPT_API_KEY';

$chatgptAPI = new ChatGPTAPI($chatgptApiKey);
$wordpressAPI = new WordPressAPI($wordpressApiUrl, $wordpressUsername, $wordpressPassword);

// ChatGPT API 호출
$chatgptResponse = $chatgptAPI->generatePostContent($prompt);

$chatgptResult = json_decode($chatgptResponse, true);
$postTitle = $chatgptResult['choices'][0]['message']['content'];
$postContent = $chatgptResult['choices'][1]['message']['content'];

// WordPress REST API 호출
$tags = ['Tag1', 'Tag2'];
$categories = ['Category1', 'Category2'];

$wordpressResponse = $wordpressAPI->addPost($postTitle, $postContent, $tags, $categories);

// 결과 확인
if ($wordpressResponse === false) {
    echo 'Failed to post on WordPress.';
} else {
    echo 'Post added successfully!';
}
            

 

 

위 코드로 실제 테스트를 했는데, 오류가 있었습니다.

워드프레스에 REST API를 사용할 수 있는 플러그인을 설치되어 있어야 합니다.

그래서 저는 WordPress REST API Authentication 플러그인을 설치 했습니다.

 

중간에 $data 부분도 다음과 같이 변경했습니다.

      $data    = [
          'title'     => $title,
          'content'   => $content,
          'post_tag'  => $tags,
          'category'  => $categories,
          'post_status' => 'draft', // publish: 바로 발행, draft: 임시저장
      ];

 

ChatGPT를 무료로 사용하고 있어, 컨텐츠 생성과 관련된 부분은 주석처리하여,

워드프레스 자동 포스팅을 테스트 했는데 문제 없습니다. (tag나 category도 주석처리 했습니다.)

 

조금만 더 수정하면 자동 포스팅도 가능해 보입니다.