ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OpenClaw与飞书机器人集成:实现AI自动化资讯早报推送

OpenClaw与飞书机器人集成:实现AI自动化资讯早报推送 1. 先搞清楚 OpenClaw 推送飞书早报到底要解决什么问题如果你在找“OpenClaw 推送飞书资讯早报”的方案核心目标其实很明确把一个能自动获取、整理信息的 AI 工具和团队日常使用的飞书打通实现定时、自动化的信息推送。这背后解决的是信息过载和效率问题——与其让团队成员每天早上手动刷新闻不如让一个 AI 助手帮你筛选、摘要并准时推送到飞书群或私聊。OpenClaw 本身是一个开源的 AI 智能体框架你可以把它理解为一个“大脑”它能根据你设定的目标Skill去调用各种工具比如搜索、读取网页、处理文档完成任务。而飞书则是这个大脑输出结果的“嘴巴”和“手”负责把信息送达。所以这个主题适合两类人看一是想用 AI 自动化提升团队信息获取效率的开发者或运维二是对 OpenClaw 和飞书机器人集成感兴趣想了解具体落地步骤的技术爱好者。最关键的价值在于一旦跑通你就能基于这个模式扩展出无数自动化场景比如监控告警、日报汇总、数据同步等而不仅仅是早报。很多人一开始容易陷入细节比如纠结 OpenClaw 的安装或者飞书机器人的创建。但更重要的第一步是理清流程信息从哪来数据源 - 由谁处理OpenClaw 及 Skill - 怎么发送飞书机器人 - 何时触发定时任务。把这四步串起来整个方案就清晰了。2. 部署前先备齐环境和想清楚数据流在动手敲命令之前先把环境和数据流规划好能避免后面一半的坑。这个方案至少需要三块“积木”运行 OpenClaw 的服务器、能调用的 AI 模型或 API、以及一个飞书机器人。2.1 环境与资源准备清单1. 服务器环境系统Linux (Ubuntu 20.04/22.04 更友好) 或 Windows Server。个人测试也可以用 Windows 10/11 或 macOS但生产环境建议 Linux。配置如果接入本地大模型如通过 OllamaCPU 和内存是重点。例如跑 7B 参数的模型建议 16GB 以上内存。如果接入云端 API如 OpenAI、DeepSeek则对本地配置要求极低主要看网络。网络服务器需要能稳定访问外网用于获取资讯和飞书开放平台 API。2. 软件与依赖Python3.8 或 3.9 版本比较稳妥这是 OpenClaw 的主要语言环境。Docker (可选但推荐)用 Docker 部署 OpenClaw 可以避免复杂的依赖问题尤其适合在云服务器上快速搭建。Git用于拉取 OpenClaw 代码。3. 飞书资源一个飞书企业账号需要管理员权限来创建应用机器人。飞书开发者账号在 飞书开放平台 注册并创建企业自建应用。应用凭证创建应用后你会得到App ID和App Secret这是机器人调用飞书 API 的“身份证”。4. AI 能力二选一方案A云端API简单准备一个云端大模型的 API Key如 OpenAI GPT、DeepSeek、智谱 AI 等。OpenClaw 的 Skill 可以直接调用。方案B本地模型可控在服务器上部署 Ollama 等本地模型服务然后让 OpenClaw 去调用。这需要额外的显卡GPU或足够的 CPU 内存。2.2 核心数据流设计在写代码前用一张图在脑子里过一遍流程我习惯称之为“数据流设计”[定时触发器 Crontab/N8n] - [触发 OpenClaw 执行特定 Skill] - [Skill 工作1.爬取/读取指定资讯源 2.调用 AI 总结摘要 3.格式化文本] - [OpenClaw 调用飞书机器人发送消息的模块] - [飞书 API] - [目标飞书群聊或用户]这里的关键决策点触发器用啥最简单用服务器自带的crontab。如果想可视化、有重试机制可以用n8n这类自动化工具。资讯源从哪来RSS 订阅、爬虫注意合规、公开 API如一些新闻聚合平台。Skill 里要写好抓取逻辑。AI 总结怎么做在 Skill 里把抓取的原始文本扔给 AIPrompt 可以这样写“请将以下新闻列表总结为一份不超过 500 字的早报突出重点分 3-5 个板块语气简洁专业。”飞书消息怎么发不是简单发文本飞书支持富文本post消息、卡片消息早报用卡片格式会更美观。把上面这些在纸上画出来之后每一步的配置就都是填空了。3. 分步实操从部署 OpenClaw 到收到第一条飞书消息现在我们按照“部署 - 配置 - 开发 - 联调 - 定时”的顺序把整个流程跑通。我会以 Linux 服务器 Docker 部署 OpenClaw 云端 AI API Crontab 定时为例。3.1 第一步部署和启动 OpenClaw官方推荐用 Docker能省去很多环境冲突的麻烦。# 1. 拉取 OpenClaw 的 Docker 镜像 docker pull openclaw/openclaw:latest # 2. 创建一个目录用于存放配置和数据 mkdir -p /opt/openclaw/data cd /opt/openclaw # 3. 创建最简单的 docker-compose.yml 文件 cat docker-compose.yml EOF version: 3.8 services: openclaw: image: openclaw/openclaw:latest container_name: openclaw restart: unless-stopped ports: - 3000:3000 # Web 管理界面端口 - 8080:8080 # API 服务端口 volumes: - ./data:/app/data # 挂载数据卷持久化配置和技能 environment: - NODE_ENVproduction EOF # 4. 启动容器 docker-compose up -d启动后访问http://你的服务器IP:3000应该能看到 OpenClaw 的 Web 管理界面。如果看不到检查防火墙是否开放了 3000 端口并用docker logs openclaw查看容器日志。注意如果是 Windows 云服务器确保已安装 Docker Desktop 并启用 WSL 2 或 Hyper-V 后端。步骤类似在 PowerShell 或 CMD 中操作即可。Windows 本地部署时路径处理尤其是挂载卷要小心建议使用绝对路径。3.2 第二步配置飞书机器人和 AI 模型配置飞书机器人登录 飞书开放平台 点击“创建企业自建应用”。填写应用名称如“AI早报助手”。在“凭证与基础信息”页面拿到App ID和App Secret保存好。在“权限管理”页面为应用添加以下权限im:message发送单聊、群聊消息im:message.group_at_msg发送群聊中所有人的消息im:message.p2p_msg发送单聊消息在“事件订阅”页面如果你需要机器人被动响应可以配置对于主动推送早报暂不需要。最重要的一步在“版本管理与发布”页面创建一个版本并申请发布。发布后在“添加应用”中将机器人添加到指定的飞书群。在 OpenClaw 中配置凭证通常OpenClaw 的 Web 界面或配置文件里需要设置环境变量或密钥管理。飞书凭证将App ID和App Secret添加到 OpenClaw 的密钥库命名为FEISHU_APP_ID和FEISHU_APP_SECRET。AI API 凭证将你的 OpenAI API Key 或其它模型的 Key添加为OPENAI_API_KEY等。具体位置可能因 OpenClaw 版本而异一般在管理界面的Settings或Secrets部分。3.3 第三步编写“资讯早报” SkillSkill 是 OpenClaw 的核心它定义了工作流。我们需要创建一个能执行“获取资讯 - 总结 - 发送到飞书”的 Skill。在 OpenClaw 的 Web 界面找到创建 Skill 的地方。一个 Skill 通常包含几个部分触发器 (Trigger)对于定时任务我们可以先留空后面用 Crontab 触发。这里先创建一个“手动触发”或“Webhook触发”的 Skill。动作节点 (Actions)这是 Skill 的主体我们可以用“低代码”方式编排或直接写代码。节点1获取资讯。可以是一个 HTTP 请求节点调用新闻 RSS 接口如https://rsshub.app/的各种路由或你自己的爬虫 API。节点2AI 处理。调用配置好的 AI 模型Prompt 示例角色你是专业的早报编辑。 任务请将以下JSON格式的新闻列表整理成一份面向科技互联网团队的晨间简报。 要求 1. 输出格式为 Markdown。 2. 包含一个简短概述50字。 3. 按领域分为【人工智能】【云计算】【行业动态】3-4个板块。 4. 每条新闻包含标题、一句话摘要、来源。 5. 总字数控制在400-600字。 新闻列表{{上一步输出的新闻JSON}}节点3发送飞书。编写一个代码节点如 Python调用飞书开放平台的发送消息 API。核心代码逻辑如下import requests import json def send_to_feishu(content, app_id, app_secret, receive_id_typechat_id, receive_id你的群聊ID): 发送消息到飞书 :param content: 消息内容可以是文本或卡片 JSON :param app_id: 飞书应用 App ID :param app_secret: 飞书应用 App Secret :param receive_id_type: 接收者类型chat_id群或 user_id用户 :param receive_id: 接收者的 ID # 1. 获取 tenant_access_token token_url https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal token_data {app_id: app_id, app_secret: app_secret} token_resp requests.post(token_url, jsontoken_data) if token_resp.status_code ! 200: raise Exception(f获取 token 失败: {token_resp.text}) token token_resp.json().get(tenant_access_token) # 2. 发送消息 send_url https://open.feishu.cn/open-apis/im/v1/messages headers { Authorization: fBearer {token}, Content-Type: application/json; charsetutf-8 } # 构建消息体这里示例发送文本消息更推荐用 interactive卡片消息 msg_body { receive_id: receive_id, msg_type: text, content: json.dumps({text: content}) } params {receive_id_type: receive_id_type} send_resp requests.post(send_url, headersheaders, paramsparams, jsonmsg_body) if send_resp.status_code 200: print(消息发送成功) return send_resp.json() else: print(f消息发送失败: {send_resp.text}) return None # 在 OpenClaw Skill 的代码节点中这样调用 # 从环境变量或上一步获取内容 summary_content inputs[ai_summary_output] feishu_app_id os.environ.get(FEISHU_APP_ID) feishu_app_secret os.environ.get(FEISHU_APP_SECRET) chat_id oc_xxxxxxxxxxxxxx # 你的飞书群聊 ID result send_to_feishu(summary_content, feishu_app_id, feishu_app_secret, receive_idchat_id) return {success: result is not None}如何获取飞书群聊 ID在飞书群设置中通常可以找到。也可以通过飞书开放平台的 API 接口GET /open-apis/im/v1/chats来查询。3.4 第四步本地测试与联调不要一上来就配置定时任务。先做手动触发测试。测试资讯获取在 Skill 中先只运行“获取资讯”节点看能否拿到结构化的新闻数据JSON格式。检查网络连通性和 API 限流。测试 AI 总结将上一步的真实数据输入给 AI 节点看输出的早报格式和内容是否符合预期。调整 Prompt 直到满意。测试飞书发送将一段固定的测试文本如“测试早报”通过上面的代码节点发送确认机器人能在群里发出消息。端到端测试手动触发整个 Skill观察日志确保从获取、总结到发送的整个链路畅通。常见联调问题飞书 403 错误通常是权限未开通或未发布应用。请回到飞书开放平台检查权限列表和应用发布状态。AI 节点超时或报错检查 API Key 是否正确网络是否通畅以及模型服务是否正常。资讯源返回空数据检查 RSS 地址或爬虫接口是否有效可能需要处理反爬或更新接口。3.5 第五步配置定时任务Crontab当手动触发测试成功后就可以配置定时任务了。我们让服务器每天早晨 8 点执行这个 Skill。OpenClaw 通常会提供 API 来触发一个 Skill 的执行。假设触发该 Skill 的 API 端点是POST http://localhost:8080/api/v1/skills/{skill_id}/trigger。那么在服务器上配置 Crontab# 编辑当前用户的 crontab crontab -e # 添加一行每天上午8点执行。使用 curl 调用 OpenClaw 的 API 0 8 * * * curl -X POST http://localhost:8080/api/v1/skills/your_skill_id_here/trigger -H Content-Type: application/json -d {} /tmp/openclaw_morning.log 21说明0 8 * * *表示每天 8:00 执行。your_skill_id_here需要替换成你在 OpenClaw 中创建的实际 Skill ID。 /tmp/openclaw_morning.log 21将命令的输出和错误重定向到日志文件方便排查。确保服务器上的curl命令可用并且localhost:8080从容器的角度看是可访问的。如果 Docker 容器网络是 bridge 模式从宿主机调用localhost:8080是通的。4. 进阶优化与生产环境考量如果只是自己测试上面的流程已经足够。但如果想用于团队或生产环境有几个点必须考虑。4.1 消息格式优化从文本到飞书卡片纯文本早报在手机上阅读体验一般。飞书的interactive消息类型卡片支持更丰富的排版。你需要将 AI 总结的 Markdown 内容转换为飞书卡片的 JSON 结构。一个简单的卡片消息体示例{ msg_type: interactive, card: { config: { wide_screen_mode: true }, header: { title: { tag: plain_text, content: AI 资讯早报 | 2024-05-15 } }, elements: [ { tag: div, text: { tag: lark_md, content: **早安以下是为您筛选的今日科技要闻** } }, { tag: hr }, { tag: div, text: { tag: lark_md, content: ## 人工智能\n- **OpenAI 发布新模型**摘要内容...\n- **国内大模型竞争加剧**摘要内容... } } // ... 更多板块 ] } }在 Skill 的“发送飞书”节点你需要增加一个“格式转换”步骤将 Markdown 解析并组装成这样的 JSON。这可能需要一些简单的文本处理逻辑。4.2 可靠性提升错误处理与日志定时任务最怕无声无息地失败。必须加强错误处理和日志记录。Skill 内部错误处理在 Skill 的每个关键节点HTTP请求、AI调用、API发送后都应有错误判断。如果失败可以重试或者将错误信息记录到数据库或文件中。Crontab 日志前面我们已经将输出重定向到日志文件。定期检查/tmp/openclaw_morning.log看是否有curl调用失败或返回错误码。OpenClaw 自身日志通过docker logs --tail 100 openclaw查看容器日志关注 Skill 执行时的详细错误信息。失败告警可以编写一个简单的监控脚本检查日志文件中是否包含“error”或“failed”关键字如果发现则通过另一个紧急通道如邮件、另一个飞书机器人发送告警。4.3 使用 N8n 等可视化工具替代 Crontab如果你觉得 Crontab 不够直观或者需要更复杂的工作流如失败重试、条件分支可以使用 N8n、Apache Airflow 等工具。以 N8n 为例你可以创建一个工作流触发器Schedule Trigger 节点设置为每天 8:00。执行HTTP Request 节点调用 OpenClaw 触发 Skill 的 API。错误处理如果 HTTP 请求失败N8n 可以自动重试并在最终失败时发送通知。这样整个定时和监控逻辑都在一个可视化的界面里管理更易于维护。4.4 资讯源的管理与扩展最初的 Skill 可能只抓取一两个固定的 RSS。随着需求变化你可能需要动态源列表将资讯源 URL 列表存储在数据库或配置文件中让 Skill 运行时读取并遍历。去重处理避免不同源报道同一事件导致早报重复。可以在 AI 总结前对新闻标题做简单的相似度匹配和去重。分类与标签让 AI 在总结时不仅总结内容还为新闻打上标签如“紧急”、“利好”、“深度”便于在卡片中用不同颜色展示。5. 避坑指南我踩过的那些雷最后分享几个实际部署时最容易出问题的地方帮你节省大量排查时间。1. 飞书机器人发了消息但不了所有人这是权限问题。除了im:message还需要im:message.group_at_msg权限并且必须发布应用版本。添加权限后记得在开发者后台“重新申请发布”该版本。2. OpenClaw 调用本地模型Ollama超时如果 OpenClaw 跑在 Docker 容器里而 Ollama 服务在宿主机上容器内访问localhost指的是容器自己。你需要用宿主机的局域网 IP如192.168.x.x来调用。在 Docker Compose 中可以通过extra_hosts添加主机映射或者直接使用host.docker.internalDocker Desktop 支持这个特殊域名。3. 定时任务不执行首先在命令行手动执行一遍那条curl命令看能否成功触发 Skill。如果手动可以定时不行99%是环境变量问题。Crontab 的执行环境非常“干净”可能找不到curl命令或无法解析localhost。使用curl的绝对路径/usr/bin/curl并将 URL 中的localhost改为127.0.0.1或服务器 IP。4. AI 总结的内容质量不稳定这通常不是工具问题而是 Prompt 问题。不要只给 AI 一堆文本让它“总结”。要给它明确的角色、格式要求和字数限制。多迭代几次 Prompt比如要求“先提取关键实体再按重要性排序最后用 bullet point 输出”。好的 Prompt 是稳定输出的关键。5. 资讯源突然失效公开的 RSS 或 API 可能变更。不要写死。最好在 Skill 里为每个资讯源配置备用地址并在获取失败时记录日志并尝试下一个源。定期检查你的资讯源列表是否仍然有效。把这个方案跑通后你会发现它的价值远不止“早报”。任何需要“定期获取信息 - 智能处理 - 推送结果”的场景比如服务器监控日报、竞品动态跟踪、社交媒体舆情摘要都可以套用这个框架。核心在于把 OpenClaw 这个“大脑”的 Skill 设计好以及把飞书这个“出口”对接稳。
返回列表