用一份 .org 文件就能发推、交友、建群:Org-social 完全指南
“如果社交媒体只是一份纯文本文件,你愿意试试吗?”
今天的主角叫 Org-social:一个不需要注册、不依赖数据库、只靠一份 .org
文件就能运行的去中心化社交网络。它看起来极简,却能发帖子、回消息、做投票、贴图片,还能“关注”别人。下面用聊天的方式,把官方文档拆成一篇超长但好读的手册,回答所有你可能想问的问题。
1. Org-social 到底是什么?
一句话:把社交网络的每一条动态都写进一份 Org Mode 文件,然后把文件放到网上,别人就能像读博客一样读你的“时间线”。
类比 | 传统做法 | Org-social 做法 |
---|---|---|
账号 | 注册用户名+密码 | 直接用 URL(例如 https://me.com/social.org ) |
数据库 | MySQL、MongoDB | 不需要,纯文本 |
发帖 | 点按钮 | 写一段带时间戳的 Org 标题 |
关注 | 点“关注” | 在文件顶部写一行 #+FOLLOW |
回帖 | 点“回复” | 写新帖,加 :REPLY_TO: 属性 |
为什么这么设计?
官方列出了四条价值观:
-
简单:任何能打开文本文件的编辑器都能用。 -
可读:人眼能看,机器也能抓。 -
去中心化:一人一节点,谁也无法关停整个网络。 -
Org 原生:时间戳、属性抽屉、链接,这些都是 Org Mode 自带功能,直接拿来当社交协议。
2. 5 分钟上手:从 0 到第一条帖子
2.1 准备文件
打开 Emacs(或其他文本编辑器),建 social.org
:
M-x find-file RET social.org RET
2.2 写个人资料
把下面这段粘进去,把名字、描述、头像换成你自己的:
#+TITLE: Bob 的树洞
#+NICK: Bob
#+DESCRIPTION: 白天写代码,夜里写 Emacs 配置
#+AVATAR: https://my-awesome-website.com/avatar.jpg
#+LINK: https://my-awesome-website.com
2.3 开“帖子”区
紧接着写:
* Posts
2.4 发第一条动态
在 * Posts
下面继续写:
**
:PROPERTIES:
:ID: 2025-08-15T09:00:00+08:00
:END:
Hello, Org-social!
-
**
表示二级标题,对应“一条帖子”。 -
:ID:
里的时间戳就是这条帖子的唯一编号,格式必须像2025-08-15T09:00:00+08:00
,秒和时区都不能省。
2.5 把文件扔到网上
任何能托管纯文本的服务都行:GitHub Pages、Gitea、Nginx、Apache……拿到公开链接,例如:
https://my-awesome-website.com/social.org
把链接发给朋友,你就正式成为 Org-social 网络的一个节点了。
3. 语法速览:发帖、回帖、投票、贴图
3.1 帖子还能放哪些信息?
在 :PROPERTIES:
抽屉里可以塞更多字段:
字段 | 作用 | 示例 |
---|---|---|
LANG |
语言代码 | en |
TAGS |
标签,空格分隔 | programming emacs |
CONTENT_WARNING |
内容预警 | yes |
MOOD |
表情 | 😊 |
REPLY_TO |
回复哪条帖子 | https://foo.org/social.org/#2025-08-15T09:00:00+08:00 |
3.2 回帖
写一条新帖,加两行属性:
**
:PROPERTIES:
:ID: 2025-08-15T10:15:00+08:00
:REPLY_TO: https://my-awesome-website.com/social.org/#2025-08-15T09:00:00+08:00
:END:
楼上说得对!
3.3 提到别人
先定义“自定义链接类型”,然后就能像 @
人一样:
#+FOLLOW: alice https://alice.com/social.org
* Posts
**
:PROPERTIES:
:ID: 2025-08-15T11:00:00+08:00
:END:
早安 [[org-social:https://alice.com/social.org][alice]]!
3.4 多段文字、富文本
Org Mode 天然支持:
-
- 列表
-
*粗体* /斜体/
-
~行内代码~
-
代码块、链接、图片……
示例:
**
:PROPERTIES:
:ID: 2025-08-15T12:00:00+08:00
:END:
今天学了 Org-social:
1. 写文件
2. 上传
3. 交朋友
代码片段:
#+BEGIN_SRC bash
curl https://my-awesome-website.com/social.org
#+END_SRC
3.5 投票
在 * Polls
区域写:
* Polls
**
:PROPERTIES:
:ID: 2025-08-15T13:00:00+08:00
:POLL_END: 2025-08-15T15:00:00+08:00
:END:
你最喜欢的编辑器?
- [ ] Emacs
- [ ] Vim
- [ ] VS Code
别人投票时,再发一条“投票帖”,用 :POLL_OPTION:
字段标明选了哪个选项即可。
3.6 贴媒体
用 Org 链接就行:
[[https://example.com/cat.jpg][猫咪照片]]
4. 如何发现新朋友?
Org-social 没有“推荐算法”。想找到别人,只能:
-
朋友把链接丢给你。 -
你在博客、论坛、聊天群里看到别人贴出的 social.org
地址。 -
去社区维护的“注册表”( registers.txt
)里挑地址。
把对方的地址加到自己文件顶部:
#+FOLLOW: bob https://bob.com/social.org
#+FOLLOW: alice https://alice.com/social.org
然后用脚本、客户端或纯手动去抓取这些地址,就能看到他们的时间线。
5. 常见问题(FAQ)
Q1:不会 Emacs,能不能用?
能。任何支持 UTF-8、LF 换行的文本编辑器都能写 .org
。只是 Emacs + Org Mode 体验最好。
Q2:发完还能改吗?
可以。直接改文件里对应的内容,保持 :ID:
不变,再上传。客户端下次抓取时会更新。如果改了 :ID:
,就变成全新帖子,旧回复会断链。
Q3:如何删帖?
把整段帖子删掉或注释掉,再上传。客户端发现帖子消失,就相当于“已删除”。
Q4:能不能当 RSS 用?
能。把文件写成博客摘要即可:
#+TITLE: 小明的技术周刊
#+NICK: weekly
#+DESCRIPTION: 每周技术精选
* Posts
**
:PROPERTIES:
:ID: 2025-08-15T08:00:00+08:00
:TITLE: 本周热点:量子计算入门
:URL: https://blog.example.com/quantum-intro
:END:
量子计算本周又火了……
Q5:有官方客户端吗?
没有,但官方提供了 Emacs 脚本 org-social.el
,可用来同步关注列表、阅读时间线。
Q6:文件太大怎么办?
用 HTTP Range Requests:在服务器返回 Content-Range
,客户端只拉新内容。参考 MDN 文档即可。
Q7:一定要公开吗?
理论上你可以把文件放到内网、加密码、甚至用 PGP 加密内容,只是阅读端也要支持对应解密方式。
6. 进阶玩法速查表
需求 | 做法 |
---|---|
多语言帖 | 每条帖加 :LANG: |
分类 | 用 :TAGS: 或自定义抽屉字段 |
置顶帖 | 把帖子放在 * Posts 最上方即可 |
备份 | 把 social.org 丢进 Git |
统计投票 | 写脚本解析 :POLL_OPTION: 字段 |
自动抓取关注者 | 用 curl + cron 定时拉 .org 文件 |
7. 写在最后
Org-social 把社交网络拆成了最小可行单位:一份文本文件 + 一个公开链接。没有广告、没有算法、没有锁仓。你拥有全部数据,也承担全部责任——备份、维护、推广,全靠自觉。
如果你厌倦了平台纷争,想试试“自己就是服务器”的极简社交,不妨今晚就打开编辑器,写下:
#+TITLE: 我的第一篇 Org-social
#+NICK: me
* Posts
**
:PROPERTIES:
:ID: 2025-08-15T23:59:00+08:00
:END:
世界,晚安。
然后把链接发给你最想分享的人。网络,就此开始。