Démo Gato GraphQL + Bricks Builder + Claude + SEO Framework

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

Leonardo Losoviz
Leonardo Losoviz -
Logo
Image
Target Image
Target Image
Target Image

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 à jour
  • anthropicAPIKey : 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
}
Règle d'Automation pour créer les métadonnées de The SEO Framework pour Bricks avec Claude
Règle d'Automation pour créer les métadonnées de The SEO Framework pour Bricks avec Claude

Abonnez-vous à notre newsletter

Restez au courant de toutes les nouveautés de Gato GraphQL.