Opdracht 02 β Telegram Inbox Bot¶
Doel¶
Bouw een n8n workflow die berichten, links en ideeΓ«n die je naar een Telegram bot stuurt automatisch toevoegt aan je Obsidian inbox (docs/inbox.md). Zo vervang je WhatsApp als dump-kanaal door iets dat wΓ©l aansluit op je second brain.
Als je deze opdracht afgerond hebt, heb je een frictionloze capture-workflow die direct in je vault belandt β zonder dat je een app hoeft te openen.
Context β je second brain structuur¶
Je vault gebruikt het PARA-systeem (zie [[PARA/00 - PARA Index]]):
| Map | Wat erin gaat |
|---|---|
docs/inbox.md |
Alles wat nog verwerkt moet worden β hier dump je naartoe |
docs/Home/PARA/Projects/ |
Actieve projecten met een eindpunt |
docs/Home/PARA/Areas/ |
Doorlopende verantwoordelijkheden |
docs/Home/PARA/Resources/ |
Referentiemateriaal per onderwerp |
docs/Home/PARA/Archive/ |
Afgerond of inactief |
De inbox is bewust de enige dump-plek. Wekelijks verwerk je de inbox naar de juiste PARA-map. Deze bot voedt de inbox β verwerken doe je zelf (of later automatisch met een AI-workflow).
Inbox formaat¶
Entries in de inbox volgen dit formaat:
Emoji-prefixen die al gebruikt worden:
- π‘ **Idee:** β losse ideeΓ«n
- π₯ **Video:** β YouTube/Instagram video's
- π **Reddit:** β Reddit links
- π οΈ **GitHub:** β GitHub repos
Wat je leert¶
- Telegram Trigger node gebruiken
- Tekst en URLs parsen in een Code node
- Obsidian MCP gebruiken vanuit n8n om notes te schrijven
- Datum/tijd formatting in n8n expressions
- Een webhook-loze, event-driven workflow bouwen
Architectuur¶
Telegram Bot (jij stuurt bericht)
β
n8n Telegram Trigger
β
Code node (bericht opmaken als inbox-entry)
β
Obsidian MCP node (append naar docs/inbox.md)
β
Telegram antwoord: "β
Toegevoegd aan inbox"
Stap 1 β Telegram Bot aanmaken¶
- Open Telegram en zoek @BotFather
- Stuur
/newboten volg de stappen - Geef de bot een naam, bijv.
Richard's Brainen username bijv.sqrd_brain_bot - Kopieer het API token dat je krijgt
- Stuur je bot een eerste bericht (dit is nodig om een chat ID te krijgen)
- Haal je chat ID op via:
https://api.telegram.org/bot<TOKEN>/getUpdates
Stap 2 β Telegram credential in n8n¶
- Ga naar
Settings β Credentials β New - Kies Telegram API
- Plak je bot token
- Sla op
Stap 3 β Telegram Trigger node¶
Maak een nieuwe workflow aan met een Telegram Trigger node.
- Credential: jouw bot
- Updates:
message
Leervraag: Wat is het verschil tussen een Telegram Trigger en een gewone Webhook node voor Telegram?
Stap 4 β Code node: inbox entry opmaken¶
Voeg een Code node toe na de Trigger.
Doel: de binnenkomende tekst omzetten naar een nette inbox-regel met datum Γ©n automatische prefix op basis van inhoud.
const message = $input.first().json.message;
const text = message.text || '';
const date = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
// Detecteer of het een URL is
const urlRegex = /https?:\/\/[^\s]+/g;
const urls = text.match(urlRegex) || [];
const cleanText = text.replace(urlRegex, '').trim();
// Detecteer type op basis van URL of tekst
function detectPrefix(url, text) {
if (!url) return 'π‘ **Idee:**';
if (url.includes('youtube.com') || url.includes('youtu.be') || url.includes('instagram.com/reel')) return 'π₯ **Video:**';
if (url.includes('reddit.com')) return 'π **Reddit:**';
if (url.includes('github.com')) return 'π οΈ **GitHub:**';
return ''; // gewone link, geen prefix
}
let entry;
const prefix = detectPrefix(urls[0], cleanText);
if (urls.length > 0 && cleanText === '') {
entry = `- ${date} β ${prefix ? prefix + ' ' : ''}${urls[0]}`;
} else if (urls.length > 0) {
entry = `- ${date} β [${cleanText}](${urls[0]})`;
} else {
entry = `- ${date} β π‘ **Idee:** ${text}`;
}
return [{ json: { entry, originalText: text } }];
Leervraag: Waarom gebruiken we .split('T')[0] om de datum te krijgen?
Stap 5 β Obsidian MCP node: toevoegen aan inbox¶
Voeg een n8n MCP Client node toe. Zie [[n8n MCP Homelab Setup]] voor de volledige MCP setup.
- Tool:
obsidian_update_note - Parameters:
targetType:filePathtargetIdentifier:docs/inbox.mdmodificationType:wholeFilewholeFileMode:appendcontent:\n{{ $json.entry }}
De entry wordt onder de bestaande ## π Te verwerken sectie geplakt (append voegt toe aan het einde van het bestand).
Leervraag: Waarom append en niet overwrite?
Stap 6 β Bevestiging terugsturen¶
Voeg een Telegram node toe na de MCP node.
- Operation:
Send Message - Chat ID:
{{ $('Telegram Trigger').item.json.message.chat.id }} - Text:
Stap 7 β Testen¶
- Stuur een losse link naar je bot β verschijnt als entry in inbox.md
- Stuur een YouTube link β krijgt automatisch
π₯ **Video:**prefix - Stuur een GitHub link β krijgt automatisch
π οΈ **GitHub:**prefix - Stuur alleen tekst β verschijnt als
π‘ **Idee:**entry - Open Obsidian β verifieer dat de entries correct zijn toegevoegd onder
## π Te verwerken
Uitbreidingen¶
- Commando's:
/idee,/video,/artikelals Telegram commando's β forceert een specifieke prefix - Instagram reels: Stuur een reel-link met een korte beschrijving β wordt direct naar [[PARA/Resources/Self-Growth & Parenting]] geschreven (overslaat inbox)
- Herinnering: Elke zondag om 10:00 een Telegram bericht als de inbox meer dan 5 entries heeft
- AI-categorisatie: Pipe de entry door Claude om automatisch de juiste PARA Resource map te detecteren en er direct naartoe te schrijven
Hints bij problemen¶
Telegram Trigger ontvangt niks: Zorg dat de workflow actief is (toggle aan) en dat je bot een bericht hebt gestuurd nΓ‘ activatie.
Chat ID klopt niet:
Haal het op via https://api.telegram.org/bot<TOKEN>/getUpdates na een bericht te hebben gestuurd.
Obsidian note wordt niet bijgewerkt:
Check of je MCP server draait en of het pad docs/inbox.md klopt (vault-relatief).
Entry staat op verkeerde plek in inbox:
append plakt altijd onderaan het bestand. Als je wil dat entries onder een specifieke sectie komen, is een meer geavanceerde aanpak nodig (Code node die de bestaande content leest, parseert en injecteert).
Referentie¶
- n8n Telegram Trigger docs
- n8n Telegram node docs
- BotFather
- [[inbox]] β de note waar alles naartoe gaat
- [[PARA/00 - PARA Index]] β je second brain structuur
- [[n8n MCP Homelab Setup]] β hoe de Obsidian MCP connectie werkt
- [[Opdracht 01 β Arr Stack Monitoring]] β vorige opdracht