What It Is
Three n8n workflows that run automatically and save me time. Each one handles a recurring task I'd otherwise be doing by hand, and runs on a schedule or trigger so I don't have to start it myself.
Discord Channel Summarizer. Every other day at 8am, scrapes the last 48 hours of messages from a Discord server I help run, generates a Slack summary of activity and discussion topics, and in parallel classifies whether anything looks like a moderator incident. If it does, I get an email so I can step in.
Meeting Researcher. Every weekday at 8am, pulls upcoming meetings from Google Calendar, looks up external attendees in Google Contacts, researches each one's recent activity and their company's recent news via web search, and posts a clean prep brief to Slack.
Gmail Labeler. Every 30 minutes, fetches new email and routes it to the right label. Substantive AI content (newsletters, research, articles) gets the AI label so I can sort and find it later. Order confirmations, shipping updates, and delivery notifications get the Amazon label and skip my inbox entirely.
Try them yourself
Download a workflow as JSON and import it into n8n via Import from File. You'll need to wire your own credentials (OpenAI, Slack, Gmail, Discord, Google Calendar, Tavily) and adjust schedules and target channels. The full system prompts, examples, and rules live inside the AI agent nodes.
What I Learned
- I still prefer deterministic graphs to agentic black boxes — I built the Meeting Researcher in Zapier Agent first. It was faster to set up, formatted Slack messages better by default, and had easier integrations. But the moment something failed I couldn't see why. n8n shows me every input, output, and tool call, and that visibility is worth the extra setup work, so I rebuilt it (and the others) in n8n.
- The first 80% is almost instant; the last 20% is where it actually becomes trustworthy — Once you know n8n's basics, wiring up a working version takes barely any time. Getting the output reliable enough to trust running unattended every day took dramatically longer, and that's where most of the actual learning happened.
- Operational fragility shows up after a workflow's been running unattended for a while — My Discord summaries silently stopped for a week after OpenAI deprecated the model the workflow was pinned to. n8n forces you to select a specific model version per node, with no "latest mini" alias, so a deprecation breaks the run with no warning. I now have a separate Error workflow that emails me the moment any execution fails.
- Good examples beat prompt wordsmithing — The Gmail Labeler kept tagging Calendar reminders and "don't forget tomorrow's livestream" marketing emails as substantive AI content. All caps CRITICAL rules helped a little, but going too hard on them made the model overcorrect and skip substantive newsletters. What worked best was a balanced set of positive and negative examples, plus paying attention to where in the prompt the rules sit.
- Context and tools move output quality more than model size does — One example: when the Meeting Researcher couldn't produce clean Slack mrkdwn, Claude Code dug through n8n's docs and community comments and surfaced the fix (split the single AI agent into a Researcher node and a separate Formatter node). Context7 MCP has added so much value by letting Claude Code retrieve current docs on its own instead of me feeding everything by hand.
- Don't overbuild now, because models are racing past your workarounds — I spent hours hand-tuning these workflows. Today's frontier models could probably draft 95% of the JSON in one shot, and next year's model will require even fewer rules and negative examples to behave the way I want. The investment was worth it for the learning, and the automations have been saving me real time for months. But I've learned to build flexibly so I can remove scaffolding once future models outgrow it.
How It Works
- Discord Summarizer runs every other day at 8am (originally on a 48-hour rolling trigger, but timezone math made the windows inconsistent, so I switched to a fixed weekday schedule). It pulls 48 hours of messages with wait nodes between Discord API calls to stay under rate limits, then forks into two parallel tracks: one always sends a Slack summary, the other runs a separate AI classifier and only sends an email if it flags a moderator incident.
- Meeting Researcher runs one AI agent for research (with Google Calendar, Google Contacts, Tavily web search, and a Think tool) and a second AI agent purely for Slack mrkdwn formatting. Both use the light model. The small model couldn't reliably do both jobs in a single agent, so splitting them into two specialized nodes was what fixed the formatting.
- Gmail Labeler runs every 30 minutes against new mail. The light model classifies content using positive and negative examples and routes via a switch node: AI-related substance to the AI label (stays in the inbox so I can find it later), Amazon transactional email to the Amazon label (skips the inbox), and everything else (marketing, calendar pings, creator promos) gets ignored.
- A separate Error workflow emails me on any failed execution, built after my Discord summaries silently broke for a week and I noticed by accident
- Model choice was driven by cost-per-task fit: light models for anything that runs constantly (Gmail Labeler, formatting), base models for content generation (Discord summary, Meeting Researcher), a reasoning model used during design rather than runtime
Built With
n8n (cloud-hosted) for the workflow graphs, scheduling, and execution traces. OpenAI's GPT-5.x family in light, base, and reasoning variants for the AI nodes, swapped over time as new versions ship. Tavily for web search inside the Meeting Researcher. Native integrations for Google Calendar, Google Contacts, Gmail, Slack, and Discord handle inputs and outputs. Claude and ChatGPT both helped draft and troubleshoot the workflow JSON and the AI agent system prompts. ChatGPT Images 2.0 generated hero image.