slack-link-surfer

Easily scrape links from a Slack channel

Usage no npm install needed!

<script type="module">
  import slackLinkSurfer from 'https://cdn.skypack.dev/slack-link-surfer';
</script>

README

Slack Link Surfer🏄🏾‍

code style: prettier Build Status semantic-release Conventional Commits

Easily scrape links from a Slack channel

Great for sending out newsletters, generating "You may have missed.." posts, and much more!

Overview

A minimal-dependency, promise-based library. This application makes use of Slack's conversation.history API to provide single channel link-scraping.

Additionally, there are a few configurable options that aim to give greater flexibility into how far you'd like to search for your messages.

Installation

If using npm

$ npm install slack-link-surfer

Alternately if using yarn

$ yarn add slack-link-surfer

Usage

import fetchSlackLinks from "slack-link-surfer";

const myConfig = {
  token: mySlackUserToken,
  channel: aSlackChannel,
  week: true
  // or day:true or custom: ${seconds}
};

fetchSlackLinks(myConfig).then(links => {
  //do stuff with the goods!
});
//If using with NodeJS/commonJS:
const fetchSlackLinks = require("slack-link-surfer").default;

Configuration Options

Config Key Default Value Required
token "" YES
channel "" YES
day false NO*
week false NO*
custom false NO*
exclude [String] NO

Note that one timeframe must be present

{token, channel, week:true}

excluded strings are based on the service_name key returned from the API

Obtaining A Token and Channel ID

Note that Slack has many different types of tokens. A user token is needed for this application. A user token is essentially a placeholder for an actual user. This means any channels one can normally access in the app, a user token can be used to do the same.

Simply head HERE and in the Legacy Token Generator section, create a new user token (it should start with xoxp).

Obtaining the channel you'd wish to scrape is even easier. Simply visit your channel in a browser, and the URL will contain the channel ID.

Limitations

Because this application looks for .attachments within a message object--which is where Slack puts the links, links that don't unfurl (expand) aren't currently displayed. In most cases, this in a non issue, however something to be mindful of.

This application only support single-link messages. This means if a user posts a slack message with several links, only the first link will be captured.