Output Blocks

Output blocks for delivering processed intelligence to RSS, JSON, Slack, Discord, and Telegram

Output Blocks#

Output blocks determine where your processed intelligence is delivered. HubFeed supports passive endpoints (RSS, JSON) and active delivery to chat platforms (Slack, Discord, Telegram).

RSS Output#

Generates a custom RSS feed from your processed data.

Configuration#

FieldRequiredDescription
Feed NameYesTitle for the generated feed
Feed DescriptionYesDescription of the feed content
Max ItemsNoMaximum items in the feed (default: 100)
PublicNoWhether the feed is publicly accessible
Execution IntervalNoHow often the workflow executes (minutes)

Usage#

Once configured, your RSS output is accessible at:

https://hubfeed.io/feeds/{workflow_id}/rss

Subscribe to this feed in any RSS reader to receive updates.

JSON Output#

Exports data in JSON format for programmatic access.

Configuration#

FieldRequiredDescription
Feed NameYesTitle for the generated feed
Feed DescriptionYesDescription of the feed content
Max ItemsNoMaximum items in the feed (default: 100)

API Access#

Access your JSON output via the API:

bash
curl -H "Authorization: Bearer {token}" \
  https://hubfeed.io/api/v1/workflows/{id}/output

Note: JSON output requires API authentication.


Slack Output#

Delivers intelligence directly to a Slack channel as rich Block Kit messages.

How It Works#

HubFeed posts to your Slack channel via an Incoming Webhook. In Digest mode, all items are batched into a single rich message with titles, links, source attribution, and optional thumbnails. In Individual mode, each item is posted as its own message.

Configuration#

FieldRequiredDescription
Feed NameYesName shown in the message header
Feed DescriptionYesPurpose of this feed
Webhook URLYesSlack Incoming Webhook URL
Delivery ModeNoDigest (default) or Individual
Include EnrichmentsNoShow enrichment data in messages
Max ItemsNoMaximum items per delivery (default: 100)
Execution IntervalNoHow often the workflow executes (minutes)

Setting Up the Slack Webhook#

Follow these steps to create an Incoming Webhook for your Slack workspace:

1. Create a Slack App

  • Go to api.slack.com/apps and click Create New App.
  • Choose From scratch.
  • Give your app a name (e.g. "HubFeed") and select the workspace you want to post to.
  • Click Create App.

2. Enable Incoming Webhooks

  • On the app settings page, click Incoming Webhooks in the left sidebar (under "Features").
  • Toggle Activate Incoming Webhooks to On.

