搭建 Huginn
Docker 与 Daocloud
安装 Docker。
curl -sSL https://get.daocloud.io/docker | sh
或者可以通过包管理安装,就是版本可能会旧一点。
sudo apt install docker.io
添加当前用户到 docker 用户组。
sudo usermod -aG docker user
安装 Daomonit。
curl -sSL https://get.daocloud.io/daomonit/install.sh | sh -s *******
部署 Huginn 容器
在 Daocloud 内添加好主机好,去发现镜像里搜索 Huginn,使用新版的 huginn/huginn,部署即可,注意将 3000 端口暴露出来,因为容器默认是跑在 3000 端口上的,如果主机没有跑别的网站的话,也可以直接暴露在 80 上。
Nginx 反代
用端口访问总是麻烦一点,做个反代,新建一个 vhost,编辑其设置。
server {
listen 80;
server_name xxx.xxx.com;
access_log /var/log/nginx/access.log;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
操作 Huginn
参考 这篇文章。
{
"schema_version": 1,
"name": "微信公众号",
"description": "No description provided",
"source_url": false,
"guid": "c0be876a712baf52fa4270d6b1744432",
"tag_fg_color": "#ffffff",
"tag_bg_color": "#00b050",
"icon": "leaf",
"exported_at": "2017-05-28T02:35:18Z",
"agents": [
{
"type": "Agents::DeDuplicationAgent",
"name": "微信公众号 #3 去除重复",
"disabled": false,
"guid": "3250efcc923ce4c10b30763c6e0365b6",
"options": {
"property": "{{title}}",
"lookback": "0",
"expected_update_period_in_days": "20"
},
"keep_events_for": 15552000,
"propagate_immediately": true
},
{
"type": "Agents::WebsiteAgent",
"name": "微信公众号 #2 获取文章列表",
"disabled": false,
"guid": "606e3875f2368e053aace5f3d9ceeb9d",
"options": {
"expected_update_period_in_days": "20",
"url": "https://phantomjscloud.com/api/browser/v2/{% credential phantomjs_cloud %}/?request={url:\"{{url | replace: '&', '%26'}}\",renderType:\"html\"}",
"type": "html",
"mode": "on_change",
"extract": {
"url": {
"css": "h4",
"value": "@hrefs"
},
"title": {
"css": "h4",
"value": "string(.)"
}
},
"events_order": [
[
"{{_index_}}",
"number",
"true"
]
],
"template": {
"url": "{{ url | to_uri: \"http://mp.weixin.qq.com\" }}"
}
},
"schedule": "never",
"keep_events_for": 7776000,
"propagate_immediately": true
},
{
"type": "Agents::WebsiteAgent",
"name": "微信公众号 #1 搜索账号",
"disabled": false,
"guid": "a4c7bc9e333c38cbb4fdfa3a24c191ed",
"options": {
"expected_update_period_in_days": "4",
"_comment": [
"利器",
"PingWest品玩",
"经济学人",
"译读",
"爱思想的青年",
"苔原",
"连岳",
"新京报传媒研究",
"鲤newriting",
"看理想",
"取经号JTW",
"星期天读书会",
"译读小号二世",
"京师心理大学堂"
],
"url": [
"http://weixin.sogou.com/weixin?query=liqiio",
"http://weixin.sogou.com/weixin?query=wepingwest",
"http://weixin.sogou.com/weixin?query=TheEconomistGroup",
"http://weixin.sogou.com/weixin?query=T-Read",
"http://weixin.sogou.com/weixin?query=asxdqn",
"http://weixin.sogou.com/weixin?query=the_tundra",
"http://weixin.sogou.com/weixin?query=ilianyue",
"http://weixin.sogou.com/weixin?query=xjbcmyj",
"http://weixin.sogou.com/weixin?query=newriting200806",
"http://weixin.sogou.com/weixin?query=ikanlixiang",
"http://weixin.sogou.com/weixin?query=JTWest",
"http://weixin.sogou.com/weixin?query=SundayReading",
"http://weixin.sogou.com/weixin?query=WinnieTheFool",
"http://weixin.sogou.com/weixin?query=bnupsychology"
],
"type": "html",
"mode": "on_change",
"extract": {
"url": {
"css": ".news-box > ul > li:first-child .tit a",
"value": "@href"
}
}
},
"schedule": "every_1d",
"keep_events_for": 86400,
"propagate_immediately": false
},
{
"type": "Agents::DataOutputAgent",
"name": "微信公众号 #5 输出RSS",
"disabled": false,
"guid": "cbc2ced20c71d435a5bd375b3e580797",
"options": {
"secrets": [
"weixin_public"
],
"expected_receive_period_in_days": "20",
"template": {
"title": "微信公众号",
"description": "微信公众号",
"item": {
"title": "【{{author}}】{{title}}",
"description": "{{ desciption | replace: 'data-src', 'src' }}",
"link": "{{url}}"
},
"link": "https://weixin.sogou.com/",
"icon": "https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/favicon22c41b.ico"
},
"ns_media": "true",
"events_to_show": "300"
},
"propagate_immediately": true
},
{
"type": "Agents::WebsiteAgent",
"name": "微信公众号 #4 获取单篇文章全文",
"disabled": false,
"guid": "f7c52fcd85cea0d7426978202f4dc692",
"options": {
"expected_update_period_in_days": "20",
"url_from_event": "https://phantomjscloud.com/api/browser/v2/{% credential phantomjs_cloud %}/?request={url:\"{{url | replace: '&', '%26'}}\",renderType:\"html\"}",
"type": "html",
"mode": "merge",
"extract": {
"desciption": {
"css": "#js_content",
"value": "./node()"
},
"author": {
"css": "#post-user",
"value": "string(.)"
},
"title": {
"css": "#activity-name",
"value": "string(.)"
}
}
},
"schedule": "never",
"keep_events_for": 604800,
"propagate_immediately": true
}
],
"links": [
{
"source": 0,
"receiver": 4
},
{
"source": 1,
"receiver": 0
},
{
"source": 2,
"receiver": 1
},
{
"source": 4,
"receiver": 3
}
],
"control_links": [
]
}
申请一个 phantomjs_cloud 的 key,填入 Credentials 里,类型选 Text。
导入 Scenarios,编辑想要的公众号,运行第一个 Agent,RSS 地址在最后一个 Agent内。
有点 bug,微信的图片有防盗链。。。显示不出来。。。。
想问下脚本还能正常运行吗?
不清楚,很久没用过了。
支持下