How to build an automated changelog page for your MU Online site
Build a changelog page that updates itself from a structured file, with change categorization, versioning, and Discord integration — cutting down the manual work of communicating updates.
Communicating updates consistently is one of the habits that most strengthens a private MU Online server's community trust — but maintaining a changelog page manually, copying and formatting text every time something changes, is repetitive work that most admins end up abandoning after a few weeks. A
Communicating updates consistently is one of the habits that most strengthens a private MU Online server's community trust — but maintaining a changelog page manually, copying and formatting text every time something changes, is repetitive work that most admins end up abandoning after a few weeks. An automated changelog page solves this: you write the change once in a structured file, and the site, Discord, and any other channel update from that same source. This tutorial shows how to structure that file, categorize changes usefully, and connect everything to a simple publishing automation.
Why a structured changelog (and not just loose posts)
A structured changelog treats each update as a data record (date, version, category, list of changes) instead of free-form text scattered across a blog post or Discord message. This structure lets you generate the site page automatically, filter by category, search by keyword, and even feed other channels (Discord, social media) from the same single source of truth, eliminating the rework of writing the same information in different formats for each channel.
Choosing the source file format
| Format | Advantage | Watch out for |
|---|---|---|
| JSON | Easy to process programmatically | Less readable for long manual edits |
| YAML | Readable and easy to edit manually | Sensitive to incorrect indentation |
| Markdown with front matter | Familiar for anyone already editing site content | Requires a front matter parser |
For sites that already use Markdown for other content pages (like tutorials), keeping the changelog in Markdown with front matter as well reuses the same build pipeline, reducing the complexity of maintaining two different parsing systems.
Recommended structure for each entry
Each changelog entry should contain, at minimum: a date or version, a short title, category (or categories), and a list of change items. An example in front matter format:
---
version: "1.4.2"
date: "2026-07-15"
categories: ["balanceamento", "correcoes"]
title: "Balancing adjustments after the guild war event"
---
- Reduced Twisting Slash damage by 8% against players (PvP only).
- Fixed a bug preventing guild war rewards from being delivered to offline members at the moment of victory.
- Increased Jewel of Bless drop rate in Kanturu Relics by 5%.
This format is simple enough for anyone on the team to write without needing to understand the site's code, but structured enough for the build to process automatically.
Categorization that's useful for the player
Split changes into categories that reflect the community's different interests: New Features (new items, systems, events), Balancing (damage, drop, and rate adjustments), Bug Fixes, and Events/Seasonal. A PvP-focused player wants to quickly scan the Balancing category without having to read about bug fixes irrelevant to them, and this clear separation increases the chance that relevant information actually gets read.
| Category | Example content | Most interested audience |
|---|---|---|
| New Features | New socket system, new custom wing | All players |
| Balancing | Damage adjustment, drop rate, crafting cost | PvPers and economy |
| Bug Fixes | Exploit fix, quest bug, UI error | Everyone, especially those affected |
| Events/Seasonal | Christmas event, double EXP weekend | Casual/returning players |
Generating the page automatically from the source file
In the site's build process (whether a static generator like Next.js/Astro/Hugo, or a custom script), configure it to read all files in the changelog folder, sort them by descending date/version, and render the page grouped by category or by chronological entry, according to community preference. The key point is that the page should never be edited directly in HTML — every content change goes through the source file, ensuring consistency and versioned history (especially if the site uses version control like Git).
Versioning: version numbers vs. dates
If the server makes large, well-defined updates (new system, broad rebalancing), numbering versions (v1.4.0, v1.4.1) helps the community reference "that update" precisely in support tickets and discussions. If updates are more frequent and incremental (small weekly tweaks), using just the date as the main identifier tends to be more intuitive, avoiding the bureaucracy of deciding whether a small tweak "deserves" a new version number.
Automatic Discord integration
Set up a Discord webhook in the server's announcements channel, triggered automatically whenever a new changelog entry is published (via GitHub Actions, a cron job that checks for new files, or a hook in the site's own deploy). The message should include the title, main category, a 2-3 item summary, and a direct link to the full entry on the site page, avoiding manually rewriting the same content in two places.
# Simplified example of a webhook notification script
curl -X POST "$DISCORD_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{"content": "**New update: v1.4.2**\nPost-guild war balancing. See everything at: https://yoursite.com/changelog/1-4-2"}'
RSS or feed for players who follow closely
For servers with a more technical community or partnerships with MU news sites, generating an RSS feed from the same changelog source file lets players and third-party sites track updates without depending on manually visiting the site or being on Discord at the exact moment of the announcement.
Writing best practices for the changelog
Write each change item from the perspective of its impact on the player, not from an internal technical perspective ("Reduced X's damage by Y%" is better than "Adjusted the skill multiplier in the config file"). Avoid development jargon that the average player won't understand, and whenever a change meaningfully affects economy or PvP, consider adding a line of context explaining the reason for the adjustment — this reduces community complaints about the change feeling arbitrary.
Common errors and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| Changelog outdated for weeks | Manual process with no automation | Migrate to a structured file + automatic build |
| Players can't find relevant changes | Lack of categorization | Split into New Features/Balancing/Fixes/Events |
| Discord and site show different information | Content written twice manually | Generate the Discord notification from the same source file |
| Community complains about "unexplained" changes | Changelog item lacking context for the reason | Add a short line explaining the reason for the change |
| Page breaks after publishing a new entry | Syntax error in the source file (YAML/JSON) | Validate the file with a linter before deploy |
Automated changelog implementation checklist
- Source file format defined (JSON, YAML, or Markdown with front matter).
- Standardized field structure (date/version, category, items).
- Categories defined usefully for the different player profiles.
- Site build generating the page automatically from the source file.
- Discord webhook configured to notify new entries.
- Versioning convention (numbers or dates) defined and documented for the team.
- Source file linter/validation configured before deploy.
With the automated changelog live, communicating updates stops being repetitive manual work and becomes a natural part of the deploy process — to dig deeper into the overall structure of the site and the server behind it, see the MU Online server setup tutorial.
Frequently asked questions
Why have a dedicated changelog page instead of just posting on Discord?
Discord is great for immediate notification, but messages get lost in the scroll and aren't easily searchable. A changelog page on the site becomes a permanent, indexable history, useful for players who come back after a while and want to know what changed, and it also helps the site's SEO.
Do I need a full CMS to automate the changelog?
Not necessarily. A structured file (JSON, YAML, or Markdown with front matter) versioned alongside the site's code is already enough to generate the page automatically on every deploy, without requiring a full CMS panel.
How do I categorize changes in a useful way for the player?
Split them into categories like New Features, Balancing, Bug Fixes, and Events. This lets players quickly scan what matters to them — a PvPer goes straight to Balancing, a collector goes to Events — instead of reading one big block of text.
Is it worth versioning the changelog with numbers (v1.2.3)?
For servers with frequent, well-structured updates, yes, it helps communication with the community and makes it easier to reference a specific version in support. For servers with more sporadic updates, dates (dd/mm/yyyy) as an identifier tend to be more intuitive for the average player.
How do I integrate the changelog automatically with the server's Discord?
Set up a Discord webhook that fires automatically whenever a new entry is published in the changelog file, usually via a CI/CD action or a script that runs on site deploy, formatting the message with title, category, and a link to the full page.