这周我用 n8n + Ollama 搭了个本地自动化助手,结果它真帮我把每天的新闻和日志处理完了

# 这周我用 n8n + Ollama 搭了个本地自动化助手,结果它真帮我把每天的新闻和日志处理完了

这周一我盯着满屏幕的 RSS 订阅源和一堆没看的新闻,突然冒出一个想法:能不能让 AI 帮我把这些消化掉,早上起来只看一份整理好的摘要?

于是折腾了几天。中间踩了不少坑,但最后效果确实不错。记录一下整个过程。


周一:装 n8n

之前已经装过 Ollama,模型用的 qwen2.5:7b,跑起来没问题。这次就差一个工作流引擎。

BASH
mkdir -p /opt/n8n && cd /opt/n8n

cat > docker-compose.yml << 'EOF' version: "3.8" services: n8n: image: docker.n8n.io/n8nio/n8n:latest container_name: n8n restart: unless-stopped ports: - "5678:5678" volumes: - n8n-data:/home/node/.n8n environment: - GENERIC_TIMEZONE=Asia/Shanghai - TZ=Asia/Shanghai volumes: n8n-data: EOF

docker compose up -d

装完打开 http://IP:5678,注册账号,进去了。界面长这样——左边一堆节点,右边画布,跟搭积木差不多。

第一个想法很简单:每天早上 8 点,抓几条新闻,让 AI 总结一下发给我。


周二:踩坑——n8n 连不上 Ollama

我加了个 Ollama 节点,填了 http://localhost:11434,一点测试——连不上。

折腾了半天才想起来:n8n 跑在 Docker 里,localhost 指向的是容器自己,不是宿主机。

解决:

BASH
# 查看 Docker 网关地址
docker network inspect bridge --format='{{range .IPAM.Config}}{{.Gateway}}{{end}}'
# 输出:172.17.0.1

然后 n8n 里 Ollama 的 URL 改成 http://172.17.0.1:11434

但还连不上。又查了一下——Ollama 默认只监听 127.0.0.1,外面访问不到。

BASH
# 改 Ollama 配置,监听所有接口
mkdir -p /etc/systemd/system/ollama.service.d
cat > /etc/systemd/system/ollama.service.d/override.conf << 'EOF'
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
EOF
systemctl daemon-reload && systemctl restart ollama

这下通了。测试一下:

BASH
curl http://172.17.0.1:11434/api/generate -d '{"model":"qwen2.5:7b","prompt":"你好","stream":false}'

返回了正常响应。踩了两个坑,浪费半天。


周三:搭第一个工作流——新闻摘要

思路:Schedule 定时 → RSS 抓取 → AI 总结 → 通知。

具体节点:

