Oops, the “.json” only give you the first 20 posts, but if you append “.json?print=true” to the url like this https://talk.tiddlywiki.org/t/how-to-save-a-topic-from-the-forum-into-a-tiddlywiki/15094.json?print=true, you can retrieve up to 1000 posts per topic which is quite sufficient for talk.tiddlywiki.org.
I wrote a little test in Tiddlywiki (with markdown plugin) to display the imported tiddlers with different view output.
<table>
<tr><th> Author </th><th> Text </th><th> Comment </th></tr>
<$list filter="[[$:/Import]links[]]" variable="comment" >
<tr><td> ''{{{[<comment>get[author]]}}}'' </td>
<td><$transclude $tiddler=<<comment>> $output="text/html" /></td>
<td><$view tiddler=<<comment>> format="plainwikified" /></td>
</tr>
</$list>
</table>
It’s a long thread from https://talk.tiddlywiki.org/t/tiddlywiki-app-a-smooth-user-experience-2025-for-multiple-platforms/12066/ :
Still some work to do to get plain clean text, especially for those comments with images and attachments, but I suppose this is a decent start to the task. Have fun 
Quotes from Gemini AI on Discourse JSON :
Limitations of this JSON approach
While appending .json to a URL is a quick way to inspect data, it has several limitations for retrieving full discussion contents:
1. The “20 Post” Default
By default, the posts array only returns the first 20 posts. Even if the stream shows 500 IDs, you only have the content for the first 20. To get the rest, you must make additional, separate API calls (e.g., /t/{id}/posts.json?post_ids[]=...) using the IDs you found in the stream.
2. The 1,000 Post Hard Cap (with print=true)
There is a common “hack” where you add ?print=true to the JSON URL to get more posts at once. However, this is hard-capped at 1,000 posts. If a discussion has 1,500 posts, the “print” method will still miss the final 500 unless you manually paginate using &page=2.
3. Rate Limiting
If you try to “scrape” a long discussion by looping through the stream IDs and hitting the server for every 20 posts, you are likely to trigger the 429 Too Many Requests error. Discourse has strict rate limits for both anonymous and API-keyed requests to prevent server strain.
4. Content Formatting (Cooked vs. Raw)
The JSON typically returns “cooked” HTML (ready for display). If you need the original Markdown/Text (“raw”), you often have to specify additional parameters or use a different endpoint, which may require an API key and administrative permissions.