背景

某天发现自家公司的负面新闻被放上了热搜,然后中午开始,公关似乎无动于衷。到了饭点,「友军」看到本司毫无反应,又爆了一个本司的沙雕广告出来。自此热搜就一直往上冲榜,被连环锤爆。一直到了晚上,才慢慢被撤掉热搜,悄无声息地结束一场闹剧。

于是我不禁在想,有没有方法可以比较快地检测到社交媒体的舆情,且信息是关于特定关键词的,就有了这一篇文章。

实现效果

根据文章的实现,会在关于关键词「比特币」有新消息时,自动推送到企业微信中,效果如图:

涉及工具

  • Google Alerts:用于采集社交舆情,并产生 RSS 订阅源;
  • IFTTT:用于采集 RSS 订阅源,并实时推送到用户端;
  • 企业软件(企业微信/钉钉):用于作为客户端,接收舆情信息,且高可用的架构,便于快速传达到用户眼前。

实际操作

Google Alerts:设定采集的舆情信息

只要设定了关键词,如我举例的「比特币」,就会看到对应的检索资讯出现在下方,这些也就是之后有更新就会推动到你企业微信上的信息。

更进一步,点击「显示选项」,有更多的配置项目可以选择,比如舆情信息的「来源渠道」、「语言」、「国家/地区」以及「推送频率、数量」等。

推送的目的地,可以选择发送到邮箱或者 RSS Feed,我们后续选择推送到企业微信,就是通过 RSS Feed 来实现的。

最后,选择「创建快讯」即可。

如果选择推送到 RSS Feed,会有对应的 RSS icon,点击 icon 后跳转的地址,即为该快讯的 RSS Feed 地址(后面简称 RSS URL),需要先记录起来,后续备用。

企业微信:配置「Webhook 机器人」接收推送

企业微信 Webhook 官方介绍: 如何使用群机器人

创建一个群聊

把相关的人士拉入群中,即可组成一个群聊。注意包含「外部联系人」的话,不能创建机器人,也就不能实现上述功能。

如果想创建单人群聊,没有钉钉的面对面建群的便捷功能,需要先把人拉进来,然后 T 掉,即可实现单人群聊。

新增一个机器人

在群聊的设置界面中,添加机器人。

获取调用地址,了解调用内容格式

生成机器人成功后,会获取到一个 Webhook 地址,请记住这个地址。(以后我们简称 {WebhookUrl}

可以理解为,访问这个 Webhook 地址并以某种方式携带我们需要传递的内容,就能够把我们要传递的内容,推送到企业微信中。

Demo

现在来举一个例子,我们要推送「Hello World」到上面创建的群聊里。

请你在命令行中粘贴一下代码,并回车执行。

请注意,以下的 {WebhookUrl} 请用你在上一步创建的机器人 Webhook Url 去替换。

curl '{WebhookUrl}' \
   -H 'Content-Type: application/json' \
   -d '
   {
        "msgtype": "text",
        "text": {
            "content": "hello world"
        }
   }'

正常运作的话,你会在群聊里收到 Bot 给你推送的 「hello world」信息。

想了解更多推送的格式和样式(如截图中出现的其他推送,使用了 Markdown 形式),可以查看官方文档:如何使用群机器人

IFTTT:打通 Google Alerts & 企业微信

IFTTT 是一个自动化网络服务,通过条件来决定是否执行下一条命令。简单来说,当你触发了一件事,IFTTT 则执行设定好的另一件事。

配置一个 if this then that

进入新建页面,新建一个任务(Applet),实际上新建任务需要「if this(触发器) then that(响应器)」,即配置一个触发器和一个响应器即可。那么我们的需求,就是配置「RSS 舆情新闻源有新消息」为触发器,然后触发「通过 Webhook 发送消息到企业微信」的响应器。

配置 RSS 为触发器

搜索名为「RSS Feed」的触发器,选择「New Feed Item」动作,填入第一部中我们通过 Google Alerts 生成的舆情信息的 RSS URL,即创建完成。

配置 Webhook 调用为响应器

配置好了 RSS Feed 作为触发器,现在配置响应器。即有新的消息来了,需要发起 Webhook 推送到企业微信中。


搜索名为「Webhooks」的触发器,选择「Make a web request」动作。

配置数据:

  • Url 为填入第二部中生成的企业微信机器人的 Webhook Url 地址;
  • MethodPost
  • ContentTypeapplication/json

Body 为第二步中我们说的推送内容,这里我提供一个 Markdown 模版。其中打{{context}}的意思是,我们从触发器(RSS Feed)中能获取的信息,比如 EntryTitle 为新消息的标题, EntryUrl 为新消息的来源页面等等,可以自行搭配。

{
  "msgtype": "markdown",
  "markdown": {
      "content": "**💰 {{EntryTitle}}** \n --- \n 📍 Google Alert:`比特币` \n 🔗 [News Link]({{EntryUrl}}) \n > {{EntryContent}} \n\n > {{EntryPublished}} \n\n"
  }
}

测试

完成配置后,应该如下图所示。


推送会有延迟,大概稍等 5-10mins 左右,就会有新的消息推送到配置的企业微信群中了。

注意

推送有延迟,根据实际观察:

  1. Google Alerts 的更新频率在 1-2 小时左右。即新消息刊登在新闻网站上,大概 1-2 小时才会被 Google 收录,并发送到你指定的发送源中。
  2. Google Alerts 的发送方式不同,会有细微的更新区别。选择「发送到 Email」,新消息推送会比「发送到 RSS Feed」快 10 mins。

总体来说,新消息从刊登在源头,到企业微信收到,会有 2-3 小时的延迟,个人认为,日常的舆情收集,可以接受。

Google Alerts 信息源:一般选择权重较高的消息源,收录的信息虽然少,但是有时候看到质量还行,还不能收录微博等信息。

想同时接收 Email & RSS Feed 的推送:在 Google Alerts 配置时,选择「发送到 Email」,然后在接收到新推送的 Email 中,复制「以 RSS Feed 的形式接受此快讯」的超链接,即为 RSS Feed URL 按照,第三部操作,作为 IFTTT 的 RSS 推送源即可。

一直收不到企业微信推送:先到 IFTTT 对应的 Applet 确定,是否有调用,调用是否成功。如果发现一直没有调用记录,那么请参照上面第三点,使用邮件中的 RSS Feed 作为信息源。

附录

  • 👏 本文首发于作者 Blog,欢迎参观 Blog Link
  • 🔍 水印问题:本文的关于企业微信的截图,多有水印模糊的痕迹,因为原水印为本人的真实姓名,涉及隐私故隐去,为原创截图。
  • ✍️ 编辑问题:本文基于 iPad Air 编写,故写作过程包括截图也是来源于 iPad 截图(除去 banner 与效果图为电脑制作),格式与分辨率不对齐问题,请多包涵。
  • ❓ 问题 & 疑惑:请留言。

> 下载少数派 客户端、关注 少数派公众号,获取更多应用资讯 🔧

> 特惠、好用的硬件产品,尽在 少数派 sspai 官方店铺 🛒