[{"content":"We\u0026rsquo;ve written a post in Obsidian and pushed it through Hugo to GitHub Pages. This final part verifies the two public outputs that make the workflow useful: the blog\u0026rsquo;s RSS feed and the blog-post list in the GitHub profile README.\nCheck the deployed article and feed After pushing to main, open the Build and deploy blog workflow in the blog repository. Wait for both the build and deploy jobs to finish successfully, then visit the site\u0026rsquo;s home page and open the article.\nThe RSS feed is https://cmduyeen.github.io/index.xml. It should return XML with a \u0026lt;channel\u0026gt; and an \u0026lt;item\u0026gt; for each published post. If the new article is missing, check that:\nThe post is under content/posts/. Its front matter is valid and draft is false. The Pages deployment for the latest commit succeeded. You are checking after the deployment has completed; a cached response can briefly show an older version. Understand when the profile updates The profile repository reads the Hugo RSS feed and updates the Dyn section in its README with each recent post\u0026rsquo;s cover and title. Its workflow runs once daily at 00:17 Vietnam time, or you can start Update profile README manually from the profile repository\u0026rsquo;s Actions tab to test a new post right away.\nThis keeps the routine automation small: publishing a post triggers one Pages build, while the profile refresh happens on its existing daily schedule. Manually dispatch the profile workflow only when you want to verify the sync immediately; no new plugin, paid service, or extra scheduled job is needed.\nVerify the profile README After the profile workflow succeeds, open the profile repository\u0026rsquo;s README.md and check the Dyn section. The new article should appear with its cover image, title, and date. The workflow keeps only the five most recent feed entries, so older posts eventually roll off that short list while remaining available on the blog.\nIf the blog workflow succeeded but the profile workflow failed, inspect its Update blog posts step. A feed-fetch error usually means the RSS URL was unavailable at that moment or the Pages deployment had not finished yet. Once the feed is live, rerun the profile workflow.\nThe whole path Obsidian Markdown -\u0026gt; commit and push to main -\u0026gt; Hugo build and GitHub Pages deployment -\u0026gt; public article and RSS feed -\u0026gt; daily or manually dispatched profile README update That is the complete test: make a small edit in Obsidian, push it, wait for the blog deployment, then run the profile workflow if you don\u0026rsquo;t want to wait for the daily refresh. The earlier parts are Part 1: Build a publishable vault and Part 2: Publish Markdown with Hugo.\n","permalink":"https://cmduyeen.github.io/posts/obsidian-to-github-blog-03-test-rss-and-profile-sync/","summary":"\u003cp\u003eWe\u0026rsquo;ve written a post in Obsidian and pushed it through Hugo to GitHub Pages. This final part verifies the two public outputs that make the workflow useful: the blog\u0026rsquo;s RSS feed and the blog-post list in the GitHub profile README.\u003c/p\u003e\n\u003ch2 id=\"check-the-deployed-article-and-feed\"\u003eCheck the deployed article and feed\u003c/h2\u003e\n\u003cp\u003eAfter pushing to \u003ccode\u003emain\u003c/code\u003e, open the \u003cstrong\u003eBuild and deploy blog\u003c/strong\u003e workflow in the blog repository. Wait for both the build and deploy jobs to finish successfully, then visit the site\u0026rsquo;s home page and open the article.\u003c/p\u003e","title":"From Obsidian to GitHub Pages, Part 3: Test RSS and Profile Sync"},{"content":"In Part 1, we set up Obsidian to edit the blog\u0026rsquo;s Markdown source. Now we\u0026rsquo;ll publish a post and see how it reaches the live site.\nSave the note in Hugo\u0026rsquo;s content folder Create or edit a .md file in content/posts/. A published article needs front matter with a title, date, draft: false, and any useful tags:\n--- title: \u0026#34;My first Obsidian post\u0026#34; date: 2026-10-16T21:00:00+07:00 draft: false tags: [\u0026#34;obsidian\u0026#34;, \u0026#34;first-post\u0026#34;] --- Write the article below the front matter using standard Markdown headings, paragraphs, lists, code fences, and links. A preview in Obsidian checks the Markdown formatting, but it does not fully reproduce the PaperMod theme; check the deployed page after publishing too.\nPush with GitHub Desktop When the note is ready:\nReview the changed files and confirm only intended public content is included. Enter a short commit message, such as Add first Obsidian blog post. Commit the changes on main and push them to GitHub. This push triggers the existing Build and deploy blog workflow. GitHub Actions checks out the PaperMod theme, builds the site with Hugo Extended, and deploys the generated files to GitHub Pages. You do not need to run Hugo locally just to publish.\nThe blog\u0026rsquo;s source repository is cmduyeen.github.io on GitHub, and the live site is cmduyeen.github.io. Check the workflow run if a change does not appear; a successful Git push does not by itself prove that the build and deployment succeeded.\nAvoid common publishing surprises A post with draft: true is omitted from the normal production build. A file outside content/posts/ is not automatically an article. A change saved in Obsidian but not committed and pushed stays only on your computer. Obsidian plugins and wikilinks are not required; use ordinary Markdown for portable content. Keep secrets and private notes out of the public blog repository. Next: test the complete chain After deployment, the new post should appear on the home page, its tag page, and the RSS feed at /index.xml. In Part 3, we\u0026rsquo;ll use those outputs to test the profile README sync.\n","permalink":"https://cmduyeen.github.io/posts/obsidian-to-github-blog-02-publish-with-hugo/","summary":"\u003cp\u003eIn \u003ca href=\"/posts/obsidian-to-github-blog-01-publishable-vault/\"\u003ePart 1\u003c/a\u003e, we set up Obsidian to edit the blog\u0026rsquo;s Markdown source. Now we\u0026rsquo;ll publish a post and see how it reaches the live site.\u003c/p\u003e\n\u003ch2 id=\"save-the-note-in-hugos-content-folder\"\u003eSave the note in Hugo\u0026rsquo;s content folder\u003c/h2\u003e\n\u003cp\u003eCreate or edit a \u003ccode\u003e.md\u003c/code\u003e file in \u003ccode\u003econtent/posts/\u003c/code\u003e. A published article needs front matter with a title, date, \u003ccode\u003edraft: false\u003c/code\u003e, and any useful tags:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e---\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003etitle\u003c/span\u003e: \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;My first Obsidian post\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003edate\u003c/span\u003e: \u003cspan style=\"color:#e6db74\"\u003e2026-10-16T21:00:00\u003c/span\u003e\u003cspan style=\"color:#ae81ff\"\u003e+07\u003c/span\u003e:\u003cspan style=\"color:#ae81ff\"\u003e00\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003edraft\u003c/span\u003e: \u003cspan style=\"color:#66d9ef\"\u003efalse\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003etags\u003c/span\u003e: [\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;obsidian\u0026#34;\u003c/span\u003e, \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;first-post\u0026#34;\u003c/span\u003e]\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e---\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eWrite the article below the front matter using standard Markdown headings, paragraphs, lists, code fences, and links. A preview in Obsidian checks the Markdown formatting, but it does not fully reproduce the PaperMod theme; check the deployed page after publishing too.\u003c/p\u003e","title":"From Obsidian to GitHub Pages, Part 2: Publish Markdown with Hugo"},{"content":"This is the first post in a three-part series about writing in Obsidian and publishing to a Hugo blog on GitHub Pages. The goal is a small, transparent workflow: write plain Markdown, publish only the notes you choose, and let the existing site and profile automation do the rest.\nPart 1: Set up an Obsidian vault for public writing. Part 2: Publish Markdown with Hugo and GitHub Pages Part 3: Verify RSS and GitHub profile sync Why use Obsidian for blog drafts? Obsidian stores notes as ordinary Markdown files on your computer. That makes it a comfortable editor without locking the writing into a special export format. Hugo can turn those files into web pages, and GitHub Pages can host the generated site.\nFor this blog, the source files live in the content/posts/ directory of the cmduyeen.github.io repository. Opening the repository folder as an Obsidian vault lets you write directly where Hugo expects published posts.\nKeep the publishing boundary clear Treat content/posts/ as public. A note placed there and pushed to the main branch is eligible to appear on the website and in the RSS feed.\nKeep personal journals, rough ideas, credentials, and unpublished research in a separate vault or a folder outside the blog repository. The .obsidian/ application settings are ignored by Git, but that is not a privacy boundary for your writing: check which files you stage before every push.\nA simple structure is enough:\ncmduyeen.github.io/ ├── content/ │ ├── posts/ # public articles │ ├── archives.md │ └── search.md ├── themes/ └── .obsidian/ # local settings; ignored by Git You do not need an Obsidian publishing plugin for this workflow. Obsidian edits the Markdown; GitHub Actions handles the site build after you push.\nStart a post with Hugo front matter Hugo uses front matter at the top of each Markdown file for its title, publication date, draft status, and tags:\n--- title: \u0026#34;A useful note\u0026#34; date: 2026-10-16T21:00:00+07:00 draft: false tags: [\u0026#34;obsidian\u0026#34;, \u0026#34;workflow\u0026#34;] --- Create a file such as content/posts/my-useful-note.md and write the article below the closing ---. Keep draft: true while a post is not ready; switch it to false only when you intend to publish it. Use simple tags to make related posts discoverable on the blog.\nPrefer regular Markdown links such as [Part 2](/posts/obsidian-to-github-blog-02-publish-with-hugo/) for links between published posts. Obsidian\u0026rsquo;s [[wikilinks]] syntax is useful inside a vault, but Hugo does not automatically turn every wikilink into a website link.\nYour first check In Obsidian, create a new note under content/posts/, add the front matter, and save it. Then inspect the repository\u0026rsquo;s Git changes. The note should be the only writing file you intend to publish.\nIn Part 2, we\u0026rsquo;ll push that Markdown file and follow it through the automatic Hugo deployment.\n","permalink":"https://cmduyeen.github.io/posts/obsidian-to-github-blog-01-publishable-vault/","summary":"\u003cp\u003eThis is the first post in a three-part series about writing in Obsidian and publishing to a Hugo blog on GitHub Pages. The goal is a small, transparent workflow: write plain Markdown, publish only the notes you choose, and let the existing site and profile automation do the rest.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003ePart 1:\u003c/strong\u003e Set up an Obsidian vault for public writing.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/posts/obsidian-to-github-blog-02-publish-with-hugo/\"\u003ePart 2: Publish Markdown with Hugo and GitHub Pages\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/posts/obsidian-to-github-blog-03-test-rss-and-profile-sync/\"\u003ePart 3: Verify RSS and GitHub profile sync\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"why-use-obsidian-for-blog-drafts\"\u003eWhy use Obsidian for blog drafts?\u003c/h2\u003e\n\u003cp\u003eObsidian stores notes as ordinary Markdown files on your computer. That makes it a comfortable editor without locking the writing into a special export format. Hugo can turn those files into web pages, and GitHub Pages can host the generated site.\u003c/p\u003e","title":"From Obsidian to GitHub Pages, Part 1: Build a Publishable Vault"}]