Discord announcement publishing desk with live preview

By General Input

Write, preview and publish community announcements across your Discord servers from one place, then see which ones actually landed.

Integrations

  • Discord
  • Notion

Type

App

Categories

  • Marketing
  • Operations

Build me an internal publishing desk for the Discord announcements my community team sends every week, so we stop pasting raw text into the app and hoping it looks right. It has two pages, a Composer and an Archive, plus a background agent that drafts announcements from our Notion notes. Nothing ever sends on a schedule or in the background: every post is a deliberate click by a person looking at a preview.

On the Composer page I first pick where the announcement goes. Use Discord Get Current User Guilds to list the servers I have access to and Get Guild Channels for each one to populate a channel picker, so I can select several target channels across different servers for a single announcement. Get Guild Channels returns each channel's type, so mark announcement channels in the picker (that is what makes crossposting available later) and only offer channels I can actually post in. Use Get Guild Roles for the relevant server to populate a role mention picker, and insert the chosen roles as real mentions in the message content rather than as plain text.

The composer itself has fields for the accent colour, title, body, image URL and footer text, and beside them a live preview that renders the Discord embed as it will actually appear: the coloured bar down the left edge, the title, the body with markdown applied, the image, and the small footer line underneath. The preview updates as I type. For the accent colour offer the Discord brand palette as swatches, Blurple 0x5865F2, Green 0x57F287, Yellow 0xFEE75C and Red 0xED4245, plus a custom hex input.

Show the character budget against Discord's real limits so nothing is silently truncated: title max 256 characters, description max 4096, a maximum of 25 fields, and 6000 characters total across the whole embed counting title, description, fields, footer and author. Display a per-field counter plus a running total for the embed, move the counter into a warning state as it approaches a cap, and disable the publish button with a clear explanation when any limit is exceeded, rather than letting Discord reject or truncate the post.

Publishing is one deliberate click with a confirmation step that lists exactly which channels are about to receive the post. Send the embed with Send a Message once per selected channel, and record the resulting message IDs together as a single publish batch. After sending, offer two optional follow-ups per channel: Crosspost a Message, shown only for announcement channels since crossposting does not apply anywhere else, and Pin a Message. Before pinning, check the channel with Get Pinned Messages, because a channel caps at 50 pins and the pin fails once it is full, so warn me and let me unpin something instead of failing silently. Optionally let me seed a couple of reaction options on the new post with Add Reaction so the community has something to vote with.

The second page is an Archive of everything we have posted. Pull the history back with Get Channel Messages across the channels the desk tracks, filtered to messages this desk sent, use Get Pinned Messages to show which announcements are currently pinned, and Get a Message to refresh a single announcement on demand. Show each announcement as a card with its embed preview, when it went out, which channels it reached, and whether it was crossposted or pinned.

Show reaction counts beside each announcement so we can see which framing actually landed. The message payload from Get Channel Messages already carries a reactions array with each emoji and its count, so read the totals from there rather than paginating through users, and use Get Reactions when I open an announcement and want to see exactly who reacted with a given emoji. Let me sort the archive by reactions so the winners are obvious.

Because one announcement often goes to several channels, group the archive by publish batch: one row per announcement with a per-channel breakdown underneath, so it is obvious that the same post went to five places and we do not double-count reach. Show total reactions across the batch alongside the per-channel numbers. Any archived announcement can be reused as a template through a duplicate into composer action that loads its colour, title, body, image and footer back into the Composer as a fresh draft.

Add a background agent called Draft this from our notes that I kick off from the Composer with a button. I give it a Notion page to work from: let me find the page with Notion Search by Title from inside the app, then the agent reads it with Retrieve Page as Markdown and turns release notes or a rough internal doc into a community-ready embed draft, written for community members rather than for the team, within the character limits above, with a suggested accent colour and footer. Its output lands as a draft in the Composer, marked as agent-drafted, for me to edit before anything is sent. The agent never publishes.

After a post goes out, offer an optional file to Notion action that records it with Notion Create a Page under a parent page I choose, capturing the announcement title, the body, the channels it went to, the send time and links to the messages, so we keep a record outside Discord.

Persist drafts, saved templates, the list of tracked channels, the publish batches that tie one announcement to its many messages, and the chosen Notion parent page. Drafts are per-user so two people on the community team do not overwrite each other, while templates, tracked channels and the archive are shared across the team. The people using this are community managers rather than engineers, so keep the composer plain and the preview honest.

Related prompts

Explore more prompts
Screen chartered vessels for AIS gaps and sanctions red flagsCompare candidate store locations with drive time trade areasBrowse every competitor ad and build a Notion swipe fileAudience persona studio for brand and product marketersArtwork desk for the Notion posts still missing an imageShare of voice dashboard for your brand and competitorsInfluencer campaign roster board with AI creator briefsSmart home entity health cockpit for Home AssistantOpen model approval desk for your production AI stackBid board that watches every procurement portal for you