Appearance
Content Schemes
Every report type has a content_scheme that determines the structure of the content and html fields on each keyword in the report content endpoint.
Always read content_scheme first
Do not hardcode assumptions about the shape of content or html. Always inspect content_scheme at the top level of the content response before accessing keyword data.
Object vs. array of variants
Some schemes produce a single object per keyword. Others produce an array of variant objects (typically 2-6 alternatives) so you can pick the one that fits best when publishing.
js
// Safe pattern for any scheme
const variant = Array.isArray(keyword.content)
? keyword.content[0] // pick first variant
: keyword.content; // use directlyScheme reference
| Scheme | content type | content fields | html type | html keys |
|---|---|---|---|---|
single_text_block | object | text | object | text |
metadata | array of 3 | meta_title, meta_description | array of 3 | meta_title, meta_description |
h1_headlines | array of 3 | h1 | array of 3 | h1 |
h2_text_blocks | array of 3 | h2, text | array of 3 | h2_and_text |
h3_text_blocks | array of 3 | h3, text | array of 3 | h3_and_text |
h4_text_blocks | array of 6 | h4, text | array of 6 | h4_and_text |
qa_block | array of 4 | question, answer | object | qa |
image_alt_text | object | search_terms (array of 2), alt_texts (array of 4) | object | alt_texts (array of 4 <img> tags) |
link_blocks | array of 2 | h2, text, links (array of {anchor_text, url}) | array of 2 | h2_and_text |
h2_summary_block | object | h2, texts (array of 2) | object | texts (array of 2 pre-rendered <h2>…<p>… strings) |
subnavigation | object | links (array of {keyword, url}) | object | subnavigation (rendered <div> block) |
bullet_points | object | h2, text, bullet_points (array) | object | bullet_points (rendered <h2>…<ul>… string) |
numbered_points | object | h2, text, numbered_points (array) | object | numbered_points (rendered <h2>…<ol>… string) |
Examples
h3_text_blocks - array of 3 variants, pick one
json
"content": [
{ "h3": "Leading SEO Agency in Stockholm", "text": "We help businesses in Stockholm…" },
{ "h3": "Expert SEO Services Stockholm", "text": "Our Stockholm-based team…" },
{ "h3": "Stockholm SEO - Results That Last", "text": "Proven SEO strategies…" }
],
"html": [
{ "h3_and_text": "<h3>Leading SEO Agency in Stockholm</h3>\n<p>We help businesses…</p>" },
{ "h3_and_text": "<h3>Expert SEO Services Stockholm</h3>\n<p>Our Stockholm-based team…</p>" },
{ "h3_and_text": "<h3>Stockholm SEO - Results That Last</h3>\n<p>Proven SEO strategies…</p>" }
]metadata - array of 3 paired sets
json
"content": [
{ "meta_title": "SEO Agency Stockholm | Acme", "meta_description": "Get found on Google with Acme's proven SEO services." },
{ "meta_title": "Top-Rated Stockholm SEO | Acme", "meta_description": "Acme helps Stockholm businesses rank higher." },
{ "meta_title": "Stockholm SEO Services - Acme", "meta_description": "Expert SEO for Stockholm companies." }
],
"html": [
{ "meta_title": "<title>SEO Agency Stockholm | Acme</title>", "meta_description": "<meta name=\"description\" content=\"Get found on Google…\">" },
…
]bullet_points - single object
json
"content": {
"h2": "Why Choose Us",
"text": "Our approach is built on three pillars:",
"bullet_points": ["Data-driven strategy", "Transparent reporting", "Dedicated account management"]
},
"html": {
"bullet_points": "<h2>Why Choose Us</h2>\n<p>Our approach is built on three pillars:</p>\n<ul>\n <li>Data-driven strategy</li>\n <li>Transparent reporting</li>\n <li>Dedicated account management</li>\n</ul>\n"
}link_blocks - array of 2 variants with internal link suggestions
json
"content": [
{
"h2": "Explore Our SEO Services",
"text": "Our full-service SEO offering covers everything from…",
"links": [
{ "anchor_text": "Technical SEO", "url": "https://digipartner.se/technical-seo" },
{ "anchor_text": "Content Strategy", "url": "https://digipartner.se/content" }
]
}
],
"html": [
{ "h2_and_text": "<h2>Explore Our SEO Services</h2>\n<p>Our full-service SEO offering…</p>" }
]
linksare provided incontentfor you to wire up manually. Thehtmlfield contains the heading and text only - links are not rendered into the HTML output.
qa_block - array of 4 Q&A pairs (content), single rendered block (html)
json
"content": [
{ "question": "What is SEO?", "answer": "SEO stands for…" },
{ "question": "How long does it take?", "answer": "Results typically appear…" },
{ "question": "What does it cost?", "answer": "Pricing varies…" },
{ "question": "Do I need a contract?", "answer": "We offer both…" }
],
"html": {
"qa": "<p>\n What is SEO?\n <br>\n SEO stands for…\n</p>\n…"
}image_alt_text - single object with search terms and alt texts
json
"content": {
"search_terms": ["professional seo team office", "data analytics dashboard"],
"alt_texts": ["SEO team reviewing analytics", "Dashboard showing keyword rankings", "Meeting about SEO strategy", "Laptop with SEO tools open"]
},
"html": {
"alt_texts": [
"<img src=\"https://admin.trakk.ai/assets/img/Trakk_logotyp_RGB.svg\" alt=\"SEO team reviewing analytics\">",
"…"
]
}