用一份 .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: 属性

为什么这么设计?

官方列出了四条价值观:

  1. 简单:任何能打开文本文件的编辑器都能用。
  2. 可读:人眼能看,机器也能抓。
  3. 去中心化:一人一节点,谁也无法关停整个网络。
  4. 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 没有“推荐算法”。想找到别人,只能:

  1. 朋友把链接丢给你。
  2. 你在博客、论坛、聊天群里看到别人贴出的 social.org 地址。
  3. 去社区维护的“注册表”(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:
世界,晚安。

然后把链接发给你最想分享的人。网络,就此开始。