Transform your Discord channel logs into stunning, fully offline interactive dashboards.
8 gorgeous themes, real-time search, analytics, audio players, and so much more.
npm install nexus-transcripts
A single npm install that replaces an entire suite of custom transcript tools.
Dark, Light, AMOLED Black, Cyberpunk, Dracula, Nord, Forest, and Glassmorphism โ all switchable in the output HTML with zero recompilation.
Real-time client-side search with live keyword highlighting across every message, embed, and author โ all powered by pure JavaScript.
Hourly activity heatmaps, speaker share bars, top word clouds, and message statistics โ all rendered inside your HTML transcript.
Generated transcripts are 100% standalone. No CDN links required at read-time. Avatars and images can be Base64-inlined for true offline access.
All outputs are mobile-first responsive, with slide-out sidebars, adaptive grids, and fluid layouts that look perfect on every device size.
Interactive audio players, inline video, fullscreen image lightbox, and elegant file attachment cards โ all rendered perfectly.
Power users can navigate with Ctrl+F, Escape, GG, Shift+G, P and more โ all shortcuts are documented inside the transcript itself.
Drop-in compatible with Discord.js channels and message objects. Returns string, Buffer, or AttachmentBuilder format.
Every theme is carefully curated for readability and visual impact. Users can switch themes directly inside the generated HTML โ no code changes needed.
Full Discord.js v14 support, TypeScript-first types, and zero external runtime dependencies.
Install from npm using your favourite package manager:
npm install nexus-transcripts yarn add nexus-transcripts pnpm add nexus-transcripts
Requires discord.js@^14.0.0 as a peer dependency.
Create a transcript from any Discord.js TextChannel:
import { createTranscript } from 'nexus-transcripts'; const transcript = await createTranscript(channel, { limit: 100, returnType: 'attachment', fileName: `transcript-${channel.name}.html`, }); await message.reply({ files: [transcript] });
Use generateFromMessages() for custom message arrays:
import { generateFromMessages } from 'nexus-transcripts'; import * as fs from 'fs'; const html = await generateFromMessages(messages, channel, { returnType: 'string', inlineAvatars: true, inlineImages: true, }); fs.writeFileSync('transcript.html', html);
Configure your options and get the exact code you need.