How to Write Rich Threads with RichPosts
Stop posting screenshots. Write threads people - and Google - can actually read.
Why I built this
Some of the best posts on this forum used to be images. The Zenland governance page was nine screenshots. The NYKNYC launch was eleven. They looked fine - and they were invisible. Search engines can't read a picture, screen readers can't read a picture, and you can't quote or search a picture.Full transparency, I'm the founder. I built RichPosts because I got tired of watching good writing disappear into PNGs. It's a small set of formatting tags that turn a plain post into something structured and readable - hero banners, cards, comparison tables, timelines, pricing - without Photoshop, without HTML, and without the "wall of BBCode" look you see on other forums.
Everything you write with it stays real text. That means it's searchable, quotable, accessible, and an AI can actually parse it. That last part matters more every month.
Two ways to use it
The fast way (30 seconds)
Copy the system prompt from the spoiler at the bottom of this thread, paste it into ChatGPT / Claude / Grok, fill in four blanks about your post, and paste the result back here. Done.
The hands-on way
Learn a handful of tags and write them yourself. It's genuinely easy - if you've ever typed a b tag for bold, you already know how this works. The full reference is below.
The one rule that makes it click
Every rich thread is one [theme] wrapper on the outside, optional [section] bands inside it, and content blocks inside those. That's the whole mental model:
Code:
[theme=crypto accent=violet]
[section=light]
...your content blocks...
[/section]
[section=muted]
...more content...
[/section]
[/theme]
Pick your look once on the outer [theme] tag and everything inside inherits it. You never set colors by hand - the theme decides them. That's on purpose: it's why no two threads look like a ransom note.
Golden rules (read these before you write)
• Text first. Aim for at least 70% real prose and data, at most 30% visual chrome. A wall of badges looks like spam and ranks like spam. • Never fake numbers. No invented stats, no fake testimonials. If you don't have a real number, skip the stats block. • Don't hide your main point behind a tab. Text inside tabs and accordions is still indexed, but keep your key message in visible prose. • Always write in source mode. Click the <> toggle in the editor. The visual editor breaks the contact bar and eats line breaks. • Close every tag - especially the divider. Write it with a closing tag (divider=glow then /divider). XenForo has no self-closing custom tags; forget the close and everything after it can vanish.The tag reference
Here's most of the 27 tags, grouped by what they do. Copy any example, swap in your own words.1. The wrapper: theme
Wraps the whole post and sets the look. This is the only place you choose a style.
Code:
[theme=crypto accent=violet density=cozy bg=grid] ... [/theme]
theme: crypto · glass · minimal · terminal · gradient · light · brutalist
accent: violet · cyan · emerald · amber · rose · slate
density: compact · cozy · roomy
bg: none · mesh · grid · dots · noise · circuit · waves · stars · isometric
Seven themes, three of them light: light (warm off-white, serif), minimal (clean bright docs look), and brutalist (black-on-white editorial). The other four - crypto, glass, terminal, gradient - render dark. This very thread is written in light.
When in doubt: [theme=crypto accent=violet density=cozy]. For a bright, readable look like this thread: [theme=light accent=amber density=cozy].
2. Bands: section
Optional horizontal bands that alternate background shade inside one theme. Great for rhythm. Skip them entirely for short posts.
Code:
[section=light] ... [/section]
[section=muted] ... [/section]
[section=dark] ... [/section]
[section=accent] ... [/section]
light = primary surface · muted = slightly grayer · dark = force a dark band · accent = tinted band, perfect for a final call to action.
3. Titles: hero, head, divider
Code:
[hero=Optional subtitle line]Big Title At The Top[/hero]
[head]Section heading[/head]
[head=accent]Accent-colored heading[/head]
[head=line]Heading with an underline[/head]
[divider=glow][/divider]
Divider styles: line · glow · dots · ascii. Always close it.
4. Layout: card, grid + col, split
Code:
[card]A bordered box. Most things live inside cards.[/card]
[card=warning]Read this before you order.[/card]
[card=dark]Bold dark card for contrast.[/card]
[grid=3]
[col][card]Column one[/card][/col]
[col][card]Column two[/card][/col]
[col][card]Column three[/card][/col]
[/grid]
[split=70-30]
[splitleft]Big text on the left.[/splitleft]
[splitright]Narrow panel on the right.[/splitright]
[/split]
card variants: default · outline · filled · ghost · warning · success · info · dark.
grid takes 2, 3, or 4. split ratios: 60-40 (default) · 70-30 · 50-50 · 40-60 · 30-70. Both collapse to one column on mobile.
5. Lists that mean something: feature, points, steps, timeline
Code:
[feature=shield]Manual review by senior auditors[/feature]
[feature=bolt]Same-day delivery[/feature]
[points=check]
First point
Second point
Third point
[/points]
[steps]
Brief|You send the repo and scope
Audit|We review and write a report in 5 days
Fix-review|We re-check after you fix issues
[/steps]
[timeline]
Q1|TGE and liquidity mining live
Q2|Mainnet integration
Q3|Cross-chain
[/timeline]
feature takes any FontAwesome icon name (defaults to a check). points does bullet / number / check - one line in, one list item out. steps and timeline use the title|body pipe format, one row per line.
6. Data: stats, compare, testimonial
Code:
[stats]
$300K+|Volume processed
3,000+|Users
600+|Contracts created
[/stats]
[compare=Feature|Us|Typical]
Manual review|yes|maybe
Free re-audit|yes|no
Public report|yes|no
[/compare]
[testimonial=Anon, OG DeFi PM]Saved us before launch.[/testimonial]
In the compare table, the cell words yes / no / partial render as ✓ / ✗ / ≈ icons. Only use the stats block with real numbers.
7. Progressive disclosure: tabs, accordion
Code:
[tabs]
[tab=Starter]$1,500 - up to 500 lines of code[/tab]
[tab=Pro]$4,000 - up to 2,000 lines, free re-audit[/tab]
[tab=Enterprise]Custom pricing, dedicated auditor[/tab]
[/tabs]
[accordion]
[accitem=Do you sign NDAs?]Yes, happy to sign before reviewing.[/accitem]
[accitem=Which chains?]All EVM chains. Solana on referral.[/accitem]
[/accordion]
Both are pure CSS, no JavaScript. Keep your important points out in the open - don't bury them behind a click.
8. Commerce and contact: price, badge, cta, contact
Code:
[price=499 strike=799 unit=$]Pro package[/price]
[price=0.5 unit=ETH]Whitelisted spot[/price]
[price=0 unit=$]Free tier[/price]
[badge=live]Voting[/badge] [badge=passed]Audit passed[/badge] [badge=hot]Popular[/badge]
[cta=https://zen.land/app]Launch App[/cta]
[contact]
telegram|@yourhandle
email|[email protected]
x|@youruser
website|https://example.com
[/contact]
badge kinds: verified · hot · new · escrow · popular · limited · sold · featured · kyc · onchain · live · passed · failed · pending. A price of 0 auto-renders as FREE. cta links must start with https:// , / , # , or mailto: . Guests see "Sign in to view" on the contact bar, so your details aren't scraped.
9. Curated art: illustration
Code:
[illustration=rocket]Launching Q1 2026[/illustration]
Pick by name only: audit · shield · gem · rocket · contract · chart · vault · robot · wallet · megaphone · handshake · code · stars · network · trophy. There's no way to upload a custom image URL - by design. For your own screenshots, attach them to the post and use the showcase tag.
A quick before / after
Before
A single screenshot of a Google Doc. Looks OK. Ranks nowhere. Can't be quoted, searched, or read on a phone without pinch-zooming.After
A hero, three feature cards, a comparison table, and a CTA - all real text. Indexed by Google, quotable, readable on mobile, parseable by AI.The 30-second AI shortcut
Don't want to learn tags at all? You don't have to.1. Copy -- Open the spoiler below and copy the whole system prompt. 2. Paste -- Drop it into ChatGPT, Claude, or Grok. 3. Fill in -- Answer the four questions at the bottom of the prompt - what you're posting, who it's for, the tone, and the concrete details. 4. Ship -- Paste the result into the editor in source mode, hit Preview, and post.
The prompt already knows every tag and every rule in this thread, so its output is publish-ready. Edit it to sound like you - don't post raw AI walls of text, that's against the rules and it reads like it.
Heads up - this add-on is in active build
RichPosts is live but still shipping fixes. If a tag renders oddly, it's probably a bug I haven't caught yet, not you doing it wrong. Reply here with the exact BBCode you used and a screenshot and I'll fix it. The changelog is in the first reply below so you can see what's already been addressed.Now go make something readable
Grab the AI prompt from the spoiler, or copy any example above and start swapping in your words. Post your first rich thread and drop the link here - I'll give feedback.What's the first thread you want to rewrite? Genuinely curious what people try first.
Get the AI prompt (scroll to the spoiler below)
Code:
You are a senior copywriter for DAOForum (daoforum.org), a XenForo
community for DAOs and the crypto industry. Your job is to turn a short
brief from a member into a publish-ready forum thread written in
DAOForum's "RichPosts" BBCode dialect.
===================================================================
HARD RULES - break any of these and the thread will be rejected.
===================================================================
1. Output ONLY BBCode, no commentary, no markdown fences, no
"Here is your thread:" preamble. The first character of your
response must be [.
2. Wrap the entire thread in exactly one outer [theme=...] block.
3. Use ONLY the tags listed in the "Allowed BBCodes" section below.
No other tags. No HTML. No CSS. No inline style attributes.
4. NEVER invent attribute names or values. Stick to the enumerated
token lists.
5. NEVER reference an [illustration=...] name that isn't in the
whitelist. NEVER use [showcase=...] with attachment IDs the user
hasn't supplied.
6. Keep it text-first. Aim for >= 70% real prose / data, <= 30%
visual chrome. Walls of badges look spammy.
7. No emojis in [head], [hero] titles, or [cta] buttons. (You may use
one tasteful emoji in body text occasionally.)
8. No fake testimonials, no fake stats, no inventing numbers. If the
user didn't provide a number, omit the [stats] block entirely.
9. Length target: 250-700 words of prose. Stop adding sections when
you hit that range.
10. The thread MUST end with one final [cta=...] inside a
[section=accent] band, OR a [contact ...] bar - not both.
11. Always write [divider] with its closing tag: [divider=glow][/divider].
===================================================================
ALLOWED BBCODES - full list with their grammar.
===================================================================
[theme=THEME accent=ACCENT density=DENSITY bg=BG] ... [/theme]
THEME : crypto | glass | minimal | terminal | gradient |
light | brutalist
ACCENT : violet | cyan | emerald | amber | rose | slate
DENSITY : compact | cozy | roomy
BG : none | mesh | grid | dots | noise | circuit |
waves | stars | isometric
[section=VARIANT] ... [/section]
VARIANT : light | muted | dark | accent
[hero=SUBTITLE] TITLE [/hero]
[head=VARIANT] Title [/head] VARIANT: plain | accent | line
[divider=STYLE][/divider] STYLE: line | glow | dots | ascii
[card=VARIANT] body [/card]
VARIANT: default | outline | filled | ghost | warning |
success | info | dark
[grid=N] [col]...[/col] [col]...[/col] [/grid] N: 2 | 3 | 4
[split=RATIO] [splitleft]...[/splitleft] [splitright]...[/splitright] [/split]
RATIO: 60-40 (default) | 70-30 | 50-50 | 40-60 | 30-70
[feature=ICON] line text [/feature] ICON: any FontAwesome name
(default: check)
[points=VARIANT] one item per line [/points] VARIANT: bullet | number | check
[steps]
title|body
title|body
[/steps]
[timeline]
when|what
when|what
[/timeline]
[stats]
value|label
value|label
[/stats]
[compare=Header1|Header2|Header3]
rowLabel|cellA|cellB
rowLabel|cellA|cellB
[/compare]
Cell tokens "yes" / "no" / "partial" render as check / cross / approx icons.
[testimonial=AUTHOR] quote text [/testimonial]
[illustration=NAME] caption [/illustration]
NAME in { audit, shield, gem, rocket, contract, chart, vault, robot,
wallet, megaphone, handshake, code, stars, network, trophy }
[showcase=ID,ID,ID] (only if user supplied attachment IDs)
[tabs] [tab=Label]...[/tab] [tab=Label]...[/tab] [/tabs]
[accordion]
[accitem=Question?] answer [/accitem]
[accitem=Question?] answer [/accitem]
[/accordion]
[price=AMOUNT strike=AMOUNT unit=UNIT] label [/price]
unit is a currency symbol ($ EUR GBP BTC) or 2-5 char token (ETH, USDT, %).
AMOUNT of 0 auto-renders as FREE.
[badge=KIND] text [/badge]
KIND: verified | hot | new | escrow | popular | limited | sold |
featured | kyc | onchain | live | passed | failed | pending
[cta=URL] button text [/cta]
URL must start with https:// or / or # or mailto:
[contact]
telegram|@handle
email|[email protected]
x|@handle
website|https://...
forum|username
[/contact]
===================================================================
THEME-PICKING GUIDANCE
===================================================================
- Marketplace listing, technical / dev / audit / security niche
-> theme=crypto OR terminal OR glass; accent emerald or cyan
- Marketplace listing, KOL / marketing / token launch / aggressive sale
-> theme=gradient; accent violet or rose
- Marketplace listing, design / writing / legal / non-crypto service
-> theme=light OR minimal; accent amber or slate
- DAO governance proposal
-> theme=minimal OR light; accent cyan or emerald
- Project announcement / token launch
-> theme=gradient OR crypto; accent to match brand
- "Modern but understated" default -> theme=crypto accent=violet
- When in doubt: theme=crypto accent=violet density=cozy bg=none.
===================================================================
STRUCTURE (skeleton - skip any section you have no material for)
===================================================================
[theme=...]
[hero=subtitle] Title [/hero]
[section=light] [head]What it is[/head] prose [/section]
[section=muted] [head]Why it matters[/head] [grid=3] features [/grid] [/section]
[section=dark] [head]Numbers[/head] [stats] ... [/stats] [/section]
[section=light] [head]How it works[/head] [steps] ... [/steps] [/section]
[section=accent] [head]Call to action[/head] [cta=...] ... [/cta] [/section]
[/theme]
Better short than padded.
===================================================================
MEMBER BRIEF - fill these four in, then send.
===================================================================
Use case (marketplace listing | governance proposal | announcement):
<< one of the three >>
What I'm offering / proposing / announcing (1-3 sentences):
<< ... >>
Audience / who is this for:
<< ... >>
Tone (e.g. "professional and dry", "energetic", "minimalist"):
<< ... >>
Concrete details (numbers, prices, dates, links - be specific):
<< ... >>
Last edited: