Geekhack Discord Updater
How It Works
This n8n workflow automatically monitors GeekHack forum RSS feeds every hour for new keyboard posts in Interest Checks and Group Buys sections. When it finds a new thread (not replies), it:
- Monitors RSS Feeds: Checks two GeekHack RSS feeds for new posts (50 items each)
- Filters New Threads: Removes reply posts by checking for "Re:" prefix in titles
- Prevents Duplicates: Queries PostgreSQL database to skip already-processed threads
- Scrapes Content: Fetches the full thread page and extracts the original post
- Extracts Images: Uses regex to find all images in the post content
- Creates Discord Embed: Formats the post data into a rich Discord embed with up to 4 images
- Sends to Multiple Webhooks: Retrieves all webhook URLs from database and sends to each one
- Logs Processing: Records the thread as processed to prevent duplicates
The workflow includes a webhook management system with a web form to add/remove Discord webhooks dynamically, allowing you to send notifications to multiple Discord servers or channels.
Steps to Set Up
Prerequisites
- n8n instance running
- PostgreSQL database
- Discord webhook URL(s)
1. Database Setup
Create PostgreSQL tables:
Processed threads table:
CREATE TABLE processed_threads (
topic_id VARCHAR PRIMARY KEY,
title TEXT,
processed_at TIMESTAMP DEFAULT NOW()
);
Webhooks table:
CREATE TABLE webhooks (
id SERIAL PRIMARY KEY,
url TEXT NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
2. n8n Configuration
Import Workflow
- Copy the workflow JSON
- Go to n8n → Workflows → Import from JSON
- Paste the JSON and import
Configure Credentials
- PostgreSQL: Create new PostgreSQL credential with your database connection details
- All PostgreSQL nodes should use the same credential
3. Node Configuration
Schedule Trigger
- Already configured for 1-hour intervals
- Modify if different timing needed
PostgreSQL Nodes
- Ensure all PostgreSQL nodes use your PostgreSQL credential:
- "Check if Processed"
- "Update entry"
- "Insert rows in a table"
- "Select rows from a table"
- Database schema should be "public"
- Table names: "processed_threads" and "webhooks"
RSS Feed Limits
- Both RSS feeds are set to limit=50 items
- Adjust if you need more/fewer items per check
4. Webhook Management
Adding Webhooks via Web Form
- The workflow creates a form trigger for adding webhooks
- Access the form URL from the "On form submission" node
- Submit Discord webhook URLs through the form
- Webhooks are automatically stored in the database
Manual Webhook Addition
Alternatively, insert webhooks directly into the database:
INSERT INTO webhooks (url) VALUES ('https://discord.com/api/webhooks/YOUR_WEBHOOK_URL');
5. Testing
Test the Main Workflow
- Ensure you have at least one webhook in the database
- Activate the workflow
- Use "Execute Workflow" to test manually
- Check Discord channels for test messages
Test Webhook Form
- Get the form URL from "On form submission" node
- Submit a test webhook URL
- Verify it appears in the webhooks table
6. Monitoring
- Check execution history for errors
- Monitor both database tables for entries
- Verify all registered webhooks receive notifications
- Adjust schedule timing if needed
7. Managing Webhooks
The workflow will now automatically post new GeekHack threads to all registered Discord webhooks every hour, with the ability to dynamically manage webhook destinations through the web form interface.