Keyboard Interest Checker: GeekHack Forum to Discord Notifications
Go to WorkflowDescription
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
Use the web form to add new webhook URLs
Remove webhooks by deleting from the database:
DELETE FROM webhooks WHERE url = 'webhook_url_to_remove';
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.