Skip to content

Repository configuration

Some actions needs a GH_PAT secret in your repository settings. This token should have the repo and workflows scope. You can create a token here.

See here to know how to register it as a secret.

If you set security on your main branch, you need to add two more secrets:


You need to update the workflow like this:

# it is an example, please, replace the [...] with the following information.
# Keeps everything as before, just add the two secrets at the end of the file, under `secrets`.
      AUTHOR_NAME: ${{ secrets.AUTHOR_NAME }}
      AUTHOR_EMAIL: ${{ secrets.AUTHOR_EMAIL }}


If you want to use the Advanced Vercel/Netlify Workflow, you needs to configure more secrets keys.
You can get more information here.

Mkdocs configuration

You need to configure the plugin and the mkdocs configuration for it to work properly.

You can find more information about creating the site using the Material Mkdocs Documentation.

In the repository that you cloned, you will find a mkdocs.yml file. This file allows you to customize your blog. The most important settings to edit are:

  1. site_name
  2. site_description
  3. site_url (critical): By default, it’s[^1]

To edit the logo and favicon, first put the chosen files in the assets/logo directory, and then change logo and favicon:

  1. logo: assets/meta/logo_name.png
  2. favicon: assets/meta/favicon.png
  3. To properly work with SEO, also edit the extra with SEO: 'assets/meta/LOGO_SEO.png'

You can also customize:

  • Font
  • Color scheme, palette, and icons
  • Language

Check the documentation for more information

You don’t need to touch anything in features or markdown_extensions.

Extra configuration

The last part of the mkdocs.yml is a configuration for the hooks and the template Jinja displaying the list of articles (blog_list.html).

There are also :

  • SEO (string): Link to your default image displayed by the SEO.
  • comments (boolean) : Allow the comments block at the end of the page
  • generate_graph (boolean): Generate the graph view
  • attachments (boolean): For configuration and image in SEO. Change it according to your Obsidian Plugin settings.

Blog list (article listing)

The list of articles is configured by the key blog_list and can take the following parameters :

  • pagination (boolean, default: True): Display a pagination if the list is too long.
  • pagination_message (boolean, default: True): Display a message with the number of posts (article/file) in the folder.
  • pagination_translation (string, default: 'posts in'): Translation of the pagination’s message.
  • no_page_found (string, default: "No pages found!"): The text to display if no pages were found.


This part contains the configuration of hooks, short python scripts that allow to patch some Obsidian parts incompatible with Mkdocs.

You can configure :

  • The suppression of the Obsidian’s comments (`):strip_comments: true`
  • A fix for headings, which adds a # to all headings (except the 6th one) because the Mkdocs TOC considers that the H1 is the main heading/title of the file: fix_heading: true

Local testing

To run the blog locally, you need to install the requirements and run mkdocs serve.

cd publish_blog pip install -r requirements.txt mkdocs serve

A tip: You can use a conda environment here (or a venv, but I prefer conda). Just use this command:

conda create -n Publisher python=3.11
conda activate Publisher

Run this command just before running pip install.