BibLib

by Callum Alpass
5
4
3
2
1
Score: 36/100

Description

The BibLib plugin transforms your note vault into a comprehensive academic reference manager by representing each bibliographic entry as a Markdown file with CSL-JSON metadata stored in the YAML frontmatter. It integrates seamlessly with Zotero for one-click importing, supports DOI/ISBN lookups, and manages attachments like PDFs within your vault. Researchers can customize citekey generation, templates, and export citations as BibTeX or CSL-JSON for tools like Pandoc.

Reviews

No reviews yet.

Stats

77
stars
6,399
downloads
6
forks
359
days
88
days
130
days
3
total PRs
1
open PRs
1
closed PRs
1
merged PRs
25
total issues
17
open issues
8
closed issues
0
commits

Latest Version

4 months ago

Changelog

Biblib 1.8.0

Added

  • (#12) Multiple tags support: The "Literature note tag" setting now supports multiple comma or space-separated tags (e.g., "literature_note, excalidraw"). All specified tags are added to new literature notes, enabling workflows like Excalidraw flip notes.
    • Thanks to @bepolymathe for the feature request
  • Testing infrastructure: Jest testing framework with initial test suites for citekey generator and template engine
  • Expanded test coverage: Added 127 new tests across 5 test files (190 total tests), covering yaml-utils, citoid service, and template-variable-builder-service
  • Integration tests for citation mapping: Added 46 integration tests covering the complete Zotero-to-CSL mapping workflow, including all item types and edge cases
  • End-to-end testing: Playwright-based e2e tests that run against a real Obsidian instance
    • Tests command palette integration, modal workflows, and DOI lookup
    • Automated screenshots captured at key points for visual verification
    • Linux support via CDP connection to unpacked AppImage
  • New template variable authorsDisplay: Formatted author string for display (e.g., "J. Smith", "J. Smith and B. Jones", "J. Smith et al.")
  • (#21) Citation-js fallback for Citoid service: When Citoid (Wikipedia's citation API) lacks coverage for certain items (e.g., some ISBNs no longer available via WorldCat), the plugin now falls back to citation-js using Google APIs
    • Thanks to @platon-ivanov for this contribution
  • (#21) Additional identifier support: PubMed IDs, PMC IDs, and Wikidata QIDs are now supported via the citation-js fallback
    • Thanks to @platon-ivanov for this contribution
  • Comprehensive JSDoc documentation throughout the codebase

Changed

  • Simplified literature note modal UI: Cleaner design using Obsidian's default styling
    • Collapsible auto-fill section uses native <details> element
    • Single date input accepts flexible formats (YYYY, YYYY-MM, or YYYY-MM-DD)
    • Attachment UI simplified to two buttons: "Import file" and "Link file"
    • Form fields stack vertically for consistent input widths
  • Reduced CSS footprint: styles.css reduced from ~1500 to ~750 lines by using Obsidian defaults
  • Improved MetadataCache usage patterns
  • Enhanced error handling and validation in citoid service

Fixed

  • (#18) Filename template: author variables now work - The {{authors}}, {{author}}, {{authors_family}}, and {{authors_given}} template variables now work in filename templates. Previously these variables were not populated when generating literature note filenames.
  • Template engine: trailing whitespace preserved in formatter arguments - Formatters like join, prefix, and split now correctly preserve trailing whitespace (e.g., {{authors|join: and }} produces "Smith and Jones" instead of "SmithandJones")
  • (#11) Template engine: object property access in array iteration - When iterating over arrays of objects, properties are now directly accessible (e.g., {{#authors}}{{family}}{{/authors}} works correctly)
    • Thanks to @bepolymathe for reporting
  • (#16) Documentation fixes: Fixed broken links and aligned documentation with actual plugin UI
    • Fixed 404 errors for Templating, Key Features, and Troubleshooting pages
    • Updated Settings documentation to match the actual tab names and order in the plugin
    • Section names now match the UI: "File Organization", "Templates", "Citation Keys", "Custom Fields", "Modal Configuration", "Zotero Integration", "Bibliography Export"
    • Thanks to @chenghuang-coder for reporting

README file from

Github

BibLib for Obsidian

BibLib is an Obsidian plugin for managing bibliographic references. Each reference is stored as a Markdown note with metadata in YAML frontmatter using the CSL-JSON format. There is no database — references are plain text files in your vault, editable with any text editor and compatible with Git.

Looking for a command-line workflow? See biblib-cli.

[!NOTE] For detailed documentation, see the docs site

Screenshot of biblib Obsidian plugin

Overview

References are stored as Markdown files with CSL-JSON metadata in YAML frontmatter. Because they are ordinary Obsidian notes, they can be linked, tagged, searched, and organized like any other note in your vault.

Metadata can be fetched automatically via DOI, ISBN, PubMed ID, arXiv ID, or URL. The Zotero browser connector can send references directly to Obsidian (desktop only). Bibliography files can be exported in CSL-JSON or BibTeX format for use with Pandoc.

Installation

  1. Open Obsidian Settings > Community Plugins
  2. Search for "BibLib"
  3. Install and enable the plugin

Basic Usage

Creating a Reference

  1. Open command palette (Ctrl/Cmd + P)
  2. Run "BibLib: Create Literature Note"
  3. Either fill in fields manually or use "Lookup" with a DOI/ISBN/URL
  4. Click "Create Note"

Importing from Browser

  1. Enable the Zotero Connector in settings (requires closing Zotero desktop app)
  2. Click the Zotero browser extension on any webpage
  3. BibLib opens a modal with the reference data pre-filled

Generating Bibliography Files

Run "BibLib: Build bibliography" to create bibliography.json (CSL-JSON) or "BibLib: Export bibliography as BibTeX" to create bibliography.bib. These files can be used with Pandoc for citation formatting.

Data Format

BibLib stores reference metadata in YAML frontmatter using CSL-JSON structure:

---
id: smith2023
type: article-journal
title: Example Article Title
author:
  - family: Smith
    given: Alice
  - family: Jones
    given: Bob
container-title: Journal of Examples
issued:
  date-parts:
    - [2023, 6, 15]
DOI: 10.1234/example
tags:
  - literature_note
---

[!NOTE] Obsidian's Properties panel may show warnings for nested YAML fields like author arrays. This is a display limitation in Obsidian's metadata parser — the data is stored correctly and works with external tools.

Settings

File Organization

  • Attachment folder: Where PDFs are stored
  • Literature note location: Where reference notes are created
  • Filename template: Pattern for filenames (e.g., @{{citekey}})

Templates

  • Note content template: Structure for new notes
  • Custom frontmatter fields: Additional YAML fields with templated values
  • Citekey template: Pattern for generating citekeys (e.g., {{authors_family.0|lowercase}}{{year}})

Zotero Connector (Desktop Only)

  • Port: Default 23119 (same as Zotero)
  • Requires Zotero desktop app to be closed

Bibliography Export

  • bibliography.json path: Location for CSL-JSON output
  • bibliography.bib path: Location for BibTeX output

Template Syntax

BibLib uses Handlebars-style templates:

  • Variables: {{title}}, {{year}}, {{DOI}}
  • Nested access: {{author.0.family}}
  • Formatters: {{title|lowercase}}, {{authors_family.0|abbr3}}
  • Conditionals: {{#DOI}}Has DOI{{/DOI}}

Citekey Rules

Generated citekeys follow Pandoc conventions:

  • Must start with letter, digit, or underscore
  • Can contain alphanumerics and :.#$%&-+?<>~/

License

MIT

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.