15.10.2025
org-social
Соцсеточка для особо оргнутых :)
У меня пока почти цельнотыренное с вот этих ссылок:
- https://github.com/tanrax/org-social.el
- https://github.com/tanrax/awesome-org-social/
- https://github.com/tanrax/org-social
Как ставить
(use-package request) (use-package org-social :ensure t :vc (:fetcher github :repo "tanrax/org-social.el" :rev :newest) :config (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://your.site/social.org") ;; Your public URL (setq org-social-hide-post-buttons nil) ;; Reply, Vote, and Profile buttons. Change to 't' to hide them for cleaner view. Keyboard shortcuts 'r', 'v', and 'P' still work ;; 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) )
В руководстве пример, как ставить, с :url вместо :fetcher + :repo, но у меня так не работает, выдает ошибку.
Команды:
- org-social-timeline
- Downloads feeds from people you follow and displays a unified timeline with enhanced navigation and reply functionality.
- org-social-timeline-raw
- 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.
- org-social-new-post
- Make a new post in your social feed.
- org-social-new-poll
- Create a new poll in your Org-social feed.
- org-social-mention-user
- Insert a mention of a user in your post.
- org-social-check-relay-mentions
- Check and display mentions from the relay server in a separate buffer. Only works when relay is configured.
- org-social-validate-file
- Verifies that your file has the correct structure.
- org-social-open-file
- Open the Org-social feed file and enable org-social-mode.
- org-social-setup
- Set up Org-social for first-time use.
- org-social-reply-to-post
- Creates a reply to a post in the timeline (available when viewing the timeline).
- org-social-view-profile
- View the profile of the post author at current position (available when viewing the timeline).
- org-social-save-file
- Save the current Org-social file and run associated hooks.
Keybindings
In the timeline buffer
| 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 |
Hooks
You can use the following hooks to perform additional actions automatically:
- 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)))
Workflow
- Setup: Configure org-social-file and create your social.org file
- View timeline: Use M-x org-social-timeline or C-c C-t. Заодно org-social провалидирует файл social.org, будет ругаться на ошибки, если найдет.
- 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 or C-c C-n
- Create polls: Use M-x org-social-new-poll or C-c C-p
- Save and sync: Use C-x C-s to save with hooks
зарегаться на релее
curl -X POST https://org-social-relay.andros.dev/feeds/ -d '{"feed": "https://your.site/social.org"}' -H "Content-Type: application/json"
про общение с релеем
- https://org-social-relay.andros.dev/feeds/ – отдает список блогов. По порядку от начала.
- https://org-social-relay.andros.dev/groups/ – группы
- ответ на https://org-social-relay.andros.dev/, где ещё варианты, что как спросить:
{
"type": "Success",
"errors": [],
"data": {
"name": "Org Social Relay",
"description": "P2P system for Org Social files"
},
"_links": {
"self": {
"href": "/",
"method": "GET"
},
"feeds": {
"href": "/feeds/",
"method": "GET"
},
"add-feed": {
"href": "/feeds/",
"method": "POST"
},
"mentions": {
"href": "/mentions/?feed={feed_url}",
"method": "GET",
"templated": true
},
"replies": {
"href": "/replies/?post={post_url}",
"method": "GET",
"templated": true
},
"notifications": {
"href": "/notifications/?feed={feed_url}",
"method": "GET",
"templated": true
},
"reactions": {
"href": "/reactions/?feed={feed_url}",
"method": "GET",
"templated": true
},
"replies-to": {
"href": "/replies-to/?feed={feed_url}",
"method": "GET",
"templated": true
},
"search": {
"href": "/search/?q={query}",
"method": "GET",
"templated": true
},
"groups": {
"href": "/groups/",
"method": "GET"
},
"group-messages": {
"href": "/groups/{group_name}/",
"method": "GET",
"templated": true
},
"join-group": {
"href": "/groups/{group_name}/members/?feed={feed_url}",
"method": "POST",
"templated": true
},
"polls": {
"href": "/polls/",
"method": "GET"
},
"poll-votes": {
"href": "/polls/votes/?post={post_url}",
"method": "GET",
"templated": true
}
}
}
Все посты
