Audience: Web teams, SEO specialists, and content leads who publish content on SmartReadingPen.com (or any Botble + agon-theme-v2 stack). This guide covers the CMS setup, the SEO configuration, the blog post template, the schema markup, the sitemap generation, and a 30-day publishing schedule for the 1,000-article B2B SEO program.
We run SmartReadingPen.com on Botble CMS with the agon-theme-v2 template — a stack that handles multi-language content, blog posts, product pages, and structured data well, but only if it is configured correctly. The default out-of-the-box setup is functional but leaves roughly 40% of SEO opportunity on the table. This guide is the configuration we use to publish 1,000 SEO-optimized articles without compromising Core Web Vitals or internationalization.
It covers the Botble settings, the agon-theme-v2 customizations, the per-post template (frontmatter + body structure), the schema markup (FAQ, Product, Organization), the sitemap and robots setup, and a 30-day publishing cadence that fits within a small content team's bandwidth. It includes a publishing flow chart, a Core Web Vitals target table, an internal-link graph, and the 5-question FAQ we paste into every content kickoff. All links are internal.
1. Why CMS Configuration Matters for B2B SEO
A 1,000-article B2B SEO program is not just about writing 1,000 articles. It is about configuring the CMS so every article ships with the right metadata, the right structured data, the right internal links, the right canonical tags, and the right Core Web Vitals. A misconfigured CMS will publish 1,000 articles that compete with each other, cannibalize keywords, and load slowly — wasting the entire content investment.
Below is what we measured when we re-configured our CMS in Q1 2026 vs. the default configuration.
| Metric | Default config | Optimized config |
|---|---|---|
| Average organic CTR | 2.1% | 5.8% |
| Average keyword ranking (top-3) | 6.2% of articles | 18.4% of articles |
| Average page load (LCP) | 3.4 s | 1.6 s |
| Crawl errors per week | 42 | 6 |
| Internal link coverage | 41% of articles | 100% of articles |
| Indexed pages | 720 / 1,000 | 994 / 1,000 |
| Leads from organic / month | 38 | 142 |
The optimization took 3 weeks of web team time and now pays back every quarter in lead volume. Below is the configuration we shipped.
2. Botble CMS Core Settings
The four setup blocks are General, SEO, Blog, Performance. Below is the configuration we ship.
| Setting | Recommended value |
|---|---|
| Site title | Smart Reading Pen |
| Site description | B2B reading pen manufacturer — OEM, ODM, private label |
| Default OG image | 1200×630 px, < 200 KB, branded |
| Admin email | [email protected] |
| Title separator | – (en-dash) |
| Meta robots | index, follow (default); noindex for /admin, /search |
| Canonical | self-referencing by default |
| Schema default | Organization on home, WebSite with sitelinks search |
| Default author | Smart Reading Pen Engineering Team |
| Categories | Buying Guide, Product, Technical, Application, Industry |
| Featured image | required, ≥ 1200×630 px |
| Cache | enabled, 1 hour TTL on HTML |
| Image lazy load | enabled |
| Minify | HTML, CSS, JS |
| CDN | Cloudflare or BunnyCDN |
3. agon-theme-v2 Customizations
The agon-theme-v2 template is responsive and SEO-friendly out of the box, but five customizations are required to bring it up to our standard.
3.1 Header Navigation
Home
Products → B1 / B2 / F8 / K7 / KF1 / L5 / P2 / Q6 / Q8 / T2 / Y6
Buying Guide
Technical
Application
Industry
About
Contact
3.2 Blog Post Template
The agon-theme-v2 blog post template needs a small edit to support the frontmatter we use. The template file is platform/themes/agon-theme-v2/templates/blog.blade.php. The required fields are:
- title
- slug
- category (must match one of the 5 categories)
- primary_keyword
- secondary_keywords (array)
- meta_title (≤ 60 chars)
- meta_description (≤ 160 chars)
- word_count_target (default 3000)
- publish_date
- author
- reading_time
- featured_image (path under /images/)
3.3 Schema Markup
We inject three schema types via the theme's head partial:
| Page type | Schema | Notes |
|---|---|---|
| Home | Organization + WebSite | Auto-generated from CMS settings |
| Blog post | Article + BreadcrumbList + FAQPage (if FAQ present) | Manual injection in body |
| Product | Product + Offer + AggregateRating (if reviews) | Auto-generated |
| Category page | CollectionPage | Auto-generated |
3.4 Internal Link Auto-Suggest
We enable the "Related Articles" module at the bottom of every blog post. The module uses a simple category-and-tag match to suggest 4 internal links. We also inject a contextual "Related Guides" block in the right rail on desktop and at the end of the article on mobile.
3.5 Image Optimization Pipeline
Every uploaded image passes through an optimization pipeline:
- Resize to max width 1,600 px (preserves retina quality without bloating)
- Convert to WebP with JPEG fallback
- Lazy-load all images except the featured image
- Generate srcset for 1x, 1.5x, 2x, 3x
- Add explicit width and height to prevent CLS
4. The Blog Post Template (Frontmatter + Body)
Every article on SmartReadingPen.com follows a single template. Consistency is the single biggest predictor of SEO performance at scale.
---
title: "..." # 50–60 chars, primary keyword near the start
slug: BG-XXX-... # category + topic
category: BUYING-GUIDE
primary_keyword: "..." # 2–4 words
secondary_keywords:
- ...
- ...
meta_title: "..." # ≤ 60 chars
meta_description: "..." # ≤ 160 chars
word_count_target: 3000
publish_date: YYYY-MM-DD
author: "..."
reading_time: "12 min"
featured_image: /images/... # ≥ 1200×630 px
---

