Built With
- Vercel Functions for cron processes & event subscriptions via webhooks
 - Vercel Cron Jobs for triggering cron processes.
 - Hacker News API for pulling data
 - Slack API for sending and unfurling messages
 - Upstash for key-value storage (Redis).
 
How It Works
- Set up a Vercel cron job that pings our 
/api/cronendpoint once every 60 seconds. - Get the last checked HN post ID (
lastCheckedId) and the list ofkeywordsto check against from Upstash. - Get the 
latestPostIdusing HN API'smaxitemendpoint. Then, perform checks against each post betweenlastCheckedIdandlatestPostIdto see if they contain any of the delineatedkeywords. - For each positive post, send its link to Slack using the 
chat.postMessagemethod. - Listen to the 
link_sharedevent at our/api/eventendpoint. Once an event occurs, send a POST request to Slack to unfurl the link using the chat.unfurl method. 
One-Click Install
Here's a 60s video that walks you through the installation process, step-by-step.
You can click the button below to install the bot directly into your desired Slack workspace:
Once it's installed, create a channel to receive notifications in and start configuring the bot with the /configure command.
Deploy Your Own
You can also deploy your own version of this bot using Vercel and Upstash. Note that while this is in early-access, some of these processes might change.
Prefer a video tutorial instead? Watch this video.
Step 1: Create Slack App + Secure Env Vars
- Navigate to api.slack.com/apps and click on "Create New App".
 - Select "From scratch" and input 
Hacker News Botas the name of your app. - Voilà! You've just created your Slack app. Here, you'll receive 3 values that will be used for your Vercel deployment in the next step:
- Client ID: This is your App's unique public-facing ID that will be the value for the 
NEXT_PUBLIC_SLACK_CLIENT_IDenv var. - Signing Secret: This is the signing secret used to validate that requests are genuinely coming from Slack. It will be the value for the 
SLACK_SIGNING_SECRETenv var. - Verification Token: This is the verification token used to validate that requests are genuinely coming from Slack. It will be the value for the 
SLACK_VERIFICATION_TOKENenv var. 
 - Client ID: This is your App's unique public-facing ID that will be the value for the 
 
Step 2: Create Upstash Account
Go to console.upstash.com and create an account. You'll need it for the next step.
Step 3: Deploy to Vercel
You can deploy your bot to Vercel with one-click:
Be sure to include all 5 of the env vars above in your deployment.
When the project finishes deploying, get your project's domain (e.g. https://slacker-eight.vercel.app/). You'll need it for the next step.
Step 4: Configuring Slack app
For your Slack app to be able to send/unfurl messages in your Slack workspace, we will need to configure a few things:
Step 4A: Configuring OAuth Scopes- 
From your Slack app home screen, select "OAuth & Permissions" from the sidebar (under "Features").
 - 
Scroll down to "Scopes", and add the following scopes under "Bot Token Scopes":
chat:writechat:write.publiclinks:readlinks:write
 
- Now, select "Event Subscriptions" from the sidebar (under "Features").
 - Toggle "Enable Events" to "ON".
 - For the "Request URL" field, input your Vercel project's domain and append 
/api/eventto it. The final URL should look something likehttps://slacker-eight.vercel.app/api/event. - Scroll down to "Subscribe to bot events". Add the 
link_sharedbot user event. - Do the same for `Subscribe to events on behalf of users".
 - Under "App unfurl domains", add 
news.ycombinator.com. - Click on "Save Changes".
 
Select "Slash Commands" from the sidebar (under "Features"). Create the following commmand with its respective Request URLs (based on your Vercel project's domain):
- Command: 
/configure - Request URL: 
https://[YOUR_VERCEL_PROJECT_DOMAIN]/api/cmd/configure - Short Description: Configure your HN Slack Bot
 
- Now, select "Interactivity & Shortcuts" from the sidebar (under "Features").
 - Toggle "Interactivity" to "ON".
 - For the "Request URL" field, input your Vercel project's domain and append 
/api/responseto it. The final URL should look something likehttps://slacker-eight.vercel.app/api/response. - Click on "Save Changes".
 
- Go to "Basic Information" (under "Settings").
 - Under "Install your app", click on "Install to Workspace".
 - You should receive a notification that your app has been installed in your Slack workspace.
 - Go back to "OAuth & Permissions". Copy the value of "Bot User OAuth Token".
 - Set it as the 
SLACK_OAUTH_TOKENenv var in your Vercel project. Here's a guide on how to do that. - Redeploy your Vercel project for the changes to take effect.
 - To verify that this worked, go to any channel on your Slack workspace and send a Hacker News link. The link should now unfurl and show a nice preview (like the one above).
 
Authors
This project was originally created by Steven Tey at Vercel, with contributions/feedback from:
- Guillermo Rauch (@rauchg) – Vercel
 - Justin Ridgewell (@jridgewell) – Vercel
 - Andrew Healey (@healeycodes) – Vercel
 - Drew Bredvick (@dbredvick) – Vercel
 - Lee Robinson (@leeerob) – Vercel
 - Andreas Thomas (@chronarkdotdev) – Upstash
 
License
The MIT License.

