如何使用Discord.js将指定用户的Medium文章链接发送至Discord频道
解决方案
完全可以实现,无需依赖已经过时的medium-sdk包,推荐用「Medium公开RSS源+Discord Webhook」的轻量方案实现,不需要申请Medium官方API密钥,开发和维护成本都很低。
核心逻辑
每个Medium用户都有公开的RSS订阅源,会实时同步用户发布的所有公开文章,你只需要定时拉取这个源的内容,匹配到新发布的文章后,通过Discord预先创建的Webhook把文章链接推送到指定频道即可。
具体操作步骤
- 第一步:获取目标Medium用户的RSS地址
普通用户的RSS地址规则为https://medium.com/feed/@用户名,绑定了自定义域名的用户RSS地址规则为https://用户自定义域名/feed,把对应占位符替换为你要跟踪的用户信息即可。 - 第二步:创建Discord Webhook
进入目标Discord频道的「设置」→「集成」→「Webhook」,点击新建Webhook,自定义推送bot的名称和头像后,复制生成的Webhook URL留存即可,注意不要泄露这个URL,避免被恶意调用。 - 第三步:实现定时同步逻辑
你可以用任意熟悉的开发语言实现,核心逻辑如下:- 按固定间隔(建议15~30分钟,避免触发限流)拉取目标RSS源的XML内容
- 解析XML提取最新的文章ID、标题、链接、发布时间等字段
- 和本地/数据库存储的已推送文章ID做对比,筛选出未推送过的新文章
- 把新文章的信息拼接为Discord支持的消息格式(普通文本/Embed富文本都可以),调用Discord Webhook接口推送到频道
- 把新推送的文章ID存入存储介质,避免下次重复推送
极简Python示例代码
import feedparser import requests import json # 配置项 MEDIUM_RSS_URL = "替换为你要跟踪的Medium用户RSS地址" DISCORD_WEBHOOK_URL = "替换为你自己的Discord Webhook地址" SENT_IDS_FILE = "sent_ids.txt" # 用来存已经推送过的文章ID # 读取已推送的文章ID try: with open(SENT_IDS_FILE, "r") as f: sent_ids = set(f.read().splitlines()) except FileNotFoundError: sent_ids = set() # 拉取RSS内容 feed = feedparser.parse(MEDIUM_RSS_URL) # 遍历最新的文章 for entry in feed.entries[:5]: # 只取最新5篇,避免首次运行推送太多 article_id = entry.id if article_id not in sent_ids: # 构造推送消息 message = { "content": f"📝 新Medium文章发布:{entry.title}\n{entry.link}" } # 调用Discord Webhook推送 requests.post(DISCORD_WEBHOOK_URL, data=json.dumps(message), headers={"Content-Type": "application/json"}) # 标记为已推送 sent_ids.add(article_id) # 保存最新的已推送ID列表 with open(SENT_IDS_FILE, "w") as f: f.write("\n".join(sent_ids))
运行前需要先安装依赖:pip install feedparser requests,之后可以用系统定时任务(比如Linux的crontab)配置定时运行即可。
内容的提问来源于stack exchange,提问作者RasmonT
相关产品推荐
相关产品推荐