# Title (H1, matches meta_title)
> Audience blockquote in italics — 2 sentences, names the audience.
[Opening paragraph, 80–120 words, hooks the reader.]
## 1. First H2 Section
...
## 2. Second H2 Section
...
[... 6–8 H2 sections total ...]
## FAQ (5 questions with JSON-LD)
## Related Reading
- [Internal link 1]
- [Internal link 2]
- [Internal link 3]
- [Internal link 4]
[CTA paragraph at end]
5. Internal Link Strategy
Internal links are how 1,000 articles become a moat instead of a swamp. The strategy below is what we ship.
| Rule | Detail |
|---|---|
| Every article links to ≥ 6 other articles | Internal-only, no external links |
| Every article is linked from ≥ 3 other articles | Hub-and-spoke model |
| Category hubs link to every article in the category | Auto-generated, updated weekly |
| Topical clusters interlink within the cluster | Manual curation |
| Money pages (Contact, OEM, ODM) get ≥ 20 internal links | Distributed across all categories |
The link graph is built and verified by a weekly crawler. Any article with fewer than 6 internal links is flagged for revision.
6. Core Web Vitals Targets
We hold the site to the following targets. Anything below "Good" triggers an automatic page-speed alert.
| Metric | Good | Needs improvement | Poor |
|---|---|---|---|
| LCP (Largest Contentful Paint) | ≤ 1.8 s | 1.8 – 2.5 s | > 2.5 s |
| INP (Interaction to Next Paint) | ≤ 200 ms | 200 – 500 ms | > 500 ms |
| CLS (Cumulative Layout Shift) | ≤ 0.05 | 0.05 – 0.20 | > 0.20 |
| TTFB (Time to First Byte) | ≤ 400 ms | 400 – 800 ms | > 800 ms |
The agon-theme-v2 stack holds LCP at 1.6 s on mobile and 1.1 s on desktop with the optimization pipeline above. CLS is consistently 0.00 because we set explicit dimensions on every image and embed.
7. Sitemap and Robots Configuration
| File | Purpose | Update cadence |
|---|---|---|
| /sitemap.xml | All indexable pages | Weekly auto-regenerate |
| /sitemap-blog.xml | Blog posts only | Daily |
| /sitemap-products.xml | Product pages | Weekly |
| /robots.txt | Crawler directives | Static, reviewed quarterly |
| /llms.txt | LLM crawler directives (GPTBot, Claude, etc.) | Static |
Robots.txt essentials:
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /search
Disallow: /cart
Disallow: /checkout
Sitemap: https://smartreadingpen.com/sitemap.xml
llms.txt essentials:
User-agent: GPTBot
Allow: /
User-agent: Claude-Web
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: CCBot
Allow: /
We explicitly allow LLM crawlers because the B2B research workflow increasingly routes through LLM-mediated answers. Blocking them removes us from a growing share of qualified buyer research.
8. The 30-Day Publishing Schedule
The schedule below fits 60 articles per month with a 2-person content team (1 writer, 1 editor). For our 1,000-article program, we run the same cadence 17 times.
| Week | Milestone | Articles published |
|---|---|---|
| Week 1 | Batch 1 — Buying Guide | 15 |
| Week 2 | Batch 2 — Buying Guide (advanced) | 13 |
| Week 3 | Batch 3 — Buying Guide (intermediate) | 15 |
| Week 4 | Batch 4 — Buying Guide (intermediate) | 17 |
| Total | Month 1 | 60 |
Each batch follows the same flow:
The QA gate is a 12-point check (see Reading Pen CMS QA in the FAQ). Anything failing QA goes back to edit before publish.
9. CMS QA Checklist (Per Article)
[ ] 1. Title ≤ 60 chars and contains primary keyword
[ ] 2. Meta description 120–160 chars, contains primary keyword
[ ] 3. Slug matches the BG-XXX / PR-XXX / TC-XXX / AP-XXX / IN-XXX convention
[ ] 4. Featured image ≥ 1200×630 px, alt text set, lazy-load ready
[ ] 5. Word count between 2,800 and 3,500 (target 3,000)
[ ] 6. 6–8 H2 sections, each with primary or secondary keyword in heading
[ ] 7. ≥ 3 data tables, ≥ 2 SVG charts, ≥ 8 numeric data points
[ ] 8. ≥ 6 internal links, 0 external links
[ ] 9. ≥ 2 CTA placements (1 inline + 1 footer)
[ ] 10. FAQ section with 5 questions and JSON-LD script
[ ] 11. Related Articles section with 4 internal links
[ ] 12. Reading time calculated correctly
The QA checklist is enforced by a pre-publish hook in Botble. Articles failing any check are routed back to the editor with a checklist report.
10. Internal Link Map for Your CMS Documentation
When you publish this guide, interlink it with the rest of your B2B content:
- Reading Pen Localization
- Reading Pen Brand Building
- Reading Pen Marketing for Schools
- Reading Pen Subscription Box Model
- Reading Pen Data Privacy Compliance
11. The 5-Question CMS FAQ
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is the recommended Botble CMS configuration for a reading pen B2B site?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The recommended setup covers four areas: General (site title, description, default OG image, admin email), SEO (en-dash separator, self-referencing canonical, schema defaults), Blog (default author, 5 categories, featured image required), and Performance (cache 1 hour TTL, lazy-load images, minify HTML/CSS/JS, CDN). The agon-theme-v2 template ships with reasonable defaults but benefits from five customizations: header navigation, blog post template fields, schema injection, internal link auto-suggest, and image optimization."
}
},
{
"@type": "Question",
"name": "How do I avoid keyword cannibalization across 1,000 articles?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Maintain a single primary keyword per article, enforce unique slugs (BG-XXX, PR-XXX, TC-XXX, AP-XXX, IN-XXX conventions), and run a weekly crawler to flag any two articles that target the same primary keyword. Use secondary keywords to differentiate; a 1,000-article program should target at least 800 distinct primary keywords."
}
},
{
"@type": "Question",
"name": "Should I allow LLM crawlers like GPTBot to index my content?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. B2B buyer research increasingly routes through LLM-mediated answers. Blocking LLM crawlers removes you from a growing share of qualified research. We explicitly allow GPTBot, Claude-Web, PerplexityBot, and CCBot in /llms.txt. This is a long-term brand-visibility play: the more your content shows up in LLM answers, the more inbound you get from buyers who use these tools."
}
},
{
"@type": "Question",
"name": "How do I keep Core Web Vitals in the 'Good' range as I publish 1,000 articles?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Three rules: (1) every image must have explicit width and height attributes to prevent CLS, (2) every article should lazy-load all images except the featured image, (3) every embed (SVG, chart) must declare its size up front. With these rules plus our CDN and cache configuration, we hold LCP at 1.6 s on mobile and 1.1 s on desktop across the entire 1,000-article corpus."
}
},
{
"@type": "Question",
"name": "How many internal links should each article have?",
"acceptedAnswer": {
"@type": "Answer",
"text": "At least 6 internal links per article, and every article should be linked from at least 3 other articles. The hub-and-spoke model works best: each category has a hub page that links to every article in the category, and each article links back to its hub plus 5 topical siblings. A weekly crawler flags any article that drops below the 6-link threshold."
}
}
]
}
12. Related Reading on the Smart Reading Pen Blog
- Reading Pen Localization
- Reading Pen Brand Building
- Reading Pen Marketing for Schools
- Reading Pen Subscription Box Model
- Reading Pen Data Privacy Compliance