Web Development

Enhancing Blog Posts: FAQ Schema, Service CTAs & a Slick Mobile TOC

Adding FAQ schema, service CTAs, and a camera-wheel inspired mobile TOC to blog posts.

Dec 4, 2025
8 min

Building With AI?

Learn how to build features like this yourself. I offer 1-on-1 AI web development coaching to help you ship faster with tools like Claude, Cursor, and ChatGPT.

What started as "add an FAQ section" turned into a deep dive on SEO optimization, user experience, and some genuinely fun UI experimentation. Here's everything I built to transform a basic blog post into an SEO powerhouse.

From Basic to SEO Powerhouse

How a simple blog post became a conversion machine

5
FAQ Items
with schema markup
1
Premium CTA
animated design
20+
TOC Sections
mobile navigation
Internal Links
clickable badges

Share This

"
Pro Tip
FAQ Schema = Free SERP Real Estate
Add FAQ structured data to your blog posts and Google may show expandable answers directly in search results. More visibility, same content.
JJM

FAQ sections aren't just helpful for readers—they're SEO gold. When you add proper FAQ schema markup, Google can display your questions and answers directly in search results as expandable rich snippets. That's free SERP real estate that can dramatically increase click-through rates.

1

Create FAQ Content

Write 5-7 relevant Q&As that address common reader questions

2

Add Visual Component

Use accordion-style details/summary elements for clean UX

3

Inject Schema Markup

Use generateFAQSchema() to create structured data

4

Test in Search Console

Validate your structured data appears correctly

CTA Design Matters

Premium CTA Checklist

  • 1

    Animated glow effects for attention

  • 2

    Clear value proposition headline

  • 3

    Two CTAs: primary + secondary

  • 4

    Trust indicators below buttons

  • 5

    Dark background for contrast

JJM

The original CTA was a generic purple gradient box saying "Ready to Grow Your Business?" Boring and forgettable. The new design uses a dark slate background with animated emerald glow orbs, a pulsing badge, gradient text, and clear trust indicators. It's the difference between a billboard and a conversation.

Before

Ready to Grow?

Generic, forgettable

After

Stop Guessing. Start Growing.

Premium, memorable

SEO Quick Win

3x
Clickable Categories
Internal links from category badges can increase page discovery and reduce bounce rate by helping users find related content.
JJM

Key insight: Every category badge and tag on your blog should be a link. It's free internal linking that helps users discover more content and helps search engines understand your site structure.

Mobile UX Tip

"
Pro Tip
Mobile TOC Best Practices
Keep navigation accessible but not intrusive. A sticky edge tab with progress indicator lets users jump to sections without blocking content.
JJM

Mobile TOC Features

  • Sticky edge tab that doesn't overlap content
  • Progress dots showing reading position
  • Fisheye effect - active section bulges out
  • Spring animations for natural feel
  • Slide-out panel with full navigation
  • Starts below navbar (no overlap)

The mobile table of contents went through several iterations. First a floating button (boring), then a tall rectangle with dots (too intrusive), and finally a compact edge tab with a camera-scroll-wheel inspired progress indicator. The dots grow and shrink based on proximity to the active section, creating a satisfying visual feedback loop as you scroll.

CSS Gotcha

Sticky + Overflow = Broken

position: sticky doesn't work when any ancestor has overflow: hidden. Be careful where you apply overflow styles!

JJM

Bugs Squashed Along the Way

  • SVG Path Error: CSS values like calc() don't work in SVG path data
  • Sticky Sidebar: overflow-x-hidden on parent breaks position: sticky
  • Dark Text: Headings need explicit text-white on dark backgrounds

Tailwind Tip

Dark Background Text

Before

text-white on parent only

After

Explicit text-white on headings

Tailwind's text-white doesn't cascade to headings. Always add text-white directly to h1-h4 inside dark containers.

JJM

One of the most frustrating CSS gotchas: Tailwind's text-white on a parent element doesn't cascade to headings. Browsers apply default styles to h1-h6 elements, which override inherited colors. The fix is simple but easy to forget—always add explicit text-white to every heading inside dark containers.

Animation Tip

"
Pro Tip
Spring Animations Feel Better
Use Framer Motion's spring transitions instead of linear. type: 'spring', stiffness: 400, damping: 25 creates natural, bouncy movement.
JJM

What We Built

FAQ schema for rich snippets
Animated premium CTA
Clickable category badges
Camera-scroll mobile TOC

Build in Public

Key Takeaway
Document Your Process

Building in public means sharing the messy middle, not just the polished result. Your debugging sessions are content too.

JJM
Building JJM: The Blog - Part 1

This is Just the Beginning

Future posts will cover social media cards, featured images, and more.

Newsletter

Follow the Journey

Get notified when new parts of this series drop.

No spam, unsubscribe anytime. We respect your privacy.

Social Media Carousel

8 cards • Click to download individually or as ZIP

Download
Building JJM: Blog
1 of 8

Enhancing Blog Posts with FAQ, CTA & Mobile TOC

Building JJM: The Blog

How I upgraded every blog post with 4 powerful features

JJM
Download
Building JJM: Blog
2 of 8

4 Features Added

  • 1

    FAQ schema for rich snippets

  • 2

    Animated premium CTA

  • 3

    Clickable category badges

  • 4

    Camera-scroll mobile TOC

JJM
Download
Building JJM: Blog
3 of 8

FAQ Schema

Add structured data and Google may show expandable answers directly in search results. Free SERP real estate.

JJM
Download
Building JJM: Blog
4 of 8
2x
Click-Through Rate

Posts with FAQ rich snippets get significantly more clicks

JJM
Download
Building JJM: Blog
5 of 8

Mobile TOC

Camera-scroll navigation that follows the reader. Shows progress and makes long posts easy to navigate.

JJM
Download
Building JJM: Blog
6 of 8

Before vs After

Before

Static blog posts, no interactivity

After

Dynamic features that boost engagement

JJM
Download
Building JJM: Blog
7 of 8
"

Small UX improvements compound. Each feature makes the blog slightly better for readers.

— Jordan James

JJM
Download
Building JJM: Blog
8 of 8

Follow the Journey

This is Part 1 of Building JJM: The Blog series

Subscribe
JJM

Share This Article

Spread the knowledge

Free Strategy Session

Stop Guessing.
Start Growing.

Get a custom strategy built around your goals, not generic advice. Real insights. Measurable results.

No obligation
30-min call
Custom strategy

Continue Your Learning Journey

Explore these related articles to deepen your understanding of web development

AI Dev Session: Building Social Carousel Cards & Admin Dashboard in 3 Hours

Building social carousel cards, admin dashboard, and fixing a sneaky TOC bug—in 3 hours.

8 min read
Read →

Volume 7: Branding Our Own Blog Series

The meta moment when we built custom branding for the Pink Slips NSW blog series - pink gradients, dual logos, and conditional styling in 2 hours.

6 min read
Read →

Building 500+ Location Pages with AI-Generated Content

Building 790 location pages with AI content, database schema, and SEO implementation.

20 min read
Read →