########################################################################## # PATHS # ########################################################################## # The note that will be used as the index.html # should be in obsidian_folder_path_str # Can be absent when toggles/compile_md == False # Use full path or relative path, but don't use ~/ obsidian_entrypoint_path_str: './' # Input and output path of markdown files # This can be an absolute or a relative path (relative to the working directory when calling obsidianhtml) # Use full path or relative path, but don't use ~/ md_folder_path_str: 'output/md' # Markdown entrypoint path # This has to be md_folder_path_str + '/index.md' when toggles/compile_md == True # This can be an absolute or a relative path (relative to the working directory when calling obsidianhtml) # Use full path or relative path, but don't use ~/ md_entrypoint_path_str: 'output/md/index.md' # Output path of HTML files # This can be an absolute or a relative path (relative to the working directory when calling obsidianhtml) # Use full path or relative path, but don't use ~/ html_output_folder_path_str: 'output/html' module_data_folder: 'output/mod' ########################################################################## # GLOBAL # ########################################################################## # verbosity_ranks = { # "quiet": 0, # "error": 10, # "warning": 15, # "deprecation": 20, # "info": 30, # "debug": 100, # } verbosity: info ########################################################################## # MODULES # ########################################################################## module_list: preparation: # - name: set_subfolder # description: Overwrites html_url_prefix and related settings if --subfolder is provided in the commandline - name: process_config description: Merges the user config with default config and runs checks. - name: load_paths description: Determine all paths of interest based on input. - name: process_config_auto description: Fills in auto values that can be read from the vault config. - name: html_templater description: Prepare and export templates used to create html output. persistent: True - name: load_graphers persistent: True - name: get_file_list description: - Basic file listing based on include_folder/exclude_glob combination - Further filtering can be done in further modules - name: parse_metadata description: - Gets the metadata of each markdown file, and stores it under metadata/.json - name: filter_on_metadata description: - Filter out markdown files that do not comply to certain metadata requirements - name: copy_vault_to_tempdirectory description: - Copy vault to temporary directory, so that we can edit the obsidian notes themselves safely. - Must be persistent! persistent: True - name: prepare_output_folders description: - Ensures the output folders are created - Optionally removes previous output if it exists in the target directories # - name: hydrate_file_list # description: # - Read and parse the selected files, then create a dict with info such as rel_path, full_path, html_rel_path, etc convert_note_to_markdown: [] convert_markdown_to_html: [] finalize: - name: resource_logger description: - Creates the log of which module resources were accessed by which module - Requires persistent meta_module of the same name to work! persistent: True method: finalize meta_modules_post: - name: resource_logger persistent: True # Will create an extra file under module_data_folder/versions/ with timestamp and module name # for each module file written with the self.modfile(...).write() method. # Used for debugging purposes. keep_module_file_versions: False # Use the name of the module as a key in the dict below # For accurate configuration settings, consult the spec of the module in question. # Defaults of the modules are shown in the commented blocks module_config: get_file_list: include_glob: value: '*' exclude_glob: value: - ".obsidian/**/*" - ".trash/**/*" - ".DS_Store/**/*" - ".git/**/*" # prepare_output_folders: # clean_existing: # description: Files that exist in the output folders are deleted. # value: True # fail_on_existing: # description: # - Exit with error if output folders are not empty. # - Does nothing if clean_existing = True! # value: False # filter_on_metadata: # include_on: # description: What metadata to include notes on. Empty list means True by default. # value: [[]] # exclude_on: # description: What metadata to exclude on. Empty list means False by default # value: [[]] ########################################################################## # OPERATIONS # ########################################################################## # When not an empty list, this setting will restrict the subfolders # of the vault that will be included. This allows you to ensure that # only those folders are included in the output. Links pointing to notes # outside of the included folders will be treated as non-existent. # Note that the obsidian_entrypoint_path_str needs to be in one of these folders. # Paths should be relative to the vault root. included_folders: [] # Exclude glob # The paths are relative to obsidian_folder_path_str # - Start with slash to target specific folder: /subfolder # - Target any folder with name "subfolder": subfolder # Glob patterns supported for copy_vault_to_tempdir_method: shutil, shutil_walk, and for rsync for as far as rsync supports it natively # When turning off copy_vault_to_tempdir, glob patterns are fully supported. # Rules are case sensitive if your filesystem is. exclude_glob: - "/.obsidian" - "/.trash" - "/.DS_Store" - "/.git" # Deprecated for exclude_glob exclude_subfolders: '' # Number of links a note can be removed from the entrypoint note # -1 for no max depth # 0 means only the entrypoint note is processed # 1 means only direct children are processed (and the entrypoint of course) # and so forth. NOTE: DOES NOT APPLY TO INCLUSIONS! max_note_depth: -1 # =============================== COPY VAULT SETTINGS ============================ # Safety feature: make a copy of the provided vault, and operate on that, so that bugs are less likely to affect the vault data. # Should be fine to turn off if copying the vault takes too long / disk space is too limited. # The tempdir is automatically removed on exit of the program. copy_vault_to_tempdir: True # Determines the function to use to copy your vault over to the tempdir. # `default` will try to use rsync if it is installed, and otherwise use `shutil` # `rsync` will do the same, but give a warning when it falls back to shutil # `shutil` will just use shutil to copy. Use this when rsync is installed but is giving problems. # `shutil_walk` will walk the directory tree manually, and call the copy function for each branch. This has been seen to work better on Macs in some cases. copy_vault_to_tempdir_method: default # Enable to print the files being copied copy_vault_to_tempdir_follow_copy: false # =============================== /COPY VAULT SETTINGS ============================ # ObsidianHtml needs to be able to discern between included notes and included files, because included files # need to be treated differently. This is a configurable setting because we might've missed certain suffixes # of files that are includable. included_file_suffixes: ['jpg', 'jpeg', 'gif', 'png', 'bmp', 'svg', 'mp4', 'webm', 'ogv', 'mov', 'mkv', 'mp3', 'wav', 'm4a', 'ogg', '3gp', 'flac', 'pdf'] video_format_suffixes: ['mp4', 'webm', 'ogv', 'mov', 'mkv'] audio_format_suffixes: ['mp3', 'webm', 'wav', 'm4a', 'ogg', '3gp', 'flac'] # files that should be included via an tag: embeddable_file_suffixes: ['pdf'] # How to populate non-Markdown files in the output directory. # Note that hard links do not work cross-filesystem, and some environments may need administrative rights to create links. # Hard links are also more prone to data loss due to the sharing of inodes. `symlink` is a good safe bet, if your environment works with it. # If you store your vault in a Git repository, you will need to modify `core.symlinks` in your gitconfig or else only the links will be committed; see `man git-config`. # `default` is `copy` for backwards compatibility to avoid breaking configurations. # `copy` simply copies the files from the input folder to the output. # `symlink` creates a symbolic link, or soft link, that points to the input file. # `hardlink` creates a hard link copy_output_file_method: default # If links should be fully resolved before linking. # This is useful on filesystems that do not allow symlinks of symlinks, or where these nested links can affect permissions, like on some BSDs. resolve_output_file_links: true # Used to strip the http url hostpart of a link to get a relative link # e.g. for value "https://git.com/user/repo/-/wikis/mywiki/" then: # "https://git.com/user/repo/-/wikis/mywiki/folder/markdown.md" --> /folder/markdown.md md_source_host_urls: [] ########################################################################## # HTML OUTPUT # ########################################################################## # Will be inputted into the Html template as page title # Not used anywhere else atm. site_name: 'Obsidian-Html/Notes' # Use when deploying to https://mydomain.com/html_prefix/ instead of https://mydomain.com/ # use '/html_prefix' (prepend slash, no slash at the end) html_url_prefix: '' # Provide the fullpath to a template file to use instead of standard template. # Note that this file must contain at least "{content}" somewhere in the page. html_template_path_str: '' # Provide an array of custom inclusions (css, javascript, etc) that you would like to be included in the resultant html html_custom_inclusions: [] html_custom_footer_inclusions: [] navbar_links: [] file_exports: [] # file_exports: # - encoding: binary # src: Resources/Includes/favicon.ico # dst: favicon.ico # - src: Resources/Includes/christmas_snowflakes.js # dst: obs.html/static/christmas_snowflakes.js ########################################################################## # OPTIONAL BEHAVIOR / FEATURES # ########################################################################## toggles: stdout_current_file: False # Opt-in/-out of Obsidian->Md conversion, set to False when using proper markdown as input compile_md: True # Opt-in/-out of Md->Html conversion, set to False when only wanting to get proper markdown from Obsidian compile_html: True # For compatibility with vaults/notes that have the 'Strict Line Breaks' option enabled # This is off by default in Obsidian; setting it to True will not insert
tags into multi-line paragraphs # Can be true, false, or "auto". The latter will read the vault's app.json for the value. strict_line_breaks: auto # gitlab is case insensitive, this setting should be true when converting a wiki from that source # might also be useful if you have markdown links in your vault # note that this does not impact the output, Hello.md will be written to Hello.html force_filename_to_lowercase: True # Slugify all HTML links. Note this will affect most internal uses of filename as well, like when matching # against exclusion lists. slugify_html_links: False # If this is false only the entrypoint and all its links (recursively) are processed # if true all the notes will be processed process_all: False # Can be overwritten ad-hoc by using "obsidianhtml -i config.yml -v" (the -v option) verbose_printout: False # deprecated for verbose debug_filetree_keys: False # This option should be False for Obsidian->Md, but can be True when compile_md == False # Setting it to True will cause an error when two files with the same file name are found anywhere in the input folder allow_duplicate_filenames_in_root: True # Sometimes linked images that should be local (based on the path) cannot be found. # Toggle this to False to disable warnings if that happens. warn_on_skipped_image: True warn_on_skipped_file: True # This will skip emptying output folders, if you want to implement this yourself no_clean: False # Whether the markdown interpreter assumes relative path when no / at the beginning of a link relative_path_md: True # Whether the html paths will be relative. # Note: This is only useful if you want to open the html locally on your machine without using a webserver # and is generally not advised. This will also disable all features that need a webserver to function # such as the graph view. relative_path_html: False # Whether external http anchor links should have a target of "_blank" external_blank: False # If alt text is specified, place it in a figure caption under the image. img_alt_text_use_figure: True # Will preserve inline tags. This will give polluted markdown output preserve_inline_tags: True # Will wrap inclusions with
{content}
wrap_inclusions: False features: styling: layout: documentation # documentation, tabs, minimal header_template: full # currently only supported for documentation layout max_note_width: 120rem # not supported for layout: tabs add_toc: '' # add "[TOC]" (Table of Contents) when missing toc_pane: '' # removes table of contents from the note and puts it in the right pane (not supported for layout:tabs) flip_panes: '' # switch right and left pane around. (does nothing unless in documentation layout.) add_dir_list: True # show directory contents in one of the panes (only documentation layout) accent_color: '65, 76, 253' loading_bg_color: '22, 22, 22' theme_picker: enabled: True styling: show_icon: True smiles: enabled: False theme: dark # dark, light, oldschool, oldschool-dark, solarized, solarized-dark, matrix, github, carbon, cyberpunk, gruvbox, gruvbox-dark width: "100%" # XXX%, XXXpx, XXX height: "300px" # XXX%, XXXpx, XXX code_highlight: enabled: True mermaid_diagrams: enabled: True strip_special_chars: False callouts: enabled: True math_latex: enabled: True backlinks: # Show backlinks at the bottom of each note enabled: True embedded_note_titles: enabled: True hide_on_h1: True # don't add embedded title if the note starts with an h1 search: enabled: True add_files: True try_preload: False # on page refresh, if search_data is stored in localStorage, it will init search, instead of waiting for the search panel to be opened. styling: show_icon: True embedded_search: enabled: False tags_page: enabled: True styling: show_icon: True show_in_note_footer: True dataview: enabled: False folder: 'obs.html/export' # relative to the vault being processed. this folder should always be in the vault folder_notes: enabled: False placement: 'outside folder' # 'inside folder' , 'outside folder' naming: 'folder name' # 'folder name', 'index', 'aurkibidea', 'etc' eraser: enabled: True breadcrumbs: enabled: False # Include code to build the graph view per page graph: enabled: True # Include code to build the graph view per page (default: True) templates: - id: 2d name: 2d path: builtin<2d> - id: 3d name: 3d path: builtin<3d> styling: show_icon: True coalesce_force: '-30' show_inclusions_in_graph: True rss: enabled: False host_root: 'https://localhost:8000/' styling: show_icon: True channel: title: 'Notes' website_link: '' description: '' language_code: 'en-us' managing_editor: 'n/a' web_master: 'n/a' items: selector: match_keys: [] exclude_keys: [] include_subfolders: [] exclude_subfolders: ['.git','obs.html'] exclude_files: ['not_created.html', 'index.html'] description: selectors: - ['yaml','rss:description'] - ['first-paragraphs', 2, '

