{"id":41235897,"url":"https://github.com/inkeep/vercel-ai-sdk-slackbot","last_synced_at":"2026-01-23T01:03:27.765Z","repository":{"id":287498086,"uuid":"962729657","full_name":"inkeep/vercel-ai-sdk-slackbot","owner":"inkeep","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-07T18:06:36.000Z","size":23,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-03T08:28:12.109Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inkeep.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-08T15:30:41.000Z","updated_at":"2025-04-15T13:39:36.000Z","dependencies_parsed_at":"2025-04-12T04:59:04.354Z","dependency_job_id":null,"html_url":"https://github.com/inkeep/vercel-ai-sdk-slackbot","commit_stats":null,"previous_names":["inkeep/vercel-ai-sdk-slackbot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/inkeep/vercel-ai-sdk-slackbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inkeep%2Fvercel-ai-sdk-slackbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inkeep%2Fvercel-ai-sdk-slackbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inkeep%2Fvercel-ai-sdk-slackbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inkeep%2Fvercel-ai-sdk-slackbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inkeep","download_url":"https://codeload.github.com/inkeep/vercel-ai-sdk-slackbot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inkeep%2Fvercel-ai-sdk-slackbot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28676488,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T01:00:35.747Z","status":"ssl_error","status_checked_at":"2026-01-23T01:00:19.529Z","response_time":144,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-23T01:03:27.025Z","updated_at":"2026-01-23T01:03:27.752Z","avatar_url":"https://github.com/inkeep.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AI SDK Slackbot\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fnicoalbanese%2Fai-sdk-slackbot\u0026env=SLACK_BOT_TOKEN,SLACK_SIGNING_SECRET,OPENAI_API_KEY,EXA_API_KEY\u0026envDescription=API%20keys%20needed%20for%20application\u0026envLink=https%3A%2F%2Fgithub.com%2Fnicoalbanese%2Fai-sdk-slackbot%3Ftab%3Dreadme-ov-file%234-set-environment-variables\u0026project-name=ai-sdk-slackbot)\n\nAn AI-powered chatbot for Slack powered by the [AI SDK by Vercel](https://sdk.vercel.ai/docs).\n\n## Features\n\n- Integrates with [Slack's API](https://api.slack.com) for easy Slack communication\n- Use any LLM with the AI SDK ([easily switch between providers](https://sdk.vercel.ai/providers/ai-sdk-providers))\n- Works both with app mentions and as an assistant in direct messages\n- Maintains conversation context within both threads and direct messages\n- Built-in tools for enhanced capabilities:\n  - Real-time weather lookup\n  - Web search (powered by [Exa](https://exa.ai))\n- Easily extensible architecture to add custom tools (e.g., knowledge search)\n\n## Prerequisites\n\n- [Node.js](https://nodejs.org/) 18+ installed\n- Slack workspace with admin privileges\n- [OpenAI API key](https://platform.openai.com/api-keys)\n- [Exa API key](https://exa.ai) (for web search functionality)\n- A server or hosting platform (e.g., [Vercel](https://vercel.com)) to deploy the bot\n\n## Setup\n\n### 1. Install Dependencies\n\n```bash\nnpm install\n# or\npnpm install\n```\n\n### 2. Create a Slack App\n\n1. Go to [https://api.slack.com/apps](https://api.slack.com/apps) and click \"Create New App\"\n2. Choose \"From scratch\" and give your app a name\n3. Select your workspace\n\n### 3. Configure Slack App Settings\n\n#### Basic Information\n\n- Under \"App Credentials\", note down your \"Signing Secret\"\n\n#### OAuth \u0026 Permissions\n\n- Add the following [Bot Token Scopes](https://api.slack.com/scopes):\n\n  - `app_mentions:read`\n  - `assistant:write`\n  - `chat:write`\n  - `im:history`\n  - `im:read`\n  - `im:write`\n\n- Install the app to your workspace and note down the \"Bot User OAuth Token\"\n\n### 4. Set Environment Variables\n\nCreate a `.env` file in the root of your project with the following:\n\n```\n# Slack Credentials\nSLACK_BOT_TOKEN=xoxb-your-bot-token\nSLACK_SIGNING_SECRET=your-signing-secret\n\n# OpenAI Credentials\nOPENAI_API_KEY=your-openai-api-key\n\n# Exa API Key (for web search functionality)\nEXA_API_KEY=your-exa-api-key\n```\n\nReplace the placeholder values with your actual tokens.\n\n### 5. Deploy your app\n\n- If building locally, follow steps in the Local Development section to tunnel your local environment and then copy the tunnel URL.\n- If deploying to Vercel, follow the instructions in the Production Deployment section and copy your deployment URL.\n\n### 6. Update your Slack App configuration:\n\nGo to your [Slack App settings](https://api.slack.com/apps)\n\n- Select your app\n- Go to \"Event Subscriptions\"\n- Enable Events\n- Set the Request URL to either your local URL or your deployment URL: (e.g. `https://your-app.vercel.app/api/events`)\n- Save Changes\n- Under \"Subscribe to bot events\", add:\n  - `app_mention`\n  - `assistant_thread_started`\n  - `message:im`\n\n\u003e Remember to include `/api/events` in the Request URL.\n\n## Local Development\n\nUse the [Vercel CLI](https://vercel.com/docs/cli) and [untun](https://github.com/unjs/untun) to test out this project locally:\n\n```sh\npnpm i -g vercel\npnpm vercel dev --listen 3000 --yes\n```\n\n```sh\nnpx untun@latest tunnel http://localhost:3000\n```\n\nMake sure to modify the [subscription URL](./README.md/#enable-slack-events) to the `untun` URL.\n\n\u003e Note: you may encounter issues locally with `waitUntil`. This is being investigated.\n\n## Production Deployment\n\n### Deploying to Vercel\n\n1. Push your code to a GitHub repository\n\n2. Deploy to [Vercel](https://vercel.com):\n\n   - Go to vercel.com\n   - Create New Project\n   - Import your GitHub repository\n\n3. Add your environment variables in the Vercel project settings:\n\n   - `SLACK_BOT_TOKEN`\n   - `SLACK_SIGNING_SECRET`\n   - `OPENAI_API_KEY`\n   - `EXA_API_KEY`\n\n4. After deployment, Vercel will provide you with a production URL\n\n5. Update your Slack App configuration:\n   - Go to your [Slack App settings](https://api.slack.com/apps)\n   - Select your app\n   - Go to \"Event Subscriptions\"\n   - Enable Events\n   - Set the Request URL to: `https://your-app.vercel.app/api/events`\n   - Save Changes\n   - Under \"Subscribe to bot events\", add:\n     - `app_mention`\n     - `assistant_thread_started`\n     - `message:im`\n\n## Usage\n\nThe bot will respond to:\n\n1. Direct messages - Send a DM to your bot\n2. Mentions - Mention your bot in a channel using `@YourBotName`\n\nThe bot maintains context within both threads and direct messages, so it can follow along with the conversation.\n\n### Available Tools\n\n1. **Weather Tool**: The bot can fetch real-time weather information for any location.\n\n   - Example: \"What's the weather like in London right now?\"\n\n2. **Web Search**: The bot can search the web for up-to-date information using [Exa](https://exa.ai).\n   - Example: \"Search for the latest news about AI technology\"\n   - You can also specify a domain: \"Search for the latest sports news on bbc.com\"\n\n### Extending with New Tools\n\nThe chatbot is built with an extensible architecture using the [AI SDK's tool system](https://sdk.vercel.ai/docs/ai-sdk-core/tools-and-tool-calling). You can easily add new tools such as:\n\n- Knowledge base search\n- Database queries\n- Custom API integrations\n- Company documentation search\n\nTo add a new tool, extend the tools object in the `lib/ai.ts` file following the existing pattern.\n\nYou can also disable any of the existing tools by removing the tool in the `lib/ai.ts` file.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finkeep%2Fvercel-ai-sdk-slackbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finkeep%2Fvercel-ai-sdk-slackbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finkeep%2Fvercel-ai-sdk-slackbot/lists"}