Build a no-code forum sentiment pipeline with Apify + n8n + GPT
In one line: Point an Apify forum scraper at a board, run it on a schedule from n8n, let GPT tag each post positive / negative / neutral, and ping Slack when the mood turns — no code, no crawler maintenance. The example below monitors Taiwan’s PTT and Mobile01, but swap the actor and the same pipeline works for Reddit, LIHKG, HardwareZone, or any forum Apify covers.
Why build this instead of buying a listening tool
Enterprise social-listening suites are great if you have the budget and want a done-for-you dashboard. But if you just need to watch a few boards for how people feel about your product, a launch, or a competitor, you can assemble the same thing yourself in an afternoon — and you own the raw data.
The catch used to be the scraper: forums change their markup, add pagination and age gates, and break your crawler. Apify removes that half (the actor is maintained for you, you pay per item). n8n removes the other half (it glues scraping → GPT → alerts with drag-and-drop nodes). GPT does the part keyword rules can’t: it reads Chinese slang and sarcasm and still calls the sentiment right.
What you’ll build
Schedule Trigger ──▶ Apify: run ptt-scraper (+ mobile01-scraper), get items
(every 6h) │
▼
Dedupe vs already-seen ──▶ Sentiment (GPT): + / 0 / −
│
▼
Log to a sheet ──▶ If negative spike → Slack alert
Every box is a node you click together. Nothing here is code (there’s one optional Code node for dedupe, and a no-code alternative below it).
What you need
- An Apify account — free to start, pay-per-item after the free credits. This is the only sign-up the scraping depends on.
- n8n — self-host it for free (fair-code license), or use n8n Cloud (there’s a free trial). Either works; the Apify node runs on both.
- A way to run GPT — either your own OpenAI API key, or n8n Cloud’s built-in AI credits.
Step 1 — Schedule Trigger
Add a Schedule Trigger node and set it to run every few hours (say, every 6h). This is your “check the forums” heartbeat. During setup you can also trigger manually to test.
Step 2 — Pull posts with the Apify node
Install the official Apify node (@apify/n8n-nodes-apify, built by Apify and verified by n8n — it works on both n8n Cloud and self-hosted). Add your Apify API token as its credential (Apify Console → Settings → API & Integrations).
Add an Apify node, choose the “Run Actor and get dataset items” operation, and pick ptt-scraper. Give it an input like:
{
"mode": "board",
"boards": ["MobileComm"], // the PTT board(s) you care about
"keywords": ["your-brand"], // filter titles
"maxItems": 100
}
You get back clean JSON: title, author, push/boo counts, timestamp, URL. Add a second Apify node the same way for mobile01-scraper (mode: "forum") if you want Mobile01 in the same run, then a Merge node to combine both streams.
💡 Why Apify and not your own crawler? PTT’s over-18 gate, Mobile01’s pagination, and every future markup change are maintained on the actor side. You pay per item scraped (about $0.002 per listing), not per hour of debugging.
Step 3 — Skip posts you’ve already seen
On a schedule, you’ll re-fetch the same threads. Add a Code node (or, no-code: an n8n Remove Duplicates node keyed on the post URL) so GPT only scores new posts. This keeps your token bill down.
Step 4 — Let GPT score the sentiment
Add n8n’s built-in Sentiment Analysis node (part of its AI/LangChain node set) and connect an OpenAI Chat Model sub-node to it. It classifies each post into positive / neutral / negative — and because it’s an LLM, it handles Traditional Chinese, forum slang, and sarcasm that keyword lists miss. Want more than sentiment (urgency, topic, a one-line reason)? Use the AI Agent node with a structured-output prompt instead — that’s exactly what Apify’s own Reddit brand-monitoring tutorial does, and it maps 1:1 onto this pipeline.
Step 5 — Log it and alert on a turn
Send every scored post to a Google Sheet (your running sentiment log), then add an IF node: if the share of negative posts in this run crosses a threshold, fire a Slack message. Now you hear about a brewing PTT thread before it’s a headline — automatically, every 6 hours.
No dedicated node? Use the HTTP Request node
If you’d rather not install the community node, call Apify’s REST API from n8n’s generic HTTP Request node:
POST https://api.apify.com/v2/acts/claude_code_reviewer~ptt-scraper/run-sync-get-dataset-items
Authorization: Bearer <YOUR_APIFY_TOKEN>
Content-Type: application/json
{ "mode": "board", "boards": ["MobileComm"], "keywords": ["your-brand"], "maxItems": 100 }
This runs the actor and returns the dataset items in one call. One limit worth knowing: the run must finish within 300 seconds or the endpoint times out (HTTP 408) — so keep maxItems sensible per call, or use the async run + get-items pattern for big pulls.
What it actually costs
- Apify: pay-per-item. A light monitor (a few boards, ~100 new posts per run, a few runs a day) is single-digit dollars a month. Listings run about $0.002 each; only expand full threads/comments when you need deeper analysis.
- n8n: free if you self-host; n8n Cloud has a paid tier with a free trial (current pricing).
- GPT: you only score new posts (thanks to Step 3), so token cost stays small; a sentiment label per post is cheap on a mini model.
Add it up and a working pipeline is typically a few dollars a month — versus a five-figure annual contract for an enterprise suite, with the bonus that the raw JSON is yours to reuse anywhere.
Three ways to start
From least effort to most freedom
FAQ
Do I need to code? No. Every step is an n8n node. The only optional code is a one-line dedupe, and there’s a no-code node for that too.
Does this work for forums outside Taiwan? Yes — swap the Apify actor. The same Schedule → Apify → GPT → alert shape works for Reddit, LIHKG (Hong Kong), HardwareZone (Singapore), Bahamut (gaming), and more. Apify’s own stock-sentiment tutorial uses the same node for Twitter and Yahoo Finance.
Can GPT really read Chinese forum sentiment? Yes, and that’s the point — modern models handle Traditional Chinese slang and sarcasm far better than the keyword dictionaries most cheap tools rely on.
Cloud or self-hosted n8n? Either. The Apify node is verified for n8n Cloud and also runs on a self-hosted instance. Self-host is free; Cloud saves you the ops.
Is scraping this legal? We only scrape public content, never login-walled data. The legal line for scraping (especially recent Taiwan case law) has its own article — read that first.
Chad runs 40+ published Apify actors (including the ptt-scraper and mobile01-scraper used here). Every number above comes from pipelines that actually run; the n8n and Apify integration details link to their official docs.