mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
266 lines
9.8 KiB
Markdown
266 lines
9.8 KiB
Markdown
---
|
||
sidebar_position: 2
|
||
title: "Tutorial: Daily Briefing Bot"
|
||
description: "Build an automated daily briefing bot that researches topics, summarizes findings, and delivers them to Telegram or Discord every morning"
|
||
---
|
||
|
||
# Tutorial: Build a Daily Briefing Bot
|
||
|
||
In this tutorial, you'll build a personal briefing bot that wakes up every morning, researches topics you care about, summarizes the findings, and delivers a concise briefing straight to your Telegram or Discord.
|
||
|
||
By the end, you'll have a fully automated workflow combining **web search**, **cron scheduling**, **delegation**, and **messaging delivery** — no code required.
|
||
|
||
## What We're Building
|
||
|
||
Here's the flow:
|
||
|
||
1. **8:00 AM** — The cron scheduler triggers your job
|
||
2. **Hermes spins up** a fresh agent session with your prompt
|
||
3. **Web search** pulls the latest news on your topics
|
||
4. **Summarization** distills it into a clean briefing format
|
||
5. **Delivery** sends the briefing to your Telegram or Discord
|
||
|
||
The whole thing runs hands-free. You just read your briefing with your morning coffee.
|
||
|
||
## Prerequisites
|
||
|
||
Before starting, make sure you have:
|
||
|
||
- **Hermes Agent installed** — see the [Installation guide](/docs/getting-started/installation)
|
||
- **Gateway running** — the gateway daemon handles cron execution:
|
||
```bash
|
||
hermes gateway install # Install as a user service
|
||
sudo hermes gateway install --system # Linux servers: boot-time system service
|
||
# or
|
||
hermes gateway # Run in foreground
|
||
```
|
||
- **Firecrawl API key** — set `FIRECRAWL_API_KEY` in your environment for web search
|
||
- **Messaging configured** (optional but recommended) — [Telegram](/docs/user-guide/messaging/telegram) or Discord set up with a home channel
|
||
|
||
:::tip No messaging? No problem
|
||
You can still follow this tutorial using `deliver: "local"`. Briefings will be saved to `~/.hermes/cron/output/` and you can read them anytime.
|
||
:::
|
||
|
||
## Step 1: Test the Workflow Manually
|
||
|
||
Before automating anything, let's make sure the briefing works. Start a chat session:
|
||
|
||
```bash
|
||
hermes
|
||
```
|
||
|
||
Then enter this prompt:
|
||
|
||
```
|
||
Search for the latest news about AI agents and open source LLMs.
|
||
Summarize the top 3 stories in a concise briefing format with links.
|
||
```
|
||
|
||
Hermes will search the web, read through results, and produce something like:
|
||
|
||
```
|
||
☀️ Your AI Briefing — March 8, 2026
|
||
|
||
1. Qwen 3 Released with 235B Parameters
|
||
Alibaba's latest open-weight model matches GPT-4.5 on several
|
||
benchmarks while remaining fully open source.
|
||
→ https://qwenlm.github.io/blog/qwen3/
|
||
|
||
2. LangChain Launches Agent Protocol Standard
|
||
A new open standard for agent-to-agent communication gains
|
||
adoption from 15 major frameworks in its first week.
|
||
→ https://blog.langchain.dev/agent-protocol/
|
||
|
||
3. EU AI Act Enforcement Begins for General-Purpose Models
|
||
The first compliance deadlines hit, with open source models
|
||
receiving exemptions under the 10M parameter threshold.
|
||
→ https://artificialintelligenceact.eu/updates/
|
||
|
||
---
|
||
3 stories • Sources searched: 8 • Generated by Hermes Agent
|
||
```
|
||
|
||
If this works, you're ready to automate it.
|
||
|
||
:::tip Iterate on the format
|
||
Try different prompts until you get output you love. Add instructions like "use emoji headers" or "keep each summary under 2 sentences." Whatever you settle on goes into the cron job.
|
||
:::
|
||
|
||
## Step 2: Create the Cron Job
|
||
|
||
Now let's schedule this to run automatically every morning. You can do this in two ways.
|
||
|
||
### Option A: Natural Language (in chat)
|
||
|
||
Just tell Hermes what you want:
|
||
|
||
```
|
||
Every morning at 8am, search the web for the latest news about AI agents
|
||
and open source LLMs. Summarize the top 3 stories in a concise briefing
|
||
with links. Use a friendly, professional tone. Deliver to telegram.
|
||
```
|
||
|
||
Hermes will create the cron job for you using the unified `cronjob` tool.
|
||
|
||
### Option B: CLI Slash Command
|
||
|
||
Use the `/cron` command for more control:
|
||
|
||
```
|
||
/cron add "0 8 * * *" "Search the web for the latest news about AI agents and open source LLMs. Find at least 5 recent articles from the past 24 hours. Summarize the top 3 most important stories in a concise daily briefing format. For each story include: a clear headline, a 2-sentence summary, and the source URL. Use a friendly, professional tone. Format with emoji bullet points and end with a total story count."
|
||
```
|
||
|
||
### The Golden Rule: Self-Contained Prompts
|
||
|
||
:::warning Critical concept
|
||
Cron jobs run in a **completely fresh session** — no memory of your previous conversations, no context about what you "set up earlier." Your prompt must contain **everything** the agent needs to do the job.
|
||
:::
|
||
|
||
**Bad prompt:**
|
||
```
|
||
Do my usual morning briefing.
|
||
```
|
||
|
||
**Good prompt:**
|
||
```
|
||
Search the web for the latest news about AI agents and open source LLMs.
|
||
Find at least 5 recent articles from the past 24 hours. Summarize the
|
||
top 3 most important stories in a concise daily briefing format. For each
|
||
story include: a clear headline, a 2-sentence summary, and the source URL.
|
||
Use a friendly, professional tone. Format with emoji bullet points.
|
||
```
|
||
|
||
The good prompt is specific about **what to search**, **how many articles**, **what format**, and **what tone**. It's everything the agent needs in one shot.
|
||
|
||
## Step 3: Customize the Briefing
|
||
|
||
Once the basic briefing works, you can get creative.
|
||
|
||
### Multi-Topic Briefings
|
||
|
||
Cover several areas in one briefing:
|
||
|
||
```
|
||
/cron add "0 8 * * *" "Create a morning briefing covering three topics. For each topic, search the web for recent news from the past 24 hours and summarize the top 2 stories with links.
|
||
|
||
Topics:
|
||
1. AI and machine learning — focus on open source models and agent frameworks
|
||
2. Cryptocurrency — focus on Bitcoin, Ethereum, and regulatory news
|
||
3. Space exploration — focus on SpaceX, NASA, and commercial space
|
||
|
||
Format as a clean briefing with section headers and emoji. End with today's date and a motivational quote."
|
||
```
|
||
|
||
### Using Delegation for Parallel Research
|
||
|
||
For faster briefings, tell Hermes to delegate each topic to a sub-agent:
|
||
|
||
```
|
||
/cron add "0 8 * * *" "Create a morning briefing by delegating research to sub-agents. Delegate three parallel tasks:
|
||
|
||
1. Delegate: Search for the top 2 AI/ML news stories from the past 24 hours with links
|
||
2. Delegate: Search for the top 2 cryptocurrency news stories from the past 24 hours with links
|
||
3. Delegate: Search for the top 2 space exploration news stories from the past 24 hours with links
|
||
|
||
Collect all results and combine them into a single clean briefing with section headers, emoji formatting, and source links. Add today's date as a header."
|
||
```
|
||
|
||
Each sub-agent searches independently and in parallel, then the main agent combines everything into one polished briefing. See the [Delegation docs](/docs/user-guide/features/delegation) for more on how this works.
|
||
|
||
### Weekday-Only Schedule
|
||
|
||
Don't need briefings on weekends? Use a cron expression that targets Monday–Friday:
|
||
|
||
```
|
||
/cron add "0 8 * * 1-5" "Search for the latest AI and tech news..."
|
||
```
|
||
|
||
### Twice-Daily Briefings
|
||
|
||
Get a morning overview and an evening recap:
|
||
|
||
```
|
||
/cron add "0 8 * * *" "Morning briefing: search for AI news from the past 12 hours..."
|
||
/cron add "0 18 * * *" "Evening recap: search for AI news from the past 12 hours..."
|
||
```
|
||
|
||
### Adding Personal Context with Memory
|
||
|
||
If you have [memory](/docs/user-guide/features/memory) enabled, you can store preferences that persist across sessions. But remember — cron jobs run in fresh sessions without conversational memory. To add personal context, bake it directly into the prompt:
|
||
|
||
```
|
||
/cron add "0 8 * * *" "You are creating a briefing for a senior ML engineer who cares about: PyTorch ecosystem, transformer architectures, open-weight models, and AI regulation in the EU. Skip stories about product launches or funding rounds unless they involve open source.
|
||
|
||
Search for the latest news on these topics. Summarize the top 3 stories with links. Be concise and technical — this reader doesn't need basic explanations."
|
||
```
|
||
|
||
:::tip Tailor the persona
|
||
Including details about who the briefing is *for* dramatically improves relevance. Tell the agent your role, interests, and what to skip.
|
||
:::
|
||
|
||
## Step 4: Manage Your Jobs
|
||
|
||
### List All Scheduled Jobs
|
||
|
||
In chat:
|
||
```
|
||
/cron list
|
||
```
|
||
|
||
Or from the terminal:
|
||
```bash
|
||
hermes cron list
|
||
```
|
||
|
||
You'll see output like:
|
||
|
||
```
|
||
ID | Name | Schedule | Next Run | Deliver
|
||
------------|-------------------|-------------|--------------------|--------
|
||
a1b2c3d4 | Morning Briefing | 0 8 * * * | 2026-03-09 08:00 | telegram
|
||
e5f6g7h8 | Evening Recap | 0 18 * * * | 2026-03-08 18:00 | telegram
|
||
```
|
||
|
||
### Remove a Job
|
||
|
||
In chat:
|
||
```
|
||
/cron remove a1b2c3d4
|
||
```
|
||
|
||
Or ask conversationally:
|
||
```
|
||
Remove my morning briefing cron job.
|
||
```
|
||
|
||
Hermes will use `cronjob(action="list")` to find it and `cronjob(action="remove")` to delete it.
|
||
|
||
### Check Gateway Status
|
||
|
||
Make sure the scheduler is actually running:
|
||
|
||
```bash
|
||
hermes cron status
|
||
```
|
||
|
||
If the gateway isn't running, your jobs won't execute. Install it as a background service for reliability:
|
||
|
||
```bash
|
||
hermes gateway install
|
||
# or on Linux servers
|
||
sudo hermes gateway install --system
|
||
```
|
||
|
||
## Going Further
|
||
|
||
You've built a working daily briefing bot. Here are some directions to explore next:
|
||
|
||
- **[Scheduled Tasks (Cron)](/docs/user-guide/features/cron)** — Full reference for schedule formats, repeat limits, and delivery options
|
||
- **[Delegation](/docs/user-guide/features/delegation)** — Deep dive into parallel sub-agent workflows
|
||
- **[Messaging Platforms](/docs/user-guide/messaging)** — Set up Telegram, Discord, or other delivery targets
|
||
- **[Memory](/docs/user-guide/features/memory)** — Persistent context across sessions
|
||
- **[Tips & Best Practices](/docs/guides/tips)** — More prompt engineering advice
|
||
|
||
:::tip What else can you schedule?
|
||
The briefing bot pattern works for anything: competitor monitoring, GitHub repo summaries, weather forecasts, portfolio tracking, server health checks, or even a daily joke. If you can describe it in a prompt, you can schedule it.
|
||
:::
|