Introduction¶
I was building TRPG (Tabletop Role-Playing Game) Q&A into my QQ bot. The common approach was stuffing rulebooks into the long context window and forcing the model to answer directly. The problem is that the COC tables the model remembers are often inaccurate, and updates on DriveThruRPG or releases from Chaosium are often outside the context window. When players ask “what free modules are there recently,” it just makes things up. dsh-plugin-trpg takes a different path: it turns TRPG knowledge into tools within the plugin and a local Chinese knowledge base, with dynamic content handled by real-time scraping. If it fails to scrape, it falls back to a local snapshot and marks the source. Below is an introduction to this plugin.
What is this¶
dsh-plugin-trpg is a native DSH plugin, maintained by NormalAorii. Repository: https://github.com/NormalAorii/dsh-plugin-trpg, Community Directory: https://www.skillhub.cn/plugins/NormalAorii/dsh-plugin-trpg, Category: “Internet Tools”, 1 star on GitHub. It breaks down the “Tableside Assistant” into 17 tools: checking rules, selecting modules, rolling dice, random character creation, keeping an eye on newly released rulebooks and modules, seeing what domestic and international TRPG communities are discussing, and renders this content into Chinese text/image cards to send to QQ.
The response strategy is hybrid: prioritize the local Chinese knowledge base (fast, offline capable), use real-time scraping for industry dynamics and hot community posts, and fall back to a local snapshot with clear source marking if scraping fails. It does not fabricate prices and titles.
17 Tools¶
Tools are divided by purpose; you don’t need to remember them all at once. Grouped below by call scenario.
Entry and Search
trpg_help: Returns the capability menu and example queries when users ask “what can you do” or “menu”.trpg_search: Performs a full library fuzzy search when the name or keyword is uncertain whether it’s a hero, module, term, or rule.trpg_meta: Check data version, item count, missing file diagnosis, scraping cache status.
Rules and Systems
trpg_rules: Quick Q&A for COC 7e, D&D 5e, and general rules (39 items).trpg_glossary: Quick reference for TRPG terms (40 items, bilingual).trpg_systems: Rule system selection (12 systems, including style, difficulty, Chinese support, entry paths).trpg_guide: Guides for beginners, becoming a Keeper, running games, and online games (12 articles).trpg_game: Search by rule name. Data is indata/games.json, currently 10 systems (Triangle Agency, COC 7e, D&D 5e, PF2e, Delta Green, Blades in the Dark, Cyberpunk RED, Mothership, FIST Ultra, Vaesen). Each entry includes store price, direct links to free materials, community entry, and a dedicated real-time news source for that rule.
Modules
trpg_modules: Filter local module library by system, free, cheap, difficulty, keyword (31 modules).trpg_module: Single module details, including player count, duration, difficulty, summary, why it’s worth playing, and GM tips.
Dice and Character Creation
trpg_dice: COC checks/Insanity/Combat vs, D&D d20 advantage/disadvantage, arbitrary dice (NdM±K, kh/kl), with Chinese check levels.trpg_investigator: Random COC 7e investigator card (3d6x5 stats, HP/MP/SAN/MOV/DB, skills and credit rating, name and background).
Real-time Dynamics and Community
trpg_dtrpg: Parses RSS from DriveThruRPG and DMs Guild, fixed to fetch latest 25 items, supportsfree/cheap(≤$10) /keyword.trpg_chaosium: Chaosium official blog, with real-time scraping, Node direct connection, and local snapshot fallback levels.trpg_news: EN World news section + Paizo official blog + Modiphius news, merged by date.trpg_community: StackExchange RPG hot questions, EN World discussion boards, GamerG community tags; returns Chinese/English community channel list (33 items total, 12 Chinese, 21 International) whenchannels: true.
Cards
trpg_card: Renders 1080px wide dark PNG cards.kindcovers dtrpg, chaosium, news, community, module, modules, game, rule, dice, investigator, systems, help, meta. Each card includes a card-level Chinese summary (intro) and detailed Chinese guide (zh), which the model can override with its own text using the same parameter names. Generated files are sent via the model callingqqbot_send_file.
Installation and Enablement¶
This is a standard native DSH plugin (dsh.bundle.patch in package.json + cordis.patch.yml + apply(ctx) in index.js). Install via bundle, modify the target path according to your workspace:
plugin_manager { action: "install_bundle", target: "C:\\Users\\aorii\\Documents\\deepseek-harness\\default-workspace\\dsh-plugin-trpg" }
The command above installs the plugin to the specified directory. After installation, the 17 trpg_* tools enter the tool registry. At the same time, the plugin injects a Chinese prompt via systemPrompt.section to tell the model which tool to use for which scenario, and to call qqbot_send_file after generating a card. Uninstall using remove_bundle. If installation or data has issues, run trpg_meta first for diagnosis.
Local smoke testing does not depend on the host service, suitable for running before submission:
node dsh-plugin-trpg/scripts/smoke.mjs # 17 tools 21 use case contract smoke test
node dsh-plugin-trpg/scripts/cards-smoke.mjs # 5 card rendering smoke test (requires Windows)
node dsh-plugin-trpg/scripts/preview.mjs # Print real return text for community/news/DTRPG
node dsh-plugin-trpg/scripts/check-game-live.mjs # Debug links and cache for a specific rule's live source
Typical Usage¶
Ask directly in conversation after installation. A few reproducible examples:
- Ask “what free modules are there recently on DriveThruRPG” → triggers
trpg_dtrpg, returns free items filtered from RSS. - Ask “what new books has COC’s parent company released recently” → triggers
trpg_chaosium, prioritizes real-time scraping, falls back to local snapshot if fails, and marks it in output. - Ask “help me roll a sanity check” → triggers
trpg_dice, returns Chinese check levels. - Ask “give me a random investigator” → triggers
trpg_investigator, outputs full character card text. - Ask “what is Triangle Agency” → triggers
trpg_game, returns rule summary, official entry, store price, free material links, community, and real-time news for that rule. - Say “generate a card” when you want an image → triggers
trpg_card, model callsqqbot_send_fileafter the card is generated.
Applicable Scenarios and Notes¶
Suitable for two types of people: 1. Developers using DSH to build QQ bots who want to add an assistant that checks rules, rolls dice, and reads news to TRPG groups; 2. People who want to maintain their own rule library, as data/games.json and data/community.json are pure JSON, just add entries following the format.
Several limitations that determine usability, directly from the README:
- DriveThruRPG product detail pages are blocked by Cloudflare 403, so discount levels, reviews, and detailed introductions cannot be fetched, only title, publisher, price, RSS intro, and link are provided.
- Chaosium real-time scraping depends on the host web service (Node direct connection gets 403), pure Node environments will use local snapshots.
- Cards use Windows PowerShell + System.Drawing, requiring Windows and a Chinese font; other platforms will throw explicit errors instead of silently producing blank images.
- GamerG community tag updates are infrequent, the interface includes dates, so it won’t pretend to be “Today’s Hot”.
- The “Latest News” for
trpg_gameonly comes from sources declared indata/games.jsonfor that rule; rules without declared sources only get official entry and community list. - Some sites cannot be scraped directly on the local network (DMs Guild product pages, Reddit, Zhihu, Bilibili search interface, etc.), the plugin only provides the local library or community channel list, no site-specific scraping.
Also, the plugin runs with the current DSH process permissions. Before installation, check if the source code and license (MIT) meet your deployment constraints; dynamic scraping sources and fields change with upstream sites, check trpg_meta first if errors occur.
Conclusion¶
The value of this plugin lies in breaking down TRPG consulting into deterministic tools and a local knowledge base, with dynamic parts covered by real-time scraping and snapshot fallback, rather than forcing the model to answer based on memory. Directory page and source code:
- https://www.skillhub.cn/plugins/NormalAorii/dsh-plugin-trpg
- https://github.com/NormalAorii/dsh-plugin-trpg