Social Lookups & Feeds
Profile lookups and feed notifications for popular platforms.
Overview
greed integrates with popular social platforms to provide two distinct features:
- Feed Notifications: Automatically post updates to Discord when creators go live or publish something new — TikTok, Twitch, YouTube, Instagram, X, Pinterest, SoundCloud and Kick.
- Profile Lookups: Query user profiles, stats, and game information across multiple platforms (Roblox, Valorant, Spotify, Minecraft, GitHub, and more).
Feed Notifications
Set up live feed notifications to post creator updates directly to a channel. Up to 10 feeds per guild per platform.
Pinterest, SoundCloud and Kick are prefix-only commands — Discord caps a bot at 100 slash commands and greed is at that limit, so these three are driven with the , prefix or from the dashboard. Every other feed platform works on both surfaces.
TikTok Feeds
Post new uploads from TikTok creators in a channel.
,tiktok add (username) (channel)
TikTok feeds check for new posts every 20 seconds. Up to 10 creators per server.
greed must have permission to send messages in the target channel. If a creator's account is deleted or suspended, their feed will stop posting automatically.
Instagram Feeds
Post an account's new uploads in a channel, and optionally announce when they go live.
,instagram add (username) (channel)
greed checks tracked accounts every 2 minutes for new posts. Live status is checked at most every 10 minutes. Up to 10 accounts per server. ,instagram also answers to ,ig.
Feed variables:
| Variable | Output |
|---|---|
{instagram.url} | Link to the post. Required — a template without it is rejected. |
{instagram.caption} | The post's caption. |
{instagram.id} | The post's ID. |
{instagram.created} | When the post went up. |
{instagram.likes} | Like count, shortened (e.g. 12.4K). |
{instagram.comments} | Comment count, shortened. |
{instagram.type} | image, video or carousel. |
{instagram.media} | Direct URL to the first media item. |
{instagram.creator} | The account's username. |
{instagram.creator.url} | Link to the account's profile. |
{instagram.creator.avatar} | The account's profile picture. |
Feed management commands require Manage Server. Private accounts cannot be tracked — greed only sees what a logged-out visitor sees.
Twitch Alerts
Announce when a Twitch channel goes live.
,twitch add (login) (channel)
Live alerts check every minute. You can ping a role when a streamer goes live with ,twitch ping (login) [role].
If a Twitch channel is set to private or deleted, alerts will stop. Ensure greed can send messages in the target channel.
YouTube Feeds
Post new uploads and live streams from YouTube channels.
,youtube add (channel_name) (channel)
YouTube supports channel handles (@name), channel IDs, and URLs. Uploads are checked every 2 minutes and live streams every 5 minutes. You can enable live stream announcements separately with ,youtube live (channel_name).
YouTube channels must be public. If a channel is made private or deleted, feeds will stop posting. The bot requires send-message permissions in the target channel.
X Feeds
Post an account's new posts from X (formerly Twitter) in a channel.
,x add (handle) (channel)
X feeds check every 3 minutes. Reposts are included by default and are labelled as reposts — turn them off per feed with ,x reposts (handle) off.
Replies to other accounts are never posted, but replies an account makes to itself are — so threads still arrive in full.
Feeds follow the account's numeric ID, so a handle change does not break them. Protected (private) accounts cannot be followed.
Pinterest Feeds
Post an account's new pins in a channel, either from every board or from one specific board.
,pinterest add (username) (channel) [board]
Pinterest feeds check every 3 minutes. Leave the board off to follow everything the account saves, on any board. On the dashboard, pick the account and its boards appear underneath.
Saving someone else's pin to a board counts as a new pin, because that is what Pinterest shows the account's followers. An account that mostly re-pins will therefore be chatty — following a single board is usually quieter.
Pinterest feeds follow the username, because Pinterest offers no way to look an account up by ID. If the account is renamed its feed stops silently and has to be added again under the new name.
SoundCloud Feeds
Post an artist's new tracks in a channel.
,soundcloud add (artist) (channel)
SoundCloud feeds check every 3 minutes. ,soundcloud also answers to ,sc, and accepts a profile name or a full profile link.
Feeds follow the artist's numeric ID, so renaming a profile does not break them. Private tracks are never posted.
Kick Alerts
Announce when a Kick channel goes live.
,kicklive add (channel_name) (channel)
Kick alerts check every minute. The command is ,kicklive (also ,kickalerts) because ,kick is the moderation command for removing a member.
Each broadcast is announced once. Ending and restarting a stream is a new broadcast and announces again, but a brief connection drop on Kick's side will not re-announce the same stream.
Custom Feed Messages
Every social feed supports fully custom notification messages. Use the ,<platform> message command to set a template that renders when new content is posted. Templates use greed's scripting language to combine text, embeds, and interactive components — see Embed Scripting and Components for syntax.
Fallback Behavior
If your custom template renders to nothing (empty text content, no embeds, no components), greed falls back to the built-in default layout for that platform. This lets you use conditionals and optional content without losing notifications.
Twitch Custom Messages
Twitch live alerts use 8 available variables to build rich notifications. The built-in layout shows the streamer's name, stream title, thumbnail, viewer count, category, and a direct link to the stream.
Set ,twitch ping (login) (role) to prepend a role mention to any custom message — the role is added as <@&role_id> before your rendered content.
Twitch Variables
| Variable | Description | Example Value |
|---|---|---|
{twitch.url} | Direct link to the stream | https://twitch.tv/streamername |
{twitch.title} | Stream title | 24-hour charity speedrun! |
{twitch.category} | Game or category name | Just Chatting |
{twitch.game} | Alias for twitch.category | Just Chatting |
{twitch.viewers} | Current viewer count (formatted) | 1,234 |
{twitch.started} | Stream start time as Discord relative timestamp | <t:1692374400:R> |
{twitch.thumbnail} | Thumbnail image URL | https://static-cdn.jtvnw.net/previews-ttv/... |
{twitch.id} | Twitch stream ID | 48573294857 |
{twitch.creator} | Streamer's login (lowercase name) | streamername |
{twitch.creator.name} | Streamer's display name | StreamerName |
{twitch.creator.url} | Streamer's profile URL (alias for twitch.url) | https://twitch.tv/streamername |
Twitch Examples
{twitch.creator.name} is live on Twitch playing {twitch.category}!
{twitch.title}
{twitch.url}
YouTube Custom Messages
YouTube feeds support two distinct events: uploads (new videos or Shorts) and live streams. Each has a different set of available variables. The built-in layout shows the channel name, video title, thumbnail, publication time, and a link.
Enable live stream notifications with ,youtube live (channel_name) on to post when the channel goes live. Upload and live messages can have different custom templates.
YouTube Variables by Event Type
Upload Variables (triggered when a new video or Short is posted):
| Variable | Description | Example Value |
|---|---|---|
{youtube.url} | Link to the video | https://www.youtube.com/watch?v=dQw4w9WgXcQ |
{youtube.title} | Video title | How to make the perfect soufflé |
{youtube.description} | Video description (first 5000 chars) | In this video I show you... |
{youtube.id} | YouTube video ID | dQw4w9WgXcQ |
{youtube.thumbnail} | Thumbnail image URL | https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg |
{youtube.published} | Upload time as Discord relative timestamp | <t:1692374400:R> |
{youtube.type} | Content type: "short" or "video" | video |
{youtube.creator} | Channel name | Culinary Arts Daily |
{youtube.creator.url} | Channel profile URL | https://www.youtube.com/channel/UCxxxxxxxxxxxxxxxx |
Live Stream Variables (triggered when the channel goes live):
| Variable | Description | Example Value |
|---|---|---|
{youtube.url} | Link to the live stream (may be empty initially) | https://www.youtube.com/watch?v=dQw4w9WgXcQ |
{youtube.title} | Stream title | Live Cooking Q&A |
{youtube.description} | Always empty for live streams | `` |
{youtube.id} | Video ID (may be empty initially) | dQw4w9WgXcQ |
{youtube.thumbnail} | Thumbnail image URL (may be empty initially) | https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg |
{youtube.published} | Always empty for live streams | `` |
{youtube.type} | Always "live" for live streams | live |
{youtube.viewers} | Current live viewer count (formatted) | 5,432 |
{youtube.creator} | Channel name | Culinary Arts Daily |
{youtube.creator.url} | Channel profile URL | https://www.youtube.com/channel/UCxxxxxxxxxxxxxxxx |
Live stream variables like url, thumbnail, and id may be empty when the stream first starts. Design templates to handle missing data with optional content or fallback text.
YouTube Examples
New video from {youtube.creator}!
{youtube.title}
{youtube.url}
TikTok Custom Messages
TikTok feeds post when creators upload new videos or photos. The built-in layout shows the creator's name, post caption, engagement stats (likes, comments, plays), media thumbnails, and a direct link.
TikTok Variables
| Variable | Description | Example Value |
|---|---|---|
{tiktok.url} | Direct link to the post | https://www.tiktok.com/@username/video/7329482948574839 |
{tiktok.caption} | Post caption text | this took 3 hours... |
{tiktok.id} | TikTok video/photo ID | 7329482948574839 |
{tiktok.created} | Post creation time as Discord relative timestamp | <t:1692374400:R> |
{tiktok.likes} | Like count in compact notation | 1.2K |
{tiktok.comments} | Comment count in compact notation | 342 |
{tiktok.plays} | Play/view count in compact notation | 45.8K |
{tiktok.shares} | Share count in compact notation | 89 |
{tiktok.type} | Content type: "photo" or "video" | video |
{tiktok.creator} | Creator's username (without @) | username |
{tiktok.creator.name} | Creator's display name | User Name |
{tiktok.creator.url} | Creator's profile URL | https://www.tiktok.com/@username |
{tiktok.creator.avatar} | Creator's avatar image URL | https://p16-sign.tiktokcdn.com/avatar-... |
TikTok Examples
{tiktok.creator.name} just posted!
{tiktok.caption}
{tiktok.url}
X Custom Messages
X feeds post original posts, self-replies (threads) and — unless you turn them off — reposts. {x.type} tells you which one you are rendering, so a single template can handle all three.
X Variables
| Variable | Description | Example Value |
|---|---|---|
{x.url} | Direct link to the post | https://x.com/NASA/status/2090197889947451524 |
{x.text} | Post text | A new school year brings fresh opportunities… |
{x.id} | Post ID | 2090197889947451524 |
{x.media} | First image or video thumbnail, if any | https://pbs.twimg.com/media/… |
{x.published} | Post time as Discord relative timestamp | <t:1786477576:R> |
{x.type} | post, repost or reply | repost |
{x.likes} | Like count (formatted) | 27,325 |
{x.reposts} | Repost count (formatted) | 4,438 |
{x.replies} | Reply count (formatted) | 3,941 |
{x.creator} | Account display name | NASA |
{x.creator.handle} | Account handle without the @ | NASA |
{x.creator.url} | Account profile URL | https://x.com/NASA |
{x.creator.avatar} | Account avatar URL | https://pbs.twimg.com/profile_images/… |
{x.creator.verified} | true when the account is verified | true |
X Examples
{x.creator} posted on X
{x.text}
{x.url}
Pinterest Custom Messages
Pinterest feeds post one message per new pin, whether the feed follows a single board or the whole account.
Pinterest Variables
| Variable | Description | Example Value |
|---|---|---|
{pinterest.url} | Direct link to the pin | https://www.pinterest.com/pin/142567144448897971/ |
{pinterest.title} | Pin description | A new school year brings fresh opportunities… |
{pinterest.id} | Pin ID | 142567144448897971 |
{pinterest.image} | Pin image URL | https://i.pinimg.com/736x/… |
{pinterest.published} | Pin time as Discord relative timestamp | <t:1786477576:R> |
{pinterest.creator} | Account display name | NASA |
{pinterest.creator.handle} | Account username | nasa |
{pinterest.creator.url} | Account profile URL | https://www.pinterest.com/nasa/ |
Pinterest Examples
{pinterest.creator} pinned something new
{pinterest.title}
{pinterest.url}
SoundCloud Custom Messages
SoundCloud feeds post one message per new track, with the artwork, duration and play count available to your template.
SoundCloud Variables
| Variable | Description | Example Value |
|---|---|---|
{soundcloud.url} | Direct link to the track | https://soundcloud.com/flume/all-of-the-worlds |
{soundcloud.title} | Track title | All Of The Worlds |
{soundcloud.description} | Track description | Out now on all platforms |
{soundcloud.id} | Track ID | 2119863225 |
{soundcloud.artwork} | Cover artwork URL | https://i1.sndcdn.com/artworks-…-t500x500.jpg |
{soundcloud.duration} | Track length | 3:42 |
{soundcloud.plays} | Play count (formatted) | 1,204,551 |
{soundcloud.likes} | Like count (formatted) | 48,201 |
{soundcloud.published} | Upload time as Discord relative timestamp | <t:1750942881:R> |
{soundcloud.creator} | Artist display name | Flume |
{soundcloud.creator.handle} | Artist profile name | flume |
{soundcloud.creator.url} | Artist profile URL | https://soundcloud.com/flume |
SoundCloud Examples
{soundcloud.creator} posted a new track — {soundcloud.title} ({soundcloud.duration})
{soundcloud.url}
Kick Custom Messages
Kick alerts fire once per broadcast, with the same shape as Twitch alerts.
Kick Variables
| Variable | Description | Example Value |
|---|---|---|
{kick.url} | Direct link to the stream | https://kick.com/xqc |
{kick.title} | Stream title | 24-hour charity speedrun! |
{kick.category} | Category name | Just Chatting |
{kick.viewers} | Current viewer count (formatted) | 19,325 |
{kick.started} | Stream start time as Discord relative timestamp | <t:1787240701:R> |
{kick.thumbnail} | Stream thumbnail URL | https://images.kick.com/video_thumbnails/… |
{kick.language} | Stream language code | en |
{kick.creator} | Channel name (lowercase) | xqc |
{kick.creator.name} | Channel display name | xQc |
{kick.creator.url} | Channel URL (alias for kick.url) | https://kick.com/xqc |
Kick Examples
{kick.creator.name} is live on Kick playing {kick.category}!
{kick.title}
{kick.url}
Role Mentions in Feed Messages
When you set a role ping with ,<platform> ping (target) (role), greed prepends the role mention to your rendered message. The mention is added as <@&role_id> before your template's output, and configured for proper Discord allowedMentions.
If your custom template renders empty, the role mention still appears before the fallback default layout.
Example: If you set a custom Twitch message and assign a role:
,twitch message mystreamer {twitch.creator.name} is live!
,twitch ping mystreamer @StreamAlerts
The posted message will be: <@&123456789012345678> mystreamer is live!
Template Scripting Reference
Custom feed messages use greed's embedded scripting language. Master it with these resources:
- Embed Scripting: Build rich embeds with titles, descriptions, fields, colors, images, and footers.
- Variables: Variable interpolation, conditionals, mentions, and formatting.
- Components: Add buttons, select menus, and text inputs (Components V2).
Key techniques:
- Variables: Wrap any variable in
{...}to interpolate — e.g.,{twitch.creator.name}. - Embeds: Each field is its own node —
{title: ...},{description: ...},{color: #hex},{image: url}. Open with{embed}when a message mixes plain text and embed fields. - Fields and buttons: Arguments are separated by
&&, never commas orkey="value"pairs —{field: Name && Value && inline}and{button: label: Watch && url: https://...}. - Conditionals: Use
{if condition}...{/if}to show content only when conditions are met.
Test your template before deploying to production. The ,<platform> message (target) command (without a script argument) displays your current template.
Common Issues & Troubleshooting
Profile Lookups
Query profiles and stats from gaming and social platforms. All lookups are one-off commands — they don't create persistent feeds.
Roblox Profiles
Look up Roblox user profiles, games, groups, and outfit information.
Some usernames may not be found if the account is private, deleted, or very new. Game and group lookups require exact or partial name matches.
Rolimons
Look up Roblox item values and trading stats via Rolimons.
Requires a valid Roblox username. The chart displays value trends over the past 7, 30, or 90 days.
Valorant Profiles
Look up player ranks, agents, weapons, and maps.
Player profiles require the exact Riot ID format: username#tag. If a player's match history is private, only ranked tier will display.
Minecraft
Look up Java Edition player skins and server info.
Only supports Java Edition. Bedrock players and servers are not supported. Server checks require the server to have query enabled.
Spotify
Search and preview tracks, albums, and artists.
Some tracks don't have preview clips available. Artist and album searches return the top result.
GitHub
Look up GitHub user profiles and repository information.
Usernames are case-insensitive. The email lookup only finds addresses linked to public commits. Repositories require an exact or partial match of the name.
X (Twitter)
Look up X/Twitter profiles and fetch individual posts.
X profile lookups display user bios, follower counts, and verified status (if applicable). To post an account's new posts automatically, see X Feeds.
Instagram Profiles
Instagram lookups work without any feed configuration and need no permissions.
League of Legends
Summoner lookups use Riot IDs — name#tag, not the old summoner name alone.
Bio Profiles
Look up user profiles from social bio platforms: guns.lol and haunt.gg.
Profiles display custom bios, social links, page views, and verification status. The leaderboard updates periodically.
Fortnite
View Fortnite cosmetics, news, and map information.
Cosmetic lookups may return multiple results; refine your search if needed. News updates with each patch cycle.
Last.fm Integration
Link your Last.fm account to get Spotify and YouTube links for currently playing tracks.
Requires a Last.fm account linked to your Discord profile. If omitted, uses your Last.fm username from Discord.
Troubleshooting
Feed channels deleted: If a feed's target channel is deleted, the feed stops posting and greed removes it. Set it up again with ,<platform> add pointing at a channel that still exists.
Creator not found: Ensure the username is spelled correctly and the account is public. Some very new accounts may not be indexed yet.
Profile lookups return no data: This may indicate the account is private, banned, or the username is misspelled. Try searching with different query formats.
Rate limits: Frequent lookups of the same profile may trigger temporary rate limiting. Space out requests if you're bulk-checking multiple profiles.