Créer automatiquement les métadonnées de The SEO Framework pour Bricks avec Claude
Utiliser Claude pour générer automatiquement les métadonnées de SEO Framework à partir du contenu des éléments de texte Bricks

Nous pouvons utiliser Claude avec l'extension Bricks pour générer les métadonnées de The SEO Framework à partir du contenu des éléments de texte Bricks, le tout avec une seule requête Gato GraphQL.
Et avec l'extension Automation, nous pouvons déclencher automatiquement l'exécution de cette requête lorsqu'une nouvelle page Bricks est publiée.
Cette requête utilise Claude pour analyser le contenu des éléments de texte Bricks et générer les métadonnées de The SEO Framework (titre et description) pour améliorer le SEO.
Nous devons fournir les variables suivantes :
customPostId: L'ID du custom post Bricks à mettre à jouranthropicAPIKey: La clé API pour l'API Anthropic
Vous pouvez personnaliser le message système et le modèle de prompt pour ajuster la façon dont Claude génère les métadonnées.
Enregistrez la requête comme une nouvelle Persisted Query, avec le titre "Create The SEO Framework metadata for Bricks with Claude", afin de pouvoir l'utiliser dans l'Automation (voir ci-dessous).
Voici la requête GraphQL :
query InitializeGlobalVariables
@configureWarningsOnExportingDuplicateVariable(enabled: false)
{
emptyArray: _echo(value: [])
@export(as: "elementTexts")
@remove
}
query GetBricksData($customPostId: ID!)
@depends(on: "InitializeGlobalVariables")
{
customPost(by:{ id: $customPostId }, status: any) {
id
title
bricksData(filterBy: { include: ["heading", "text"] })
@underEachArrayItem
@underJSONObjectProperty(by: { path: "settings.text" })
@export(as: "elementTexts")
}
}
query GenerateMetadataWithClaude(
$anthropicAPIKey: String!
$maxTokens: Int! = 32000
$promptTemplate: String! = """
You are an SEO expert specializing in metadata optimization.
I need to generate SEO metadata for a WordPress page using The SEO Framework plugin.
Based on the following content from the page, please generate:
1. A compelling SEO title (max 60 chars)
2. A meta description (max 160 chars)
Please respond in JSON format with this structure:
{
"title": "SEO title here",
"description": "Meta description here"
}
Return ONLY the JSON object. Do not include any explanations, markdown formatting, or code blocks. The response must be a valid JSON object starting with { and ending with }.
Content to analyze:
{$encodedContent}
"""
$model: String! = "claude-sonnet-4-0"
)
@depends(on: "GetBricksData")
{
encodedContent: _arrayJoin(
array: $elementTexts,
separator: "\n\n"
)
prompt: _strReplace(
search: "{$encodedContent}",
replaceWith: $__encodedContent,
in: $promptTemplate
)
claudeResponse: _sendJSONObjectItemHTTPRequest(input: {
url: "https://api.anthropic.com/v1/messages",
method: POST,
options: {
headers: [
{
name: "x-api-key",
value: $anthropicAPIKey
},
{
name: "anthropic-version",
value: "2023-06-01"
}
],
json: {
model: $model,
max_tokens: $maxTokens,
messages: [
{
role: "user",
content: $__prompt
}
],
}
}
})
@underJSONObjectProperty(by: { key: "content" })
@underArrayItem(index: 0)
@underJSONObjectProperty(by: { key: "text" })
@export(as: "jsonEncodedMetadata")
}
query ExtractMetadata
@depends(on: "GenerateMetadataWithClaude")
{
jsonEncodedMetadata: _echo(value: $jsonEncodedMetadata)
@remove
decodedMetadata: _strDecodeJSONObject(string: $jsonEncodedMetadata)
seoMetadataTitle: _objectProperty(
object: $__decodedMetadata,
by: { key: "title" }
)
@export(as: "seoMetadataTitle")
seoMetadataDescription: _objectProperty(
object: $__decodedMetadata,
by: { key: "description" }
)
@export(as: "seoMetadataDescription")
}
mutation UpdateSEOFrameworkMetadata($customPostId: ID!)
@depends(on: "ExtractMetadata")
{
updateCustomPost(
input: {
id: $customPostId
meta: {
_genesis_title: [$seoMetadataTitle],
_genesis_description: [$seoMetadataDescription],
_open_graph_title: [$seoMetadataTitle],
_open_graph_description: [$seoMetadataDescription],
_twitter_title: [$seoMetadataTitle],
_twitter_description: [$seoMetadataDescription],
}
}
) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
customPost {
id
metaTitle: metaValue(key: "_genesis_title")
metaDesc: metaValue(key: "_genesis_description")
socialTitle: metaValue(key: "_open_graph_title")
socialDesc: metaValue(key: "_open_graph_description")
twitterTitle: metaValue(key: "_twitter_title")
twitterDesc: metaValue(key: "_twitter_description")
}
}
}Les variables ressembleraient à ceci :
{
"customPostId": 123,
"anthropicAPIKey": "sk-ant-..."
}Automation
Pour déclencher automatiquement l'exécution de la requête lorsqu'une nouvelle page Bricks est publiée, créez une nouvelle règle d'Automation avec les paramètres suivants :
- Persisted Query :
"Create The SEO Framework metadata for Bricks with Claude"(c'est-à-dire celle que nous avons créée ci-dessus) - Hook name :
gatographql:any_to_publish:page - Dynamic GraphQL variables :
{
"customPostId": 1
}