Discourse tips, hidden features, etc.

While Discourse forums perhaps seem like any other forum you’ve encountered, they happen to be packed with various features and integrations when you look a little deeper.

Here are a few examples I’ve noticed over time, and I’m quite sure there are many more, so feel free to mention any you’ve found.

Email

If you’d like to be alerted to new forum posts via email, there are several available options. Mailing list mode will mail you for every message. You can also choose to be notified only for posts in certain categories.

RSS

Perhaps you prefer feeds instead of emails. There are many RSS feeds available for the whole forum, particular categories, etc. See the RSS feed reference for more details.

Threads as Markdown via raw view

As @eliot recently mentioned, there’s a raw view which shows thread content as it was originally entered (in Markdown). Replace the /t/<slug>/<thread id> portion of a thread URL with /raw/<thread id>. This is an easy way to archive interesting threads locally for later use and analysis.

Wiki posts

Posts can be converted into community editable wikis that anyone can update (like this one!). This is how all the thread-starting posts in our catalog category are configured to operate by default. For the catalog, these posts are then read by a script to produce the catalog page on our website.

5 Likes

Thanks for these tips! I wasn’t aware.

Just FYI, the catalog page for Modal is not editable. I just happened to notice because it’s near the top of the thread index.

Ah, thanks for pointing that out. Fixed!

raw view

I really liked this tip, but quickly ran into a limitation: /raw/<thread id> only seems to work for some number of initial comments in a thread. So I’ve fallen back to my previous approach:

  1. Use my browser’s inspector to inspect the comment I care about and scan around until I find the <article ...> tag. Look up the data-post-id attribute inside this tag.
  2. Copy the raw contents of the comment to the clipboard by running say $ mall 1628 at a terminal, where 1628 is the value of the data-post-id, and mall is implemented as follows:
mall () {
        curl https://forum.malleable.systems/posts/$1/raw | xcopy
}

Here, xcopy is an OS-specific helper to read the contents of stdin and copy them to the clipboard. On Mac OS it is called pbcopy.

1 Like

Apparently there’s a way to specify a page number in the /raw URL with a query parameter page.

/raw/<thread id>?page=<page number>

I forgot where I got this information, and couldn’t find any Discourse documentation about it either - for example, how to get the total number of available pages. I guess you can loop through page numbers until it returns 404 not found.

3 Likes

For me, a much simpler method has been sufficient so far: the copy-as-markdown browser extension. Or copy-as-orgmode, depending on the destination (org-mode for my personal notes, Markdown for various shared notepads).

1 Like

Some Discourse APIs are paginated, so you could use the page query param like @eliot suggests.

If you wanted to script things a bit more (rather than needing the browser inspector), you could use the JSON view of the topic at /t/<slug>/<thread id>.json. See also the API docs for an example response. (The raw API is curiously not documented there…)

Ah yeah, that might be the simplest approach for most use cases. :smile:

Yes, thank you all! After trying them all, I like the pagination approach. I’d rather use the original authored markdown when available than try to deduce it.

Oh my gosh!! I love it !

And with the ‘read mode’ in Firefox I got that super lite page :

:star_struck::star_struck:

2 Likes