Memoh + Directus —— 将 Agent 接入博客管理后台
最近在搭建自己的 Agent 工作流,主要方便平时开发与服务器运维使用。在搭建方案的时候设计了权限角色,服务器也涉及了多种不同环境,于是去找有没有现成的项目可以使用,最后发现了 Memoh,非常契合我的需求。第一个工作流就先拿自己的博客来进行练练手,正好可以换掉之前的 Astrbot。内容后台还是我原来的 Directus。做完之后感觉还挺顺手,所以写篇文章简单记录一下,也分享下 Memoh 这个项目。
Memoh 是什么?
第一次看到 Memoh 时,我以为它又是一个套了聊天界面的 Agent 项目,但是小黑猫太可爱了必须得点进去看一眼。最后实际看下来,它更像是给 Agent 准备的一台长期在线的小电脑,每个 Agent 都可以有自己的工作区、文件、浏览器、网络、工具和长期记忆,非常适合不同场景下的 Agent 工作流设计与搭建。除了 Web 页面,还能接 Telegram、Discord、飞书、微信这些渠道,也支持 Skills、MCP 和定时任务。
对我的博客来说,这几点刚好够用:
-
它可以执行定时任务,完成一些资讯文章的自动撰写;
-
可以用专属浏览器或搜索工具查资料;
-
具有 MCP、SKILL 这类 Agent 工具,能直接调用 Directus API;
-
具有长期记忆,下次还能记得我不喜欢的风格。
Directus 管理后台
我的博客使用 Directus 管理,虽然说单纯对于博客来说是有点重了,不过其自带的工作流功能非常好用,完全足以用于其他平台或自动化服务的管理搭建。
Directus 的搭建使用可以看这篇文章:Directus+Astro搭建博客网站_恒馨博客
我的目标是搭建一个博客管理 Agent,可以根据指令调动工具来管理我们的文章内容、状态以及图片资源等,也可以定时执行一些文章的撰写工作,在修改过后触发部署工作流,完成博客搭建。所以两边的分工很简单:
Memoh 负责找资料和写;Directus 负责存文章、发布以及自动化工作流;
我们博客文章根据 Firefly 模板格式被结构化为数据模型 posts:
| 字段(部分) | 作用 |
|---|---|
title | 标题 |
slug | 文章地址 |
summary | 摘要 |
content | Markdown 正文 |
status | draft 或 published |
如果博客后台已经搭好了,通常只需要给 Agent 开一个可以创建草稿/正文、删除/修改数据的账号就行。
Memoh 的安装和基础配置
Memoh 既能在桌面上跑,也能部署到服务器。因为我想让它定时工作,所以最后还是放到了长期在线的机器上。
官方目前给出的一键安装命令是:
curl -fsSL https://memoh.sh | sh正式部署前建议还是看一下 自托管文档,尤其是数据持久化、反向代理和备份。项目更新速度很快,文章里的命令过一段时间也可能会变。
安装好以后,主要做几件事:
- 添加一个模型 Provider;
- 新建一个专门写博客的 Bot;
- 为 Bot 选择运行 Agent,Memoh 自带支持 Codex、Hermes、Memoh Agent 以及 ACP 协议,可自由切换。
- 配好时区、记忆和工作区;
- 确认它能访问 Directus 和外部网站。
模型配置可以参考 Providers And Models。如果只是想先跑通,不需要把语音、图片、几十个渠道全配上,一个能调用工具的模型就够了。
让 Memoh 通过 MCP 管理博客
我为 Memoh 在博客后台外面包了一层专门的博客管理 MCP。提供一系列管理工具,比如我现在这套 MCP 提供了这些能力:
-
get_blog_schema:先读取文章字段、状态和安全规则; -
list_posts、get_post:查找草稿或读取一篇完整文章; -
create_post:创建文章,可以明确指定为draft; -
update_post:继续修改已有草稿; -
set_post_status:单独处理发布、退回草稿和归档; -
图片相关工具:上传封面、整理图片目录,并把 Directus 资源地址写回文章。
对 Agent 来说,这比直接操作 REST API 省心不少。它不用拿一个可以任意访问后台的 Token;哪些字段能写、状态变化需不需要确认,都可以在 MCP 这一层做限制。
Memoh 本身支持 Stdio 和 Remote HTTP/SSE 两种 MCP 连接。我的接法是在博客管理 MCP 部署好以后,打开对应 Bot 的 MCP 页面,添加连接并填写实际的启动命令或远程 URL、认证 Header,然后保存并用 Probe 检查工具列表。确认 create_post、update_post 这些工具已经被发现,再把连接启用。
具体配置步骤可以参考 Memoh 的 MCP Connections 文档。如果是自己写 MCP Server,Directus 地址和服务 Token 放在 MCP Server 一侧就好,不要塞进 Skill 或日常聊天消息里。
实际使用时,我给 Memoh 的指令可以很简单:
把刚才讨论的内容整理成一篇中文技术博客。写完后调用博客管理 MCP 创建文章:状态设为 draft,分类设为技术,标签里加入 AI生成。只创建草稿,不要直接发布。Agent 在真正写入前会先读取博客字段规范以及角色设计,生成完正文后调用 create_post。成功时 MCP 会返回文章 ID、slug 和当前状态,我就能直接去 Directus 草稿箱里继续改。
修改也一样,只要让它先用 get_post 读回当前版本,再通过 update_post 改指定内容即可。发布和归档则单独走状态工具,出于安全考虑最好还是需要显式确认。
角色设计做成一个 AGENTS.md
Memoh 的每一个 Bot 都拥有一个独立的工作区,AGENTS.md 就是一个根目录下带基础信息的 Markdown 文件,Agent 执行任务之前都会获取其中的信息:
你是 WineRed 博客的内容总管,使用 Firefly Blog Manager 管理 Directus 中的全部文章。
你可以查询、撰写、修改、发布、撤回、归档和删除文章,也可以管理文章图片。写作时保持自然、具体、有个人表达,默认使用中文 Markdown。
修改已有文章前先调用 get_post 获取当前完整内容。用户明确要求发布、撤回、归档或删除时,可以执行对应操作。删除文章前必须再次说明文章标题并取得明确确认。不得声称操作成功,除非 MCP 工具返回成功结果。
文章状态:- draft:草稿- published:已发布- archived:已归档
发布或修改已发布文章后,Directus 会触发 GitHub Actions 重新部署博客。
## 交互与确认规则(必须遵守)……跑通以后再加定时任务
除了后台配置之外,也可以在对话中使用自然语言进行配置。
Memoh 的 Schedule 用的是五段 cron,而且会受服务器时区影响。第一次配置最好实际触发一次,别等到第二天才发现它按 UTC 跑了。相关说明在 Scheduled Tasks。
把 Bot 接到 Telegram 等外部平台
Web 页面里用顺以后,我就把 Bot 接到了 Telegram。这样临时想到一个选题时,不用先打开后台,在手机上给它发句话就行;定时任务跑完后,也可以直接把草稿 ID 和标题发回来。Telegram 的机器人体验做得非常好,本文以此为例。
Telegram 的接入不复杂:
- 在 Telegram 里找到官方的
@BotFather,发送/newbot; - 按提示设置名称和以
bot结尾的用户名; - 保存 BotFather 返回的 API Token,不要把它贴进文章或公开仓库;
- 回到 Memoh,打开 Bot 详情页的 Platforms;
- 点击 Add Channel,选择 Telegram,填入 Token;
- 保存并启用,然后给 Telegram Bot 发一条消息测试。
官方的 Telegram Channel Configuration 里也列出了这些步骤。Telegram 渠道目前支持流式回复、Markdown、附件和回复上下文,所以除了随手记选题,也可以把图片或资料文件直接发给 Agent。
这里还有一个容易忽略的地方:渠道接通不等于谁都应该能操作博客。在 设置-访问控制 中,可以对 Bot 的访问控制权限做控制。除了 Telegram,Memoh 还支持飞书、Discord、微信、QQ等渠道。总体步骤都差不多,支持列表和通用流程可以看 Channels 文档。
长期记忆我是怎么用的
Memoh 的长期记忆,我主要拿来记写作偏好,例如我不太喜欢什么标题、我每次审稿经常删掉哪些内容这类问题。
Memoh 的记忆可以查看、编辑和重新整理,具体可以看 Bot Memory Management。等积累的修改记录多一点,我还想试试让它对比初稿和终稿,自己总结我到底改了什么。
结语
如果你也有自己的博客或内容后台,可以像本文一样从最简单的一条流程开始。等这一步稳定了,再考虑 MCP、多 Agent、自动配图或者多平台分发。Memoh 自带的连接功能也非常适合做 Ops/Coding Agent。
以上是我的一点实践记录,如有疏漏,欢迎留言指正交流~
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!