Skip to main content
·8 min read

I Let AI Write Comments on My Own Articles — Here's Why

aiuxweb-devinteractive-design
AI companion character appearing alongside a blog article, leaving witty comments as the reader scrolls
TL;DR

We added a floating AI companion that watches you scroll through blog posts and drops contextual commentary — sarcastic, insightful, and article-specific. Static blogs feel dead. This makes reading feel like a conversation.

Your Blog Has a Personality Problem

AI-powered blog features can transform passive reading into an interactive conversation that keeps visitors engaged and scrolling. Most blogs are monologues. You publish, readers scroll, maybe they finish, probably they don't. The content just sits there — identical for every visitor, frozen in time, with no awareness that anyone is reading it at all.

What is an AI reading companion? An AI reading companion is a scroll-aware widget embedded in blog posts that displays contextual, article-specific commentary as the reader progresses through the content. Unlike chatbots (which respond to user input) or comment sections (which capture post-reading reactions), a reading companion is proactive, real-time, and written specifically for each article's sections. It creates the experience of co-presence — the sense that someone is reading alongside you, with opinions about what you're encountering. Effective companions are triggered by scroll position, authored per-article, and designed to augment reading rather than interrupt it.

We wanted our blog to feel alive. Not in a gimmicky chatbot way, but in a way that makes reading feel like you have company. Someone (or something) is reading along with you, noticing what section you're in, and having opinions about it.

So we built the AI Reading Companion — a floating widget that watches your scroll position and drops article-specific commentary as you read. The widget appears in the corner and follows along as you scroll.

What the Reading Companion Actually Does

When you scroll past 5% of any blog post on this site, a small floating widget appears in the bottom-right corner. It looks like this:

  • 🤖 AI COMPANION label
  • A contextual comment based on your scroll position
  • A minimize button (with localStorage persistence)

The comment changes as you scroll deeper into the article. Each article has 6 custom-written comments triggered at specific scroll percentages — these aren't random or generic. They're written specifically for that article's content.

For example, on our CSS GPU performance article, the companion says:

"Fun fact: this website uses 17 CSS animations right now. Irony, thy name is content." — at 5% scroll

"drop-shadow is beautiful and destructive, like a fireworks factory fire." — at 20% scroll

"If your laptop fan just turned on, that's not us. Probably." — at 75% scroll

Each comment is contextual, on-brand, and aware of what the reader is actually looking at in that section of the article.

Why Article-Specific Matters

The temptation with features like this is to create a pool of generic quips and randomize them. We tried that first — idle comments like "Still reading? Impressive" and "The good part's coming up." They were fine hollow. The comments could apply to any article, which meant they added personality without adding value. The reader could tell the AI wasn't actually engaged with the content.

Article-specific comments solve this because they prove the companion "knows" what you're reading. When it says "The comparison table ahead — I fact-checked every cell" on our IDE context article, it feels genuine. The AI is reacting to this article, this section, this argument.

The Core Difference

Generic comments add personality. Article-specific comments add presence — they prove the companion is actually reading along with you, not performing engagement from a script.

The implementation is straightforward: each MDX file includes a companionComments array in its frontmatter:

companionComments:
  - at: 0.05
    text: "Oh, this one's personal. I helped build this site."
  - at: 0.30
    text: "The author got emotional writing this part. I timed it."
  - at: 0.70
    text: "If you're still using a template after reading this... bold choice."

The at value is a scroll percentage (0 to 1). The component finds the latest comment whose threshold has been passed and displays it. Simple, no AI inference needed, but it feels intelligent.

AI companion widget appearing in the bottom-right corner of a blog post, displaying a contextual comment

The Scroll Tracking Implementation

The companion tracks window.scrollY relative to document.documentElement.scrollHeight - window.innerHeight. This gives a 0–1 progress value that updates on every scroll event (with { passive: true } for performance).

Key design decisions we made:

Show after 5% scroll

Appearing immediately feels clingy. Waiting until the reader has committed to scrolling signals they're actually reading.

One comment at a time

We considered stacking comments like a chat log but it was visually noisy. A single rotating comment is cleaner and easier to read peripherally.

Minimize with persistence

Some readers find floating widgets distracting. The minimize button collapses the companion to a small 🤖 icon, and localStorage remembers this preference across sessions. Respecting user choice is non-negotiable.

Animate comment transitions

When the comment changes, it slides in with a translateX animation. This draws the eye without being obnoxious.

The Co-Reading Experience

What makes this feature special isn't the technology — it's the reading psychology.

Reading a blog post alone is passive. Reading it with a companion that has opinions creates a sense of co-presence. It makes you engage more. The companion doesn't interrupt your reading — it augments it. Like reading a book someone has written notes in the margins of.

This is different from comment sections (which are post-reading) or chatbots (which are task-oriented). The companion is real-time, contextual, and opinion-driven. It's not trying to help you — it's just there, being snarky, being observant.

Reading engagement analytics showing increased scroll depth and return visits from AI companion feature

Writing Good Companion Comments

Not all companion comments are created equal. Through iteration, we've developed rules for writing them:

Generic comment (hollow, could apply to any article)

"Great article! Keep scrolling for more insights."

Article-specific comment (presence — proves the AI is actually here)

"The comparison table ahead — I fact-checked every cell. Any errors are intentional. For character."

Write thisAvoid this
Reference the specific section the reader is inGeneric praise ("Great article!")
Break the fourth wallRepeating information from the article
Take an opinion ("Screenshot this part")Commenting too frequently — 6 per article is the sweet spot
Vary tone: snarky → insightful → self-awareBeing mean-spirited — snarky ≠ hostile

Each article's companion comments are part of the creative process now — they're included alongside SEO metadata and content structure as part of the blog architecture.

What This Isn't

The most common misconception: an AI reading companion is just another chatbot or comment widget. It isn't, and understanding the difference is what makes it work.

What people expectWhat it actually is
A chatbotNo user input. The companion speaks; readers don't respond
A comment sectionNot post-reading feedback — real-time, in-progress commentary
Generic quips that could apply to any articleArticle-specific commentary written for each section
An interruptionPeripheral presence — like margin notes, not pop-ups
Requires AI inference at runtimeFrontmatter-driven, zero API calls, zero latency

The companion is closer to a book with someone else's margin notes than to any chatbot product. It assumes you're reading, not waiting to be helped.

Engagement Impact

Since adding the companion, we've observed:

  • Increased scroll depth — readers scroll further to see what the AI says next
  • Higher return visits — the companion says different things at different scroll speeds
  • Social sharing of companion quotes — the quips are designed to be screenshot-worthy

The feature adds approximately 2KB of JavaScript and uses zero API calls — everything is frontmatter-driven, zero latency, zero cost.

Try It Yourself

If you've read this far, the companion has been commenting on this article the entire time. Scroll up and watch it change. Minimize it. Refresh the page — it remembers your preference.

The difference between a blog that feels alive and one that doesn't isn't word count or design. It's whether the content knows you're there. A reading companion costs 2KB of JavaScript and zero API calls — but it changes the entire psychological register of reading from a monologue to a conversation.

Your Blog Cards Are Boring — Ours Run Away From Readers — the other side of the interactive experience: what happens on the blog listing page before anyone clicks through.

This post is part of our Interactive Components guide — the full breakdown of every interactive element that makes this blog feel alive.