3. Create a Webhook for Your Channel

  • Scroll down and click Add New Webhook to Workspace.
  • Select the channel where you want HubFeed to post (e.g. #threat-intel).
  • Click Allow.

4. Copy the Webhook URL

  • You'll see a new Webhook URL that looks like:
    https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
  • Copy this URL and paste it into the Webhook URL field in HubFeed.

Tip: You can create multiple webhooks for different channels within the same Slack app. Each HubFeed output block can target a different channel.

Example Output#

A digest message in Slack will look like:

[Header] My OSINT Feed — 3 new items ──────────────────────────── Threat Actor Targets Financial Sector Brief summary of the article content... RSS — @researcher — Mar 26, 14:30 ──────────────────────────── New Malware Variant Discovered Another article summary here... TELEGRAM — Mar 26, 13:15 ────────────────────────────

Discord Output#

Delivers intelligence to a Discord channel as rich embed messages with color-coded source types.

How It Works#

HubFeed posts to your Discord channel via a Channel Webhook. In Digest mode, items are sent as a batch of embeds (up to 10 per message). In Individual mode, each item gets its own embed. Embeds are color-coded by source type (orange for RSS, blue for Telegram, etc.).

Configuration#

FieldRequiredDescription
Feed NameYesName shown in the digest header
Feed DescriptionYesPurpose of this feed
Webhook URLYesDiscord channel Webhook URL
Bot UsernameNoCustom display name for the bot
Bot Avatar URLNoCustom avatar image URL for the bot
Delivery ModeNoDigest (default) or Individual
Include EnrichmentsNoShow enrichment data as embed fields
Max ItemsNoMaximum items per delivery (default: 100)
Execution IntervalNoHow often the workflow executes (minutes)

Setting Up the Discord Webhook#

1. Open Channel Settings

  • In Discord, navigate to the channel where you want to receive messages (e.g. #threat-intel).
  • Click the gear icon (Edit Channel) next to the channel name.

2. Create a Webhook

  • Go to the Integrations tab.
  • Click Webhooks, then New Webhook.
  • Give it a name (e.g. "HubFeed") and optionally upload an avatar image.

3. Copy the Webhook URL

  • Click Copy Webhook URL. It will look like:
    https://discord.com/api/webhooks/1234567890/abcdefghijklmnop...
  • Paste this URL into the Webhook URL field in HubFeed.

Tip: You can override the webhook's display name and avatar on a per-block basis using the Bot Username and Bot Avatar URL fields. This lets you use one webhook but show different identities for different feeds.

Source Type Colors#

Embeds are automatically color-coded by source type:

SourceColor
RSSOrange
RedditOrange-Red
TelegramBlue
X / TwitterSky Blue
LinkedInDark Blue
OtherDiscord Blurple

Example Output#

A digest message in Discord will display as a series of embeds:

[Bot] HubFeed My OSINT Feed — 3 new items ┌──────────────────────────────┐ │ Threat Actor Targets Finance │ (orange sidebar = RSS) │ Brief summary of the... │ │ RSS — @researcher — Mar 26 │ └──────────────────────────────┘ ┌──────────────────────────────┐ │ New Malware Variant Found │ (blue sidebar = Telegram) │ Another summary here... │ │ TELEGRAM — Mar 26, 13:15 │ └──────────────────────────────┘

Telegram Bot Output#

Delivers intelligence to a Telegram group, channel, or private chat via the Bot API.

How It Works#

HubFeed sends messages through a Telegram Bot that you create and add to your target chat. In Digest mode, all items are formatted as a single HTML message. In Individual mode, each item is sent as a separate message. Messages are automatically split if they exceed Telegram's 4,096-character limit.

Configuration#

FieldRequiredDescription
Feed NameYesName shown in the digest header
Feed DescriptionYesPurpose of this feed
Bot TokenYesAPI token from @BotFather
Chat IDYesNumeric ID of the target chat
Delivery ModeNoDigest (default) or Individual
Disable Link PreviewNoDisable URL previews in messages
Include EnrichmentsNoShow enrichment data in messages
Max ItemsNoMaximum items per delivery (default: 100)
Execution IntervalNoHow often the workflow executes (minutes)

Step 1: Create a Telegram Bot#

  1. Open Telegram and search for @BotFather (the official bot for creating bots).
  2. Send the command /newbot.
  3. Choose a name for your bot (e.g. "HubFeed Alerts"). This is the display name.
  4. Choose a username for your bot (e.g. hubfeed_alerts_bot). Must end in bot.
  5. BotFather will reply with your API token:
    123456789:ABCdefGHIjklMNOpqrsTUVwxyz_1234567890
  6. Copy this token and paste it into the Bot Token field in HubFeed.

Warning: Keep your bot token secret. Anyone with the token can send messages as your bot. If compromised, use /revoke with @BotFather to generate a new one.

Step 2: Add the Bot to Your Chat#

Depending on where you want to receive messages:

For a Group:

  1. Open your Telegram group.
  2. Tap the group name at the top to open settings.
  3. Tap Add Members and search for your bot's username.
  4. Add the bot to the group. If the group has admin-only posting, you'll need to promote the bot to admin.

For a Channel:

  1. Open your Telegram channel.
  2. Go to channel settings > Administrators.
  3. Add your bot as an administrator (it needs the "Post Messages" permission).

For a Private Chat:

  1. Search for your bot's username in Telegram.
  2. Tap Start to begin a conversation with the bot.

Step 3: Find Your Chat ID#

The Chat ID is a numeric identifier that tells the bot where to send messages.

Method 1 — Using @userinfobot:

  • For groups: Add @userinfobot to your group. It will immediately reply with the chat ID (a negative number like -1001234567890). You can remove the bot after.
  • For channels: Forward any message from your channel to @userinfobot. It will reply with the channel's chat ID.
  • For private chats: Send any message to @userinfobot directly. It replies with your personal chat ID.

Method 2 — Using @RawDataBot:

  • Add @RawDataBot to your group or send it a message. It replies with detailed JSON that includes the chat.id field.

Copy the numeric ID (including the - sign for groups/channels) and paste it into the Chat ID field in HubFeed.

Example Output#

A digest message in Telegram will look like:

My OSINT Feed — 3 new items Threat Actor Targets Financial Sector Brief summary of the article content... RSS — @researcher — Mar 26, 14:30 New Malware Variant Discovered Another article summary here... TELEGRAM — Mar 26, 13:15 CVE-2026-1234 Exploited in the Wild Critical vulnerability details... RSS — Mar 26, 12:00

Titles are bold and linked to the original source when a URL is available.


Delivery Modes#

All chat output blocks (Slack, Discord, Telegram) support two delivery modes:

  • Digest (default, recommended): All items are combined into a single rich message. If the content exceeds the platform's size limit, HubFeed automatically splits it across multiple messages. Best for periodic workflows that produce batches of items.
  • Individual: Each item is sent as its own message. Best for real-time alerting on low-volume, high-priority feeds.

In Individual mode, HubFeed enforces a delay between each message to stay within the platform's rate limits:

PlatformDelay Between MessagesMessage Size Limit
Slack1 second50 blocks per message (~24 items)
Discord2 seconds10 embeds / 6,000 characters per message
Telegram3 seconds4,096 characters per message

Tip: For Individual mode, keep Max Items conservative (20-50) to avoid long delivery times. For example, 50 items on Telegram would take ~2.5 minutes to deliver.


Multiple Outputs#

You can send processed data to multiple outputs simultaneously:

For example, you might configure a workflow with:

  • An RSS Output for subscribers who prefer feed readers
  • A Slack Output for your SOC team's #alerts channel
  • A Telegram Bot for analysts in the field

All three will receive the same processed intelligence each time the workflow executes.

Best Practices#

  1. Use Digest mode for periodic workflows (hourly or daily) — it keeps channels clean
  2. Use Individual mode for real-time alerting on low-volume, high-priority feeds
  3. Set Max Items conservatively for Individual mode to avoid rate limit issues (20-50 items)
  4. Use RSS/JSON for archival and chat outputs for real-time awareness
  5. Separate high-priority and low-priority feeds into different channels to reduce alert fatigue
  6. Enable enrichments only when your team needs IOC context inline — it adds visual noise

Next Steps#

  • BYOD Agent — Run your own agent for private sources