How to Run the Best Comment Section on the Web: A Playbook for Publishers
Discourse gives publishers a comment section that screens spam with AI, translates threads into readers’ languages, and turns each article into a permanent thread that search engines and AI tools can find.
What if your comment section was the best part of your website?
Your commenters are your most valuable readers. They read to the very end, debate your writers, and keep coming back for more. When publishers give these readers a premium space to connect, they increase time on site, boost organic search traffic, and build a loyal, owned community.
Discourse provides the infrastructure you need to do just that.
Here's exactly how to get started!

The short version
- Let a language model screen new commenters.
- Translate every thread into your readers' languages.
- Keep readers on the article page.
- Give each article a permanent thread.
- Let your regulars help you moderate.
1. Let a language model screen new commenters
Spammers target open comment boxes first. Once they land a few posts, your readers stop replying.
With AI spam detection turned on, we run every post from a new account through a language model before your readers see it. By default, we check accounts at trust level 0 or 1 with three posts or fewer, and skip your staff and regulars. When a new account edits a post within 24 hours, we check it again, so spammers can't post something harmless and slip the links in later.
For each post, we give the model the text, up to three images, the topic and category, the post it replies to, and the account's age, email address, post count, and rough location. The model decides whether the post is spam and tells your moderators why.
When we mark a post as spam, we hide it, silence the account, and send both to your review queue. If the spammer started a new topic, we hide the whole topic. If we got one wrong, your moderators restore it with one click.
You can write your own rules in plain language and choose which trust levels we check. We turn this on by default for hosted Pro and Business plans and run the language model for you. Self-hosted teams can connect their own.
2. Translate every thread
Readers who can't read a thread scroll past it, so you hear from only part of your audience.
We translate each comment into the languages you choose and show every reader the version in their own language. A reader in Madrid and a reader in Tokyo reply to the same thread. Signed-in readers get the language set in their account, and visitors pick one from a switcher. Readers tap a small marker to see the original, and we translate a post again whenever its author edits it.
You choose which categories we translate, and you can write translation instructions so we keep your house terms and tone in every language. We also tag each language version for search engines, so people searching in German find threads that started in English.
We support two languages on hosted Free plans, four on Pro, and up to ten on Enterprise.
3. Keep readers on the page
Turn on full app mode so readers can reply, like, quote, and flag posts under the article without opening a new tab or losing their place in the story. They sign in with your existing login through DiscourseConnect, or with Google, GitHub, or Discord.
Turn on two more settings on day one: load comments only when readers scroll near them, and let the comment area grow with the thread, so a quiet post leaves no gap and a busy one has room. Your designers can style everything with your own CSS.
4. Give each article a permanent thread
The first time someone opens an article, we create a matching topic on your Discourse site that links back to it. Readers who arrive from the article and readers who arrive from the forum join the same thread.
We give each thread its own public address, so people searching Google, or asking ChatGPT, Gemini, or Claude, can find what your readers said long after you published the story. A reader who comes to comment on one story finds other threads and people to follow, and your regular commenters become members.
We build Discourse as open source. You keep every post and every account, and you can export them whenever you like. We don't run ads in your comments, and we don't sell your readers' data.
5. Let your regulars help you moderate
We start new accounts with limits on links and images. As readers participate, they earn more privileges, and your most trusted regulars help you flag spam and keep threads tidy. Your moderators handle every flag, held post, and new account from one queue.
If you want a stricter line, set Discourse AI to flag toxic and NSFW posts, and hold first posts from new accounts for approval.
How to set it up
- WordPress: Install the WP Discourse plugin to publish your posts to Discourse and show replies under each one. You choose which replies appear, such as posts from trusted members or posts your moderators liked.
- Ghost: Replace the comments helper in your theme with the Discourse snippet.
- Any other site that runs JavaScript: Add your site as an allowed host under Admin > Advanced > Embedding, turn on full app mode, and paste the snippet Discourse generates.
Send each section of your site to its own category, and credit each topic to the article's author with a single meta tag. If you have a large archive, keep new topics unlisted until someone replies, so old articles don't flood your latest list.
Three questions to answer before you start:
- Which sections of your site need a discussion, and which don't?
- Which languages do your readers speak?
- Who on your team will check the review queue, and how often?
We run the comments on our own blog this way, under posts that have collected replies for years!
Plus, our engineers can move your old comments over for you.
Talk to our team or read the setup guide to get started today.

Comments