1. Schedule 触发器

  • 时间:每天早上 8:00
  • 时区:Asia/Shanghai
  • 2. RSS Feed Read 节点

  • 填入几个常看的 RSS 地址
  • 每条取标题和摘要
  • 3. Code 节点(数据预处理)

    RSS 抓回来是列表,需要拼成一段话给 AI:

    JAVASCRIPT
    // 把多条 RSS 合并成一段文本
    const items = $input.all();
    const text = items.map(item => {
      return 标题:${item.json.title}n摘要:${item.json.contentSnippet || ''};
    }).join('nn
    nn');

    return [{ json: { combined_text: text, count: items.length } }];

    4. Ollama Chat 节点

    System Prompt:

    你是一个新闻摘要助手。以下是今天的几条新闻,请用简洁的中文总结每条的核心内容,
    按类别分组(科技/财经/国际/其他),每条一句话。总字数控制在 500 字以内。
    

    User Message 填上一步的 {{ $json.combined_text }}

    5. Telegram Bot 通知

    用 Telegram Bot 发给我(飞书/邮件/钉钉都行)。消息内容填 AI 的回复。

    完整流程:

    Schedule (8:00)
      → RSS Feed Read (3个源)
        → Code (合并文本)
          → Ollama Chat (总结)
            → Telegram Bot (发送)
    

    第一次跑的时候,等了大概 15 秒,手机收到消息了。AI 把 10 条新闻分成了 4 类,每条一句话,看起来清爽多了。


    周四:第二个——服务器日志分析

    每天看日志太烦了。干脆让 AI 帮我看。

    先写个脚本提取关键信息:

    BASH
    cat > /opt/n8n/log-analyzer.sh << 'SCRIPT'
    #!/bin/bash
    # 提取昨天的关键日志

    echo "=== Nginx 错误 (昨天) ===" yesterday=$(date -d "yesterday" +%Y/%m/%d) grep "$yesterday" /var/log/nginx/error.log | tail -20

    echo "" echo "=== 系统异常 ===" grep -i "error|fail|kill|oom" /var/log/syslog | tail -20

    echo "" echo "=== 磁盘 ===" df -h / | tail -1

    echo "" echo "=== 内存峰值 ===" echo "昨日最高内存使用: $(cat /proc/meminfo | grep MemTotal)" SCRIPT

    chmod +x /opt/n8n/log-analyzer.sh

    n8n 里加一个工作流:

  • Schedule:每天 22:00
  • Execute Command:跑上面的脚本
  • Ollama Chat:分析日志,找出需要关注的问题
  • 通知:有异常才发,没问题就不打扰
  • Ollama 的 System Prompt:

    你是运维助手。分析以下日志,如果有异常(服务崩溃、磁盘不足、OOM 等),
    列出问题和修复建议。如果一切正常,回复"今日日志正常",不需要展开。
    

    跑了两天,第一天确实抓到了一个 Nginx 的 upstream 超时问题,AI 建议检查后端服务的响应时间,顺藤摸瓜找到了一个慢查询。


    周五:踩坑——n8n 自己占了太多内存

    周五早上看服务器,发现 n8n 占了 800MB 内存。我一共就 24G,倒是不紧张,但跑在 8G 机器上就够呛了。

    查了一下,n8n 默认把所有执行记录都存在内存里。改一下:

    YAML
    # docker-compose.yml 里加环境变量
    environment:
      - EXECUTIONS_MODE=database
      - DB_TYPE=sqlite
      - GENERIC_TIMEZONE=Asia/Shanghai
      - TZ=Asia/Shanghai
    

    再加上资源限制:

    YAML
    deploy:
      resources:
        limits:
          memory: 512M
    

    改完重启,内存降到 300MB 左右。

    另外,工作流如果设置了”保存执行记录”,数据会越积越多。建议在 n8n 设置里把 保存天数 改成 3~7 天,自动清理。


    周末:把几个工作流串起来

    有了新闻和日志两个工作流,周末又把之前做的服务器监控工作流也加进来了。现在每天的时间线是这样的:

    | 时间 | 工作流 | 作用 |
    |



    |



    –|



    |
    | 8:00 | 新闻摘要 | 抓 RSS,AI 总结,发我手机 |
    | 12:00 | 邮件检查 | 有新邮件自动分类摘要 |
    | 18:00 | 服务器巡检 | CPU/内存/磁盘/服务状态 |
    | 22:00 | 日志分析 | 分析当天日志 |

    四个工作流,全部跑在本地。


    给小内存机器的建议

    如果你跑在 8G 或更小的机器上:

  • 模型用 phi3:3.8b 或 qwen2.5:3b,内存占用 2~3G
  • n8n 限制 512MB 内存,执行记录保存天数设短一点
  • 工作流别设太频繁,新闻摘要每天 1~2 次就够了
  • Ollama 和 n8n 分开部署的话,可以放在不同机器上

总结

折腾了一周,几个感受:

1. n8n 上手不难,画布式的界面比写代码直观,但第一次连本地 Ollama 确实会踩坑
2. 本地 AI 够用——qwen2.5:7b 做摘要、分类、简单分析完全没问题,就是速度慢点(5~15 秒一次)
3. 自动化这东西,一旦跑起来就停不下来了——我现在已经开始想把 RSS 换成微信公众号了……

下一篇打算写写沙箱和长期记忆的方案。AI 光会总结还不够,得能”记住”之前的事,并且安全地执行一些操作。到时候再聊。

发表评论