BibTeX → Markdown note generator
This tool takes entries from a .bib file and automatically generates Markdown files with YAML-style frontmatter. Each file is named after the BibTeX citation key and filled with metadata such as title, year, and institution.
It’s especially handy for building research or whitepaper databases in tools like Obsidian.
-
Converts each BibTeX entry into a Markdown file
-
Automatically fills in frontmatter fields from BibTeX:
- Paper title → from
title - Company → from
institution - Year → from
year - Date created / modified → today’s date
- Paper title → from
-
One file per citation key (e.g.
Smith2023_6GSecurity.md) -
Works with your own
template.mdso you control the file layout -
Outputs to a
papers/directory
@techreport{Smith2023_6GSecurity,
type = {White Paper},
title = {Securing the Path to 6G: Challenges and Opportunities},
author = {John Smith and Alice Johnson},
year = {2023},
month = sep,
institution = {Future Networks Alliance}
}---
title:
date created: 2025-09-24
date modified: 2025-09-24
Paper title: Securing the Path to 6G: Challenges and Opportunities
Company: Future Networks Alliance
year: 2023
tags:
- telecom-database/whitepaper
---git clone https://github.com/yourusername/bib2md.git
cd bib2mdpython3 -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows (PowerShell)Install directly:
pip install bibtexparserOr use the provided requirements.txt:
pip install -r requirements.txt
requirements.txtcontains just:bibtexparser
references.bib→ your BibTeX filetemplate.md→ your Markdown template
python3 bib2md.pyMarkdown files will appear in the papers/ directory.
You can modify how the script works:
-
Template fields
Edittemplate.mdto add/remove frontmatter fields. The script looks for placeholders likePaper title:,Company:,year:etc.
See the full list of supported fields. -
Fallbacks
Add fallback logic for missing fields (e.g. useauthorifinstitutionisn’t present). -
Output folder
Change:OUTPUT_DIR = Path("papers")
to any path you prefer.
-
Extra fields
To include more BibTeX fields (likeauthor,journal,doi), just add lines to the script:doi = entry.get("doi", "") content = content.replace("DOI:", f"DOI: {doi}")
-
Obsidian tags
You can expand the YAMLtags:section to automatically add categories.
This project is licensed under the GNU General Public License (GPL). See the LICENSE file for details.