'] - ['first-header', 1] title: selectors: - ['yaml','rss:title'] - ['first-header', 1] - ['path', ['parent',1], '/', ['stem']] publish_date: selectors: - ['yaml','rss:publish_date'] - ['yaml_strip','tags',['date/']] iso_formatted: True format_string: '' #'%Y-%m-%d' default_value: '' create_index_from_dir_structure: enabled: True verbose: False rel_output_path: 'obs.html/dir_index.html' styling: show_icon: True exclude_subfolders: - ".git" - "__src" - "md" - "obs.html" exclude_files: - ".gitignore" - "favicon.ico" - "not_created.html" homepage_label: "index" # Create a markdown file with links to notes that have one of the given tags. create_index_from_tags: enabled: False verbose: False rel_output_path: 'obs.html/tag_index.md' homepage_label: "index" use_as_homepage: False add_links_in_graph_tree: True tags: [] match_on_inline_tags: False styling: include_folder_in_link: False sort: method: 'none' # ! created_time not available on Linux! key_path: '' # empty for top level, use ':' to go down multiple levels value_prefix: '' # in case of multiple values under key_path, match on this prefix, and then remove prefix reverse: false # false/true reverses output none_on_bottom: true # will put notes at the bottom that do not have the sort key, otherwise at the top exclude_paths: # don't included these paths in the dir list - ".gitignore" table_of_contents: add_toc_when_missing: False # add "[TOC]" (Table of Contents) when missing only_show_for_multiple_headers: True # if there is only one header, don't show the TOC side_pane: # only valid for documentation layout left_pane: enabled: True close_if_empty: False width: 20rem contents: dir_tree # relevant features should be enabled and configured see docs content_args: rel_path: 'index.html' # used for html_page div_selector: '.content' # used for html_page strip_sub_divs: # used for html_page - '.toc' strip_tags: [] # used for tag_tree right_pane: enabled: True close_if_empty: True width: 16rem contents: toc # relevant features should be enabled and configured see docs content_args: # used for html_page rel_path: 'index.html' div_selector: '.content' strip_sub_divs: - '.toc' footnote_md_extension: enabled: True post_processing: [] # post_processing: # - module: md_markdown_callouts