Every 3 hours, GitHub fetches your Soro articles, builds a static blog and feed.xml, and publishes them.
luxe-blog. Upload everything in this folder (keep the .github/workflows folder structure).SORO_TOKEN Value: your Soro embed token (the long ID at the end of your embed script URL)blog -> <your-github-username>.github.io.
Then Settings > Pages > Custom domain: blog.luxemedicalprocedures.com.au, tick Enforce HTTPS.https://blog.luxemedicalprocedures.com.au/ and .../feed.xml.Your feed will be at https://blog.luxemedicalprocedures.com.au/feed.xml.
siteUrl / cname: change if you use a different subdomain.canonicalBase: article pages tell Google your existing Square page /blog?post=slug is the “main” version, so the two copies don’t compete. Remove this line to make the new pages the main version instead.disclaimer / footerNote: wording shown on every article. Have your compliance adviser confirm it.feedItemLimit: how many recent articles appear in the feed.If Soro is unreachable or any article fails to download, the run stops and the previous version stays online.
Save a copy of your Soro embed script as test-fixture-embed.js (it is git-ignored), then run SORO_SCRIPT_FILE=./test-fixture-embed.js SORO_OFFLINE=1 node generate.mjs. This builds with placeholder bodies and needs no network.