Нейросети
March 21

[Пошаговое руководство] Поиск ключевых слов, создание и публикация 150 статей на сайте wordpress менее чем за 30 минут с помощью GPTChat и Python/Google Colab

  • Чтобы начать публиковать 150 постов на вашем сайте wordpress, потребуется менее 30 минут, а чтобы разместить их все в сети - не более 1 часа.
  • Метод 100% бесплатный, за исключением того, что нам нужен api ключ GPTChat. Но вы можете получить бесплатную пробную версию за 5 usd, так что это тоже может быть бесплатно.
  • Мы создаем 150 ключевых слов с помощью бесплатного инструмента ahrefs - https://ahrefs.com/keyword-generator.
  • Вставляем код в Google colab.
  • Убедитесь, что вы не сделали свою Google colab публичной для безопасности. По умолчанию она должна быть приватной, но лучше проверять это постоянно.
  • Этот код отвечает за создание постов через GPTChat API и публикацию на вашем сайте wordpress.
  • Мы создаем учетные данные для сайта wordpress, чтобы иметь возможность публиковать там посты.
  • Мы определяем, сколько постов мы хотим, а затем нажимаем кнопку
    (Посты публикуются автоматически после нажатия кнопки.)

Пожалуйста, обратите внимание, что это мой первый учебник, так что если я нарушил какие-либо правила, дайте мне знать, и я это исправлю. У меня есть файл google colab с кодом, но я не уверен, как его загрузить.

Начнем...
1) Зайдите на сайт https://ahrefs.com/keyword-generator и добавьте любое ключевое слово. Выделите ключевые слова и вопросы вот так и вставьте их в txt-файл.

Файл с ключевыми словами будет выглядеть вот так, он грязноват, но мы автоматически отформатируем его с помощью python.

02) Теперь нам нужно создать собственную Google Colab (которая также является 100% бесплатной для использования)

перейдите на https://colab.google/ и нажмите на "Новый блокнот".

Вот как это выглядит, нам нужно добавить несколько строк кода, создать файл, и мы готовы к работе

Добавьте этот код в первую строку, чтобы установить openai:

 !pip install openai --quiet

Этот код нужно добавить во вторую строку, он форматирует ключевые слова и содержит все функции:

import openai
import os
openai.api_key = "your_open_ai_api_key"

def make_post(the_title,the_text,your_user,your_password,your_site,wordpress_category):
        import requests
        import base64
        your_credentials = your_user + ":" + your_password
        your_token = base64.b64encode(your_credentials.encode())
        your_header = {'Authorization': 'Basic ' + your_token.decode('utf-8')}
 
        api_url = your_site+'/wp-json/wp/v2/posts'
        if not wordpress_category == "":
            data = {
                'title' : the_title,
                'status': 'publish',
                'content': the_text,
                'categories': 3
                ##'slug' : 'example-post',
                }
        else:
            data = {
                'title' : the_title,
                'status': 'publish',
                'content': the_text,
                }
           
        response = requests.post(api_url,headers=your_header, json=data)
        return response.json()

def gpt_chat(all_params):
    the_keyword,the_prefix,the_temperature,the_max_tokens = all_params
    the_text = the_prefix + the_keyword + ":"
        #the_text =  the_prefix + the_text
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": the_text}],
        temperature=the_temperature,
        max_tokens=the_max_tokens
        )
 
    the_result = response["choices"][0]["message"]["content"]
 
    return the_result

def fix_ahrefs_keywords(file_with_keywords):
    #remove empty lines and non keyword lines from output of https://ahrefs.com/keyword-generator
    with open(file_with_keywords, 'r') as fyl:
        lines = fyl.readlines()
 
    good_lines = []
    for aline in lines:
        aline = aline.strip()
        if (not any(str.isdigit(x) for x in aline) or len(aline.split())>3) and not aline.strip()=="" and not "Sign up" in aline and not "N/A" in aline:
            good_lines.append(aline)
 
 
    
    with open(file_with_keywords, 'w') as f:
        for line in good_lines:
            f.write(f"{line}\n")

#load file with your keywords
file_with_keywords = "sample_data/keywords.txt"
#this step fixes the file with keywords from https://ahrefs.com/keyword-generator
fix_ahrefs_keywords(file_with_keywords)

Добавьте этот код в третью строку:

# SETTINGS
begin_index = 11
end_index = 12
your_site = "yur site url"
your_user = "your site username"
your_password = "your site application password"
wordpress_category = "" # or you can add here a category id
title_is_keyword = "yes" #cam be "yes" or "no". If yes then the title is the keyword, if no then the title is created by GPTCHAT
remove_ai_detection = "no"


#prefix = "Write an article about"
prefix = "Write a very extremelly long and detailed article about "
#load the fixed keywords
with open(file_with_keywords, 'r') as fyl:
    keywords = fyl.readlines()
