Importer un article depuis un flux RSS WordPress et réécrire son contenu avec ChatGPT
Cette requête récupère les données de l'article depuis un flux RSS WordPress (y compris le titre, le contenu et l'extrait), réécrit le contenu avec ChatGPT et le stocke sur le site WordPress local.
Si l'auteur avec ce nom d'utilisateur existe localement, il l'utilise ; sinon, il le remplace par celui défini via la variable $defaultAuthorUsername.
La variable $url reçoit l'URL du flux RSS de l'article WordPress individuel. Il s'agit généralement de l'URL de l'article + "/feed/rss/?withoutcomments=1". Par exemple :
https://wordpress.com/blog/2024/07/16/wordpress-6-6/feed/rss/?withoutcomments=1Pour vous connecter à l'API OpenAI, vous devez fournir la variable $openAIAPIKey avec la clé API.
Vous pouvez éventuellement fournir le message système et le prompt pour réécrire le contenu de l'article. Si ces valeurs ne sont pas fournies, les valeurs suivantes sont utilisées :
- Message système (
$systemMessage) : "You are an English Content rewriter and a grammar checker" - Prompt (
$prompt) : "Please rewrite the following English text, by changing the simple A0-level words and sentences with more beautiful and elegant upper-level English words and sentences, while maintaining the original meaning: "
(La chaîne de contenu est ajoutée à la fin du prompt.)
De plus, vous pouvez remplacer la valeur par défaut de la variable $model ("gpt-4o-mini") et fournir des valeurs pour $temperature et $maxCompletionTokens (tous deux null par défaut).
query GetPostFromRSSFeed(
$url: URL!
) {
_sendHTTPRequest(input: {
url: $url,
method: GET
}) {
body
rssJSON: _strDecodeXMLAsJSON(
xml: $__body
)
# Fields to be imported
authorUsername: _objectProperty(
object: $__rssJSON,
by: {
path: "rss.channel.item.dc:creator"
}
)
@export(as: "authorUsername")
content: _objectProperty(
object: $__rssJSON,
by: {
path: "rss.channel.item.content:encoded"
}
)
@export(as: "content")
excerpt: _objectProperty(
object: $__rssJSON,
by: {
path: "rss.channel.item.description"
}
)
@export(as: "excerpt")
title: _objectProperty(
object: $__rssJSON,
by: {
path: "rss.channel.item.title"
}
)
@export(as: "title")
}
}
query RewriteContentWithChatGPT(
$openAIAPIKey: String!
$systemMessage: String! = "You are an English Content rewriter and a grammar checker"
$prompt: String! = "Please rewrite the following English text, by changing the simple A0-level words and sentences with more beautiful and elegant upper-level English words and sentences, while maintaining the original meaning: "
$model: String! = "gpt-4o-mini"
$temperature: Float
$maxCompletionTokens: Int
)
@depends(on: "GetPostFromRSSFeed")
{
promptWithContent: _strAppend(
after: $prompt
append: $content
)
openAIResponse: _sendJSONObjectItemHTTPRequest(input: {
url: "https://api.openai.com/v1/chat/completions",
method: POST,
options: {
auth: {
password: $openAIAPIKey
},
json: {
model: $model,
temperature: $temperature,
max_completion_tokens: $maxCompletionTokens,
messages: [
{
role: "system",
content: $systemMessage
},
{
role: "user",
content: $__promptWithContent
}
]
}
}
})
@underJSONObjectProperty(by: { key: "choices" })
@underArrayItem(index: 0)
@underJSONObjectProperty(by: { path: "message.content" })
@export(as: "rewrittenContent")
}
# If the author's username exists in this site, keep it
# Otherwise, use the default one
query CheckAuthorExistsOrChange(
$defaultAuthorUsername: String! = "admin"
)
@depends(on: "RewriteContentWithChatGPT")
{
existingUserByUsername: user(by: { username: $authorUsername })
{
id
username
}
userExists: _notNull(value: $__existingUserByUsername)
username: _if(
condition: $__userExists,
then: $authorUsername,
else: $defaultAuthorUsername
)
@export(as: "existingAuthorUsername")
}
mutation ImportPostFromWordPressRSSFeedAndRewriteContent
@depends(on: "CheckAuthorExistsOrChange")
{
createPost(input: {
status: draft,
authorBy: {
username: $existingAuthorUsername
},
contentAs: {
html: $rewrittenContent
},
excerpt: $excerpt
title: $title
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
slug
date
status
author {
id
username
}
content
excerpt
title
}
}
}