Gato GraphQL + Bricks Builder + Claude + SEO Framework デモ
ClaudeでBricks向けThe SEO Frameworkメタデータを自動生成する
ClaudeでBricksテキスト要素のコンテンツからSEO Frameworkメタデータを自動生成する方法
Leonardo Losoviz -

ClaudeをBricks拡張機能と組み合わせることで、Bricksテキスト要素のコンテンツをもとにThe SEO Frameworkのメタデータを生成できます。これはすべて単一のGato GraphQLクエリで実現します。
さらにAutomation拡張機能を使えば、新しいBricksページが公開されたときにこのクエリを自動的に実行できます。
このクエリはClaudeを使ってBricksテキスト要素のコンテンツを分析し、SEOを向上させるためのThe SEO Frameworkメタデータ(タイトルと説明)を生成します。
以下の変数を指定する必要があります:
customPostId: 更新するBricksカスタム投稿のIDanthropicAPIKey: Anthropic APIのAPIキー
システムメッセージとプロンプトテンプレートをカスタマイズすることで、Claudeがメタデータを生成する方法を調整できます。
このクエリをタイトル "Create The SEO Framework metadata for Bricks with Claude" で新しいPersisted Queryとして保存しておくと、Automationで利用できます(以下を参照)。
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")
}
}
}変数は次のように指定します:
{
"customPostId": 123,
"anthropicAPIKey": "sk-ant-..."
}Automation
新しいBricksページが公開されたときにクエリが自動的に実行されるようにするには、次の設定で新しいAutomationルールを作成してください:
- Persisted Query:
"Create The SEO Framework metadata for Bricks with Claude"(上記で作成したもの) - Hook name:
gatographql:any_to_publish:page - Dynamic GraphQL variables:
{
"customPostId": 1
}