{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs-realm.sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["configOptionRequirements"]},"redocly_category":"Realm","type":"markdown"},"seo":{"title":"AsyncAPI extension: x-seo","description":"OpenAPI-generated documentation tool with 24k+ stars on Github - make APIs your company's superpower.","siteUrl":"https://redocly.com","image":"/assets/redocly-card.f670aae34a39545a5ea633a540cb3a4a333a1f23bb2ed3c4a1b17a5fbcf0ac85.db81178d.png","lang":"en-US"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"asyncapi-extension-x-seo","__idx":0},"children":["AsyncAPI extension: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-seo"]}]},{"$$mdtype":"Tag","name":"ConfigOptionRequirements","attributes":{"products":["Redoc","Realm"],"plans":["Pro","Enterprise","Enterprise+"]},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-seo"]}," to control the SEO meta tags rendered in the HTML ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<head>"]}," of an individual operation or channel page."," ","The tags include the page title, description, keywords, and the image used when the page link is shared."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"location","__idx":1},"children":["Location"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-seo"]}," extension can be added to an Operation Object or a Channel Object."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"options","__idx":2},"children":["Options"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Option"},"children":["Option"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["title"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Sets the page ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<title>"]},", and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["og:title"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["twitter:title"]}," meta tags for the page."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["description"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Sets the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<meta name=\"description\">"]},", and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["og:description"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["twitter:description"]}," meta tags."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["keywords"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Sets the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<meta name=\"keywords\">"]}," tag."," ","Provide a comma-separated list of keywords."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["image"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Sets the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["og:image"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["twitter:image"]}," meta tags — the rich preview image shown when the page link is shared."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a field is omitted, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["title"]}," falls back to the operation or channel ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["title"]},", then ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["summary"]},"."," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]}," falls back to the operation or channel ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]},", then ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["summary"]},"."," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["keywords"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["image"]}," have no fallback and are added only when set."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"examples","__idx":3},"children":["Examples"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"x-seo-on-an-operation","__idx":4},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-seo"]}," on an operation"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"operations:\n  receiveLightMeasurement:\n    action: receive\n    summary: Receive light measurement events\n    channel:\n      $ref: '#/channels/lightMeasured'\n    x-seo:\n      title: \"Custom page title\"\n      description: \"Detailed page description\"\n      keywords: documentation, operation, example\n      image: 'https://example.com/image.png'\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each field is resolved independently, so you can override only the fields you need."," ","In the following example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["title"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]}," both fall back to the operation ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["summary"]},", since it has no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["title"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]}," of its own."," ","The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["keywords"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["image"]}," values come from the extension:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"operations:\n  receiveLightMeasurement:\n    action: receive\n    summary: Receive light measurement events\n    channel:\n      $ref: '#/channels/lightMeasured'\n    x-seo:\n      keywords: documentation, operation, example\n      image: 'https://example.com/image.png'\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"x-seo-on-a-channel","__idx":5},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-seo"]}," on a channel"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"channels:\n  lightMeasured:\n    address: light/measured\n    summary: Light measurement channel\n    x-seo:\n      title: \"Light measured channel\"\n      description: \"Events emitted whenever the light intensity changes\"\n      keywords: events, light, telemetry\n      image: 'https://example.com/light.png'\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"resources","__idx":6},"children":["Resources"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/realm/content/realm-seo"},"children":["Search engine optimization"]}]}," - Configure site-wide SEO, meta tags, and social sharing for your Redocly project"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/realm/content/api-docs/asyncapi-extensions/x-metadata"},"children":["x-metadata"]}]}," - Add a custom metadata table to the top of the API overview (info-level metadata)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/realm/content/api-docs/asyncapi-extensions"},"children":["Supported AsyncAPI extensions"]}]}," - Complete list of all AsyncAPI extensions supported by Redocly for enhanced API documentation"]}]}]},"headings":[{"value":"AsyncAPI extension: x-seo","id":"asyncapi-extension-x-seo","depth":1},{"value":"Location","id":"location","depth":2},{"value":"Options","id":"options","depth":2},{"value":"Examples","id":"examples","depth":2},{"value":"x-seo on an operation","id":"x-seo-on-an-operation","depth":3},{"value":"x-seo on a channel","id":"x-seo-on-a-channel","depth":3},{"value":"Resources","id":"resources","depth":2}],"frontmatter":{"products":["Redoc","Realm"],"plans":["Pro","Enterprise","Enterprise+"],"seo":{"title":"AsyncAPI extension: x-seo"}},"lastModified":"2026-08-24T16:21:33.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/realm/content/api-docs/asyncapi-extensions/x-seo","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}