Texttile,一个为共同写作的人设计的多人博客引擎
摘要
Texttile是一个开源的多人博客引擎,使用Elixir编写,允许多位作者实时协作编辑文本和媒体,专注于隐私和自托管。
<p><a href="https://lobste.rs/s/logpfy/texttile_multiplayer_blog_engine_for">评论</a></p>
查看缓存全文
缓存时间: 2026/09/01 19:43
# Texttile,一个为共同创作者设计的多人博客引擎 – Klaus Breyer
来源:https://www.v01.io/posts/2026/08/texttile/
自十年前蜜月旅行起,我和妻子每次出行都会撰写博客。为了给家人看,也为了日后留作纪念,现在更为孩子们记录。我们轮流执笔,但两人的手机里都存着照片和视频。
文字撰写从来不是难题。照片和视频才是:每天总有一方要从手机把媒体文件发给另一方,对方还得手动上传并按正确顺序整理进文章。
我先为这部分写了imaedge(https://imaedge.org/),今年我们在墨西哥之旅(https://www.v01.io/posts/2026/08/mexico/)中进行了测试。上传过程很顺畅。磁贴按相机拍摄顺序到达,拖动单个磁贴会同步改变画廊排序。
但如何将媒体与文字内容融合,这是尚未解决的挑战。我们的家庭博客运行在WordPress上,但WordPress始终未能实现这一需求——无论是移动端编辑体验、视频支持、画廊功能,还是至关重要的“协同创作”。WordPress限于每篇文章只能有一个作者(不过你能收获一堆无人维护的插件和持续不断的wp-admin机器人攻击)。
墨西哥之行后,既然画廊功能已验证可行,我便完成了每个程序员都注定要做的任务——开发自己的内容管理系统。它名为Texttile(https://www.texttile.blog/),开源且基于Elixir构建。
它支持多人同时编辑同一篇文章,实现照片与视频的同步上传与排序,视其为一等公民。
## 差异化设计¶ (https://www.v01.io/posts/2026/08/texttile/#what-it-does-differently)
传统博客引擎通常仅允许单作者编辑。Texttile(https://www.texttile.blog/)将内容管理重新定义为多人协作模式。
- **文本协作:**多人可同时打开同一篇文章。其中一人拥有编辑权进行文字输入,另一方实时观察文字出现,并能一键接管编辑权限。
- **磁贴协作:**双方可同时将照片视频的磁贴拖入指定位置,彼此的操作实时可见。画廊永远不会被锁定。
一篇文章由文本与磁贴构成——这正是名称由来。
你的屏幕:你正在书写时,另一人同步阅读
对方的屏幕显示同一篇文章
两个屏幕在同一时刻呈现相同内容。作者看到紫色状态栏并可编辑文本;协作者看到橙色状态栏及只读编辑器。双方仍可继续操作画廊。
旅行需求塑造了其余特性:
- Texttile(https://www.texttile.blog/)不加载任何外部资源。无CDN、无追踪器、无验证码、无托管字体、无Cookie横幅。读者浏览器仅与你的服务器通信。
- 保持轻量以适应慢速网络:页面精简,JavaScript极少,图片尺寸仅匹配屏幕显示需求。
- 视频来自自有服务器。拖入文件后Texttile(https://www.texttile.blog/)会自动转换(含缩略图生成)。无YouTube嵌入,不使用任何第三方播放器。
- Texttile(https://www.texttile.blog/)逐字节存储Markdown文件。版本差异展示真实编辑内容,无其他干扰。
- 单容器单文件夹。Phoenix、LiveView、ffmpeg与SQLite共存于一个Docker镜像。所有数据存储于`/data`目录。迁移博客只需移动该文件夹。
- 评论、订阅通讯与统计功能均保留在你的服务器。Texttile(https://www.texttile.blog/)不使用Cookie,不存储IP地址。
- 支持英语与德语(欢迎贡献更多语言翻译!)
## 定位边界¶ (https://www.v01.io/posts/2026/08/texttile/#what-it-is-not)
没有角色系统、权限矩阵、插件机制或主题市场。所有账户持有者即管理员。我为彼此信任的人们构建此系统——因为共同创作者正是基于这种信任。我的理念是:产品的完美境界在于无可删减。
## 为何选择Elixir¶ (https://www.v01.io/posts/2026/08/texttile/#why-elixir)
多人实时编辑单篇文章正是BEAM虚拟机的设计初衷。锁机制由GenServer实现,按键通过PubSub传输,整个系统运行在SQLite文件旁的小型机器上。无需Redis,无需消息队列,无需第二服务。
## 尝试体验¶ (https://www.v01.io/posts/2026/08/texttile/#try-it)
在本机运行:
``
docker run -d --name texttile \
-p 4000:4000 \
-v texttile-data:/data \
-e SECRET_KEY_BASE="$(openssl rand -base64 48)" \
-e PHX_HOST=localhost \
-e ADMIN_USERS=[email protected] \
ghcr.io/texttile-blog/texttile:3
``
或访问www.texttile.blog(https://www.texttile.blog/)启动演示。你将获得24小时专属博客使用权。若满意可保留,否则休眠后30天自动删除全部内容。
我在demo.texttile.blog(https://demo.texttile.blog/)上传了自己墨西哥旅行博客的示例文章,可供从读者视角体验。
源代码位于github.com/texttile-blog/texttile(https://github.com/texttile-blog/texttile)。期待你的反馈!你在旅途中如何进行博客创作?
这是它的实际运行状态:
双屏协同:一人执笔创作,另一人同步阅读并可随时接管
相似文章
Show HN: Textile – 一款用于拼接文本片段的桌面应用
Textile 是一款桌面应用,帮助用户精确地组装和处理文本,支持剪贴板管理和键盘快捷键,同时将数据以纯文本文件格式存储在本地。
Show HN:textlog —— 一个安静、纯文本的微博客平台,开源,无 JavaScript
textlog 是一个新的开源、纯文本微博客平台,不使用 JavaScript,支持 280 字短笺、话题标签和对话,旨在提供更安静的社交体验。
这个博客底下有一座地下城
一位开发者描述了如何使用 WebRTC 和 Trystero 将点对点多人地下城游戏嵌入静态博客,采用确定性程序生成,且无需后端服务器。
TextGen 现已成为原生桌面应用,是 LM Studio(前身为 text-generation-webui)的开源替代方案。
TextGen(前身为 text-generation-webui)已更新为 Windows、Linux 和 macOS 的原生、免安装桌面应用程序,提供增强的隐私保护、ik_llama.cpp 支持以及原生工具调用功能,作为 LM Studio 的开源替代方案。
面向 LLM 的 Markdown 浏览器
作者介绍了 TextWeb,这是一个开源工具,它将网页渲染为 Markdown 格式供 LLM 处理,而非使用昂贵的大视觉模型,该工具支持命令行界面 (CLI) 和 MCP 服务器。