Using blogdown with an existing Hugo site

If you decide you want to use R in your existing Hugo blog, it’s really easy to convert over. There’s a single command you need to know from blogdown and the rest is working out your deployment process.

To create content, use the blogdown Rstudio add-in to quickly get started. This niftily reads all tags and categories from past posts to help you get going.

You can then write Rmarkdown as usual. The workflow differs in that, instead of hitting the Knit button or using rmarkdown::render(), you use blogdown::build_site() instead.


This will process all your .Rmd and .md files and run the hugo command. This works in place of hugo so you will need to alter your deployment process to just pick up from the public/ directory instead of running Hugo.

You can then publish the content from the public/ directory.

Converting your existing Hugo site to blogdown is actually super simple - it’s literally one command, blogdown::build_site(). The bit that will take some work is changing your deployment workflow.

Using blogdown in a CI/CD environment

If you want to use some sort of automated build, you can use travis to run the build_site() and commit changes the public/ dir changes. If you do this, don’t forget to include [ci skip] at the beginning of your commit message to avoid an infinite loop of builds.

Once you have the files automatically building, you can then deploy using something like netlify and simply remove the build command as it’ll only need to retrieve the content from the public/ directory.

Check out how this project does it for an approach that updates the GitHub repo, or check out Yihui’s example for a direct GitHub Pages deployment approach.