keywords = [x.strip() for x in keywords]
 
#now we create posts using GPT-chat and post them to our wordpress site
for e,akeyword in enumerate(keywords):
 
    if e<begin_index or e>=end_index:continue #this makes sure we only add article from begin to end
    the_temperature = 0.7
    the_max_tokens = 2000
    all_params = akeyword,prefix,the_temperature,the_max_tokens
    print("we are writing post #",e,", using keyword:",akeyword)
    gptchat_article = gpt_chat(all_params)
    title = akeyword.title()
 
    try:
        gptchat_article_list = gptchat_article.split("\n")
        if gptchat_article_list[0].count(".")<=1 and gptchat_article_list[1].strip()=="":
            title = gptchat_article_list[0]
            gptchat_article = gptchat_article.replace(title,"").strip()
            if title_is_keyword=="yes":
                title = akeyword.title()
    except:pass
 
 
    #now we post to out wordpres site
    try:
        the_response = make_post(title,gptchat_article,your_user,your_password,your_site,wordpress_category)
        the_link = the_response['guid']['rendered']
        print("the_link",the_link,"word count",len(gptchat_article.split()),"the_title:",title)
    except Exception as err:
        print("we have an error",err)

Это должно выглядеть следующим образом:

03) Следующим шагом будет создание файла с ключевым словом и вставка в него уже имеющихся ключевых слов. Нажимаем на папку слева и создаем файл в папке sample_data под названием keywords. Затем нажимаем на keywords и добавляем туда ключевые слова.

05) Итак, с ключевыми словами покончено, осталось добавить учетные данные WordPress, и все готово.

Переходим в раздел Пользователи/профиль на панели управления WordPress и создаем Новое имя пароля приложения. Это просто имя пароля, больше мы его нигде не используем. После того как мы его добавили, нажимаем на Add New Application Password. Это тот пароль, который нам нужно скопировать и добавить в Google Colab.

06) Затем мы добавляем наши настройки, которые мы только что создали:

Чтобы контролировать количество публикуемых сообщений, измените begin_index и end_index. Например, если begin_index=0 и end_index=1, то будут опубликованы только первые посты. Чтобы опубликовать сообщение на сайте, вам нужно нажать на кнопку run в каждой ячейке. Здесь 3 ячейки, поэтому нужно нажимать каждый раз.

Теперь добавим функцию отправки изображений.

Она использует API openai как wee (dalle api), так что вы должны проверить, сколько это стоит, но я думаю, что это довольно дешево.

Вот основные настройки, вы можете выбрать, хотите ли вы добавлять изображения, а также, хотите ли вы сделать их функциями изображения, или просто поместить их в конце поста. Качество изображений Dalle довольно хорошее, но иногда нужно поиграть с подсказками, чтобы создать именно то изображение, которое вы хотите.

create_and_add_an_image = "yes" #can be yes or no
make_the_image_featured = "yes" #can be yes or no
image_prefix = "A detailed high quality natural image about: "
image_resolution="512x512"

Если вы выберете create_and_add_an_image и make_the_image_featured, он опубликует изображение как featured и добавит его в пост в левом верхнем углу. Вы также можете изменить HTML в коде в соответствии с вашими потребностями.

Вот полный код, который состоит из 2 частей, как и раньше:

1 часть

import openai
import os
openai.api_key = "your_open_ai_api_key"

def upload_image(filename,your_site,your_user,your_password):
    import requests, json
    api_url_image = your_site+'/wp-json/wp/v2/media'
    the_pic = open(filename, 'rb').read()
    fnm = os.path.basename(filename)
    result = requests.post(
        url=api_url_image,
        data=the_pic,
        headers={ 'Content-Type': 'image/jpg','Content-Disposition' : 'attachment; filename=%s'% fnm},
        auth=(your_user, your_password)
        )

    response =result.json()
    the_image_id = response.get('id')
    the_image_url = response.get('guid').get("rendered")
    return (the_image_id, the_image_url)

def make_post(the_title,the_text,your_user,your_password,your_site,wordpress_category,the_image_id):
        import requests
        import base64
        your_credentials = your_user + ":" + your_password
        your_token = base64.b64encode(your_credentials.encode())
        your_header = {'Authorization': 'Basic ' + your_token.decode('utf-8')}
 
        api_url = your_site+'/wp-json/wp/v2/posts'
    
        if the_image_id>0:
            if not wordpress_category == "":
                data = {
                    'title' : the_title,
                    'status': 'publish',
                    'content': the_text,
                    'categories': 3,
                    'featured_media': the_image_id
                    ##'slug' : 'example-post',
                    }
            else:
                data = {
                    'title' : the_title,
                    'status': 'publish',
                    'content': the_text,
                    'featured_media': the_image_id
                    ##'slug' : 'example-post',
                    }
        else:
            if not wordpress_category == "":
                data = {
                    'title' : the_title,
                    'status': 'publish',
                    'content': the_text,
                    'categories': 3,
                    }
            else:
                data = {
                    'title' : the_title,
                    'status': 'publish',
                    'content': the_text,
                    }                
            
            
        response = requests.post(api_url,headers=your_header, json=data)
        return response.json()

def gpt_chat(all_params):
    the_keyword,the_prefix,the_temperature,the_max_tokens = all_params
    the_text = the_prefix + the_keyword + ":"
        #the_text =  the_prefix + the_text
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": the_text}],
        temperature=the_temperature,
        max_tokens=the_max_tokens
        )
 
    the_result = response["choices"][0]["message"]["content"]
 
    return the_result

def fix_ahrefs_keywords(file_with_keywords):
    #remove empty lines and non keyword lines from output of https://ahrefs.com/keyword-generator
    with open(file_with_keywords, 'r') as fyl:
        lines = fyl.readlines()
 
    good_lines = []
    for aline in lines:
        aline = aline.strip()
        if (not any(str.isdigit(x) for x in aline) or len(aline.split())>3) and not aline.strip()=="" and not "Sign up" in aline and not "N/A" in aline:
            good_lines.append(aline)
 
 
  
    with open(file_with_keywords, 'w') as f:
        for line in good_lines:
            f.write(f"{line}\n")

#load file with your keywords
file_with_keywords = "sample_data/keywords.txt"
#this step fixes the file with keywords from https://ahrefs.com/keyword-generator
fix_ahrefs_keywords(file_with_keywords)

Часть 2

# SETTINGS
begin_index = 11
end_index = 12
your_site = "yur site url"
your_user = "your site username"
your_password = "your site application password"
wordpress_category = "" # or you can add here a category id
title_is_keyword = "yes" #cam be "yes" or "no". If yes then the title is the keyword, if no then the title is created by GPTCHAT
remove_ai_detection = "no"

create_and_add_an_image = "yes" #can be yes or no
make_the_image_featured = "yes" #can be yes or no
image_prefix = "A detailed high quality natural image about: "
image_resolution="512x512"


#prefix = "Write an article about"
prefix = "Write a very extremelly long and detailed article about "
#load the fixed keywords
with open(file_with_keywords, 'r') as fyl:
    keywords = fyl.readlines()
keywords = [x.strip() for x in keywords]
 
#now we create posts using GPT-chat and post them to our wordpress site
for e,akeyword in enumerate(keywords):
 
    if e<begin_index or e>=end_index:continue #this makes sure we only add article from begin to end
    the_temperature = 0.7
    the_max_tokens = 2000
    all_params = akeyword,prefix,the_temperature,the_max_tokens
    print("we are writing post #",e,", using keyword:",akeyword)
    gptchat_article = gpt_chat(all_params)
    title = akeyword.title()


    the_image_url = ""
    the_image_id = -1
    if create_and_add_an_image == "yes": 
        response = openai.Image.create(
            prompt= image_prefix + akeyword,
            n=1,
            size=image_resolution
            )
    
        image_url = response['data'][0]['url']
        image_file = "sample_data/" + str(e)+'.jpeg'
        import urllib.request
    
        #download the image to file image_file
        urllib.request.urlretrieve(image_url, image_file)    
    
        if not make_the_image_featured=="yes":the_image_id = -1
    
        try:
            the_image_id,the_image_url = upload_image(image_file,your_site,your_user,your_password)
            print("image_url",the_image_url)              
        except Exception as error:
            print("we could not upload image",error)


    try:
        gptchat_article_list = gptchat_article.split("\n")
        if gptchat_article_list[0].count(".")<=1 and gptchat_article_list[1].strip()=="":
            title = gptchat_article_list[0]
            gptchat_article = gptchat_article.replace(title,"").strip()
            if title_is_keyword=="yes":
                title = akeyword.title()
    except:pass

    if not the_image_url.strip()=="":
        if make_the_image_featured=="yes":
            image_insert_html_code =  '<img src="'+the_image_url +'" alt="'+akeyword+'" style="float: left; margin-right: 10px;">'          
            gptchat_article = image_insert_html_code + gptchat_article
        else:
            image_insert_html_code =  '<img src="'+the_image_url +'" alt="'+akeyword+'" style="margin:10px;">'          
            gptchat_article =  gptchat_article + image_insert_html_code
 
 
    #now we post to out wordpres site
    try:
        the_response = make_post(title,gptchat_article,your_user,your_password,your_site,wordpress_category
,the_image_id
)
        the_link = the_response['guid']['rendered']
        print("the_link",the_link,"word count",len(gptchat_article.split()),"the_title:",title)
    except Exception as err:
        print("we have an error",err)

Спизжено и переведено by Jimbo

Канал 4Fun SEO