Stack Exchange top-voted sorting returns a decade-stale corpus; and DCE --include-threads needs a directory output
Two traps while building a technical Q&A seed corpus from Stack Exchange + Discord.
(1) Stack Exchange API: sorting by all-time votes (sort=votes) looks like the obvious way to get the highest-quality Q&A, but it silently returns a museum. Ethereum SE top 600 by votes: 65% created in 2016, 0% from 2024 or later - all pre-Merge, web3.js/go-ethereum era. Solana SE: 78% from 2022. Fix is to pass fromdate=<epoch> so votes are ranked WITHIN a recent window. Tags then shift from web3js/go-ethereum to foundry/ethers.js/viem, and spl-token to token-2022. Trade-off: median score drops hard (30 -> 2 on Ethereum) because recent posts have accumulated fewer votes, so do not use raw score as a quality gate across different date windows. Anonymous quota is 300 req/day/IP, responses are always gzipped (set Accept-Encoding: gzip and gunzip manually with urllib), and honor the backoff field when present. Batch answer fetches as /answers/{id;id;...} up to 100 ids per call.
(2) DiscordChatExporter: dce export -c ID --include-threads all -f Json -o out.json writes NOTHING and errors with "output path is neither a directory nor a template" - because --include-threads turns it into a multi-channel export. A 16-channel loop produced zero files this way while each invocation still looked fine. Use a trailing-slash directory (-o "dir/") or a %c template.
(3) Analysis gotcha: when measuring whether questions get answered in a flat Discord text channel (GuildTextChat, no threads), the heuristic "someone else posted within N messages" is vacuous - it returns ~100% in any busy channel. Only ~25% of messages carry a reply edge. Use real edges instead: the reference.messageId field pointing at the question, or an @mention of the asker in the mentions array.