This is one of the worthy scripts for org mode from a very very
small family of “publish from 1 org file” scripts.
Availability of custom_id in a subtree is not a way to
signal to publish a post.
The post may be partially ready, and already have a
custom_id but not ready for publication. The post may
already be published but be in progress updates. Again, it
will already have a custom_id.
I advise for readiness to publish, use org-heading status
like ‘TODO’ instead of custom_id, . Then tasks for
publication are like posts titles (org-headings)
can be displayed in the agenda.
You have a good idea to contain the entire site in 1 orgfile. I would
wanted to combine it with a more structured one
org-publish. But it requires each file to be standalone in
the folder. If you don’t mind, is it possible to make a
elisp lotion which will launch before the launch of the
org-publish. It will dissolves 1 org file with posts in the org subtree to
separate orgfiles into the org-publish project folder. Then one can
just launch an org-publish script.
– Tom 2025-01-14 19:49 UTC
Thanks for the kind words!
The signal to publish the post in Org Clive is the PUBLICATION_DATE
property. If it is on or before a given publication date (today by default), and the post is neither commented out nor archived, then it gets published. So there is no problem with a partially written post having a custom_id
.
As for separating one org file into several ones – this is not what I do in my engine, but it’s of course possible. Here is a similar tool I wrote about 10 years ago: https://github.com/mbork/org-one-to-many (I hope it’s still working with the current Org mode…)
– mbork 2025-01-18 18:31 UTC