Push Channels
TrendRadar supports 10 push channels, and you can choose one or several to receive pushes at the same time based on your habits. You configure each channel by adding the corresponding Secret under Settings > Secrets and variables > Actions in your GitHub repository.
Things to know
- Configuring at least one channel is enough to use the push feature
- You can configure multiple channels at once, and the system pushes to all configured channels in parallel
- The Secret Name must match the name noted in the docs exactly, and it is case-sensitive
- Once a Secret is saved you cannot view its original value (a GitHub security mechanism); if you entered it incorrectly, simply update to overwrite it
Channel configuration details
WeCom
Personal WeChat
Feishu
DingTalk
Telegram
Email
ntfy
Bark
Slack
Custom Webhook
WeCom group bot
A WeCom group bot is the simplest and fastest push channel to set up, ideal for teams already using WeCom.
GitHub Secret configuration
| Secret name | Value |
|---|---|
| WEWORK_WEBHOOK_URL | Webhook URL of the WeCom group bot |
Setup steps on mobile
Open the WeCom app and enter the internal group chat that should receive the push
Tap the "..." button in the top-right corner
Find and tap "Group Bot" (or "Message Push")
Tap the "Add" button
Set a bot name (e.g. "TrendRadar") and tap "Add"
Copy the Webhook URL that is shown
Add the copied URL to GitHub Secrets with the name WEWORK_WEBHOOK_URL
Setup steps on desktop
Open the WeCom desktop client and enter the internal group chat that should receive the push
Click the "..." icon in the top-right corner of the group chat
Find the "Group Bot" option and click it
Click "Add" and set a bot name (e.g. "TrendRadar")
Once created, copy the Webhook URL
Add the copied URL to GitHub Secrets with the name WEWORK_WEBHOOK_URL
Tip
The WeCom group bot is the easiest of all push channels to configure, usually done within 2 minutes. Pushed messages support Markdown formatting.
Multi-account push
TrendRadar supports configuring multiple accounts for the same channel, pushing messages to several recipients at once.
How to configure
In the Secret's value, separate multiple URLs or tokens with a semicolon
;:# 企业微信多群推送
WEWORK_WEBHOOK_URL = https://qyapi.weixin.qq.com/xxx1;https://qyapi.weixin.qq.com/xxx2;https://qyapi.weixin.qq.com/xxx3
# 飞书多群推送
FEISHU_WEBHOOK_URL = https://open.feishu.cn/open-apis/bot/v2/hook/aaa;https://open.feishu.cn/open-apis/bot/v2/hook/bbbNotes for Telegram multi-account
Telegram requires two Secrets — Token and Chat ID. For multiple accounts, the count and order on both sides must correspond one to one. For example:
where token1 corresponds to chatid1, token2 to chatid2, and so on.
TELEGRAM_BOT_TOKEN = token1;token2;token3TELEGRAM_CHAT_ID = chatid1;chatid2;chatid3where token1 corresponds to chatid1, token2 to chatid2, and so on.
Handling empty Token slots for ntfy multi-account
If a particular ntfy account doesn't need a Token (using the official free service), just leave the corresponding position empty. For example, if the second of three topics doesn't need a Token:
The empty space between the two middle semicolons means the second topic uses no authentication.
Multiple topics share the same ntfy server URL (NTFY_SERVER_URL accepts only a single value, semicolon separation is not supported).
NTFY_TOKEN = token1;;token3The empty space between the two middle semicolons means the second topic uses no authentication.
Multiple topics share the same ntfy server URL (NTFY_SERVER_URL accepts only a single value, semicolon separation is not supported).
Generic Webhook multi-account
The Generic Webhook also supports multi-account: separate multiple URLs with semicolons (GENERIC_WEBHOOK_URL), and each URL can have its own payload template (GENERIC_WEBHOOK_TEMPLATE, separated by semicolons; if only one template is provided, all URLs share it).
For example:
For example:
GENERIC_WEBHOOK_URL = https://hook1.example.com;https://hook2.example.comGENERIC_WEBHOOK_TEMPLATE = {"text":"{content}"};{"message":"{content}"}By default, each channel supports up to 3 accounts.
Configure via config.yaml
The GitHub Secrets approach described above is designed for GitHub Actions deployments. If you use Docker or local deployment, you can fill in channel credentials directly in the
notification.channels section of config/config.yaml:notification:
enabled: true
channels:
feishu:
webhook_url: "https://open.feishu.cn/open-apis/bot/v2/hook/your-token"
telegram:
bot_token: "123456:ABC-DEF..."
chat_id: "987654321"
wework:
webhook_url: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"
msg_type: "markdown" # markdown=group bot, text=personal WeChatEnvironment variables take priority
If both an environment variable (e.g.
FEISHU_WEBHOOK_URL) and the corresponding field in config.yaml are set, the environment variable's value takes precedence. This lets you put defaults in config.yaml and flexibly override them per environment via environment variables.Test your push
Once configured, you can send a test message to verify that all channels are working:
uv run python -m trendradar --test-notificationThis command sends a test message to every configured push channel. Channels with empty credentials are skipped.
Troubleshooting push failures
If you don't receive the test message, check the terminal log output. Common issues include: misspelled Webhook URLs, invalid Telegram Bot Tokens, expired email app passwords, etc. The log will show the specific error.