An Emacs client for Org Social, a decentralized social network that works with Org Mode files over HTTP.
Note: The Relay server is required for org-social.el
to work.
- Create your social.org file
- Upload it to a web server so others can access it
- Configure org-social.el with the required settings:
(setq org-social-file "~/social.org") ;; Path to your local file
(setq org-social-relay "https://org-social-relay.andros.dev/") ;; Relay server
(setq org-social-my-public-url "https://example.com/social.org") ;; Your public URL
You can use the public Relay server or check the public Relay list for other options.
- View timeline:
M-x org-social-timeline
- Create new post:
M-x org-social-new-post
- Reply to posts in timeline: Press
r
on a post - Interact with the entire community through the relay server
M-x package-reinstall RET org-social RET restart-emacs RET
Add the following to your Emacs config:
(use-package request)
(use-package org-social
:vc ( :url "https://github.com/tanrax/org-social.el"
:rev :newest))
You can install the development version from the develop
branch.
Add the following to your Emacs config:
(use-package request)
(use-package org-social
:vc ( :url "https://github.com/tanrax/org-social.el"
:rev "develop"))
To use the old version 1, you need to use the v1
branch:
(use-package request)
(use-package org-social
:vc ( :url "https://github.com/tanrax/org-social.el"
:rev "v1"))
- Clone the repository
- Install dependencies manually:
;; Install required dependencies
(use-package request :ensure t)
(use-package visual-fill-column :ensure t) ; Optional but recommended
(use-package emojify :ensure t) ; Optional but recommended
;; Load org-social from local directory
(add-to-list 'load-path "/path/to/org-social.el")
(require 'org-social)
Note: When using local installation (:load-path
), dependencies listed in Package-Requires
are NOT automatically installed. You must install them manually as shown above.
;; Required: Set the path to your social feed file
(setq org-social-file "~/my-social-feed.org")
;; Required: Configure Org Social Relay server
;; See public relay list: https://github.com/tanrax/org-social/blob/main/org-social-relay-list.txt
(setq org-social-relay "https://org-social-relay.andros.dev/")
;; Required: Set your public social.org URL (where others can access your feed)
(setq org-social-my-public-url "https://example.com/social.org")
;; Hide Reply, Vote, and Profile buttons for a cleaner timeline view. Change to 't' to hide them. Keyboard shortcuts 'r', 'v', and 'P' still work
(setq org-social-hide-post-buttons nil)
;; Set base URL for live post previews. When configured, a Share button will appear in post buttons
;; that opens the post preview in the system browser with URL-encoded post URL
;; Example: (setq org-social-live-preview-url "https://org-social-preview.andros.dev/?post=")
(setq org-social-live-preview-url "https://org-social-preview.andros.dev/?post=")
;; Use only relay followers instead of local follow list
(setq org-social-only-relay-followers-p nil)
;; Optionally, configure global keybindings
(keymap-global-set "C-c s t" #'org-social-timeline)
(keymap-global-set "C-c s n" #'org-social-new-post)
(keymap-global-set "C-c s o" #'org-social-open-file)
(keymap-global-set "C-c s p" #'org-social-new-poll)
(keymap-global-set "C-c s m" #'org-social-mention-user)
Variable | Description | Default | Required | Type |
---|---|---|---|---|
org-social-file |
Path to your Org-social feed file | "~/social.org" |
✅ | file |
org-social-relay |
URL of the Org Social Relay server for registering your feed and discovering mentions, replies, and social interactions. | "https://org-social-relay.andros.dev" |
✅ | string |
org-social-my-public-url |
Public URL of your social.org file where others can access your feed. | nil |
✅ | string |
org-social-hide-post-buttons |
Hide Reply, Vote, and Profile buttons from timeline posts for a cleaner view. Keyboard shortcuts still work. | nil |
❌ | boolean |
org-social-live-preview-url |
Base URL for live post previews. When set, a Share button appears in post buttons that opens the post preview in the system browser with URL-encoded post URL. Set to nil to hide the Share button. |
"https://org-social-preview.andros.dev/?post=" |
❌ | string |
org-social-only-relay-followers-p |
When non-nil, use only feeds from the relay server. Requires relay configuration. | nil |
❌ | boolean |
You can customize these variables through Emacs' customization interface:
M-x customize-group RET org-social RET
Downloads feeds from people you follow and displays a unified timeline with enhanced navigation and reply functionality.
Display timeline in raw Org mode format following the Org Social specification. This function creates a buffer showing all timeline posts formatted according to the official Org Social specification with proper metadata, properties, and structure. Useful for:
- Exporting timeline data: Copy and paste posts in standard format
- Understanding the format: See exactly how Org Social posts are structured
- Debugging: Inspect post metadata and properties
- Learning: Understand the Org Social specification by example
The generated buffer follows the complete specification including:
- Proper
* Posts
section - Level 2 headers (
**
) for each post :PROPERTIES:
drawers with metadata (ID, LANG, TAGS, CLIENT, MOOD, etc.)- Author information as comments
- Original content preservation with multiline support
Make a new post in your social feed.
Create a new poll in your Org-social feed.
Insert a mention of a user in your post.
Check and display mentions from the relay server in a separate buffer. Only works when relay is configured.
Verifies that your file has the correct structure.
Open the Org-social feed file and enable org-social-mode.
Set up Org-social for first-time use.
Creates a reply to a post in the timeline (available when viewing the timeline).
View the profile of the post author at current position (available when viewing the timeline).
Save the current Org-social file and run associated hooks.
Keybinding | Function | Description |
---|---|---|
c |
New post | Create a new post |
l |
New poll | Create a new poll |
r |
Reply | Reply to the post at point |
R |
React | Add a reaction to the post at point |
n |
Next post | Navigate to the next post |
p |
Previous post | Navigate to the previous post |
t |
View thread | View thread for current post |
P |
View profile | View the profile of the post author |
N |
Notifications | View notifications and mentions |
G |
Groups | View groups |
T |
Timeline | Go back to timeline |
g |
Refresh | Refresh the current view |
b |
Kill buffer | Close the current buffer |
q |
Quit | Quit Org Social UI |
You can use the following hooks to perform additional actions automatically:
Name | Description |
---|---|
org-social-after-save-file-hook |
Runs after saving the social file. Useful for automating tasks like uploading to a remote server or syncing with other services. |
org-social-after-fetch-posts-hook |
Runs after all feeds have been fetched and processed. |
For example, to automatically upload your social file to a remote server after saving:
(add-hook 'org-social-after-save-file-hook
(lambda ()
(call-process-shell-command
(format "scp %s %s"
org-social-file
"user@server:/your/path/social.org")
nil 0)))
- Setup: Configure
org-social-file
and create your social.org file - View timeline: Use
M-x org-social-timeline
orC-c C-t
- Navigate: Use
n
/p
to move between posts in the timeline - Reply: Press
r
when positioned on a post to create a reply - Vote on polls: Press
v
when positioned on a poll to vote - Create posts: Use
M-x org-social-new-post
orC-c C-n
- Create polls: Use
M-x org-social-new-poll
orC-c C-p
- Save and sync: Use
C-x C-s
to save with hooks
Name | Status |
---|---|
Relay: Self-register | ✅ |
Relay: List all feeds | ✅ |
Relay: Mentions | ✅ |
Relay: Replies/threads | ✅ |
Relay: Groups | ✅ |
Relay: Search | ✅ |
Org Social Live Preview Generator | ✅ |
GPL-3.0 - See LICENSE file for details.
See CHANGELOG.md for detailed release notes.
Feel free to fork the repository and submit pull requests to the develop branch.