Research: Obsidian Integration Patterns¶
Date: 2025-11-09 Researcher: Phase 5 Unit 1 Status: Complete Related: ADR-026
Overview¶
This research document explores Obsidian's core features and best practices for integration, focusing on wikilinks, tags, Dataview plugin capabilities, and Graph View requirements. The goal is to inform our Phase 5 implementation of deep Obsidian integration for Inkwell's podcast note generation.
1. Wikilinks - Internal Linking System¶
How Wikilinks Work¶
Obsidian uses wikilinks (double square brackets) as the primary internal linking mechanism:
[[Note Name]] # Basic link
[[Note Name|Display Text]] # Custom display text
[[Note Name#Heading]] # Link to heading
[[Note Name#^block-id]] # Link to specific block
Key Features¶
1. Autocomplete & Suggestions¶
- Type
[[and Obsidian suggests existing notes - Type
[[Note#to see headings in that note - Type
[[Note#^to see block references
2. Bidirectional Links¶
- Links automatically appear in both source and target notes
- Backlinks panel shows all notes linking to current note
- Creates automatic knowledge graph connections
3. Unlinked Mentions¶
- Obsidian detects mentions of note names without explicit links
- Shows potential connections for manual linking
- Reduces over-linking fatigue
Best Practices for Programmatic Wikilink Generation¶
✅ DO:¶
- Use wikilinks for entities with potential reuse
- People:
[[Cal Newport]] - Books:
[[Deep Work]] - Tools:
[[Obsidian]] -
Concepts that appear across episodes:
[[Zone of Genius]] -
Provide custom display text when helpful
[[Deep Work|Cal Newport's book on focus]]-
[[Tim Ferriss|Tim]]for readability in context -
Link to specific sections when relevant
[[Episode 287#Key Takeaways]]-
Enables precise cross-episode references
-
Use consistent naming conventions
- Books:
[[Book - Deep Work]]or[[Deep Work]] - People:
[[Person - Cal Newport]]or[[Cal Newport]] - Tools:
[[Tool - Notion]]or[[Notion]] - Consistency enables better graph connections
❌ DON'T:¶
- Over-link common words
- Avoid linking every mention of "work", "time", "productivity"
-
Reserve links for specific references
-
Create orphan links without context
- Every wikilink should have purpose
-
Consider: will user click this link?
-
Use markdown links when wikilinks are appropriate
- Wikilinks work better within Obsidian ecosystem
- Markdown links break backlinks and graph
Wikilinks vs. Markdown Links¶
| Feature | Wikilinks [[]] |
Markdown Links []() |
|---|---|---|
| Autocomplete | ✅ Yes | ❌ No |
| Backlinks | ✅ Yes | ❌ No |
| Graph View | ✅ Yes | ❌ No |
| Rename support | ✅ Yes | ❌ No |
| Plugin support | ✅ Excellent | ⚠️ Limited |
| Portability | ⚠️ Obsidian-specific | ✅ Universal |
| File paths | ✅ Automatic | ❌ Manual |
Recommendation for Inkwell: Use wikilinks exclusively for Obsidian integration. Users who need portability can use community plugins to convert wikilinks to markdown links.
2. Tag System - Organization & Categorization¶
Tag Syntax¶
Obsidian supports three tag formats:
#tag # Inline tag
#parent/child # Nested/hierarchical tag
#parent/child/grandchild # Multi-level hierarchy
---
tags: [tag1, tag2, parent/child] # YAML frontmatter
---
Hierarchical Tag Structure¶
Tags with forward slashes (/) create logical hierarchies:
#podcast/deep-questions
#podcast/huberman-lab
#topic/ai
#topic/productivity
#topic/ai/machine-learning
#topic/ai/llm
#person/cal-newport
#person/andrew-huberman
Tag Best Practices¶
✅ Effective Tag Strategies:¶
-
Use hierarchies for scalability
-
Balance specificity and utility
- Too broad:
#interesting(meaningless) - Too narrow:
#episode-287-discussed-on-tuesday(too specific) -
Just right:
#topic/deep-work,#theme/focus-strategies -
Use YAML frontmatter for metadata tags
Benefits: Cleaner markdown, easier to edit, Dataview-friendly -
Create tag naming conventions
- Lowercase only:
#ainot#AI - Hyphens for multi-word:
#deep-worknot#deep_workor#deepwork - Namespace prefixes:
#podcast/,#topic/,#person/
❌ Tag Anti-Patterns:¶
- Over-tagging
- Don't tag every possible concept
- More tags = more cognitive load
-
Focus on 3-7 meaningful tags per note
-
Inconsistent naming
#AI,#ai,#artificial-intelligenceall different-
Pick one convention and stick to it
-
Meaningless tags
#important,#todo,#interestingwithout context- Use more specific tags
Tag Wrangler Plugin¶
Key capabilities: - Visual tag hierarchy browser - Rename tags across vault - Merge duplicate tags - Navigate tag relationships
Recommendation: Essential for managing large tag systems programmatically.
3. Dataview Plugin - Querying Metadata¶
What is Dataview?¶
Dataview treats your Obsidian vault as a queryable database, enabling SQL-like queries over markdown files and their metadata.
Repository: https://github.com/blacksmithgu/obsidian-dataview Adoption: One of the most popular Obsidian plugins (~1M downloads)
Metadata Sources¶
Dataview can query:
-
YAML Frontmatter (explicit metadata)
-
Inline Fields (within content)
-
Implicit Fields (automatically available)
file.name- File namefile.path- File pathfile.link- File as linkfile.size- File sizefile.ctime- Creation timefile.mtime- Modified timefile.tags- All tagsfile.inlinks- Backlinksfile.outlinks- Outgoing links
Query Language¶
LIST Query¶
TABLE Query¶
TABLE podcast, episode, duration, rating
FROM #podcast
WHERE date >= date(2025-01-01)
SORT rating DESC, date DESC
TASK Query¶
CALENDAR Query¶
Frontmatter Best Practices for Dataview¶
✅ Dataview-Friendly Design:¶
-
Use consistent field names
-
Use appropriate data types
# Dates date: 2025-11-09 # YYYY-MM-DD format # Numbers duration: 3600 # Integer (seconds) rating: 5 # Integer (1-5) cost_total: 0.45 # Float # Booleans actionable: true # Boolean interview_conducted: false # Boolean # Lists topics: [ai, productivity, focus] # List # Links guest: [[Cal Newport]] # Wikilink in frontmatter -
Create queryable categories
-
Add custom calculation fields
Example Dataview Queries for Inkwell¶
Most Expensive Episodes¶
Actionable Episodes Not Yet Reviewed¶
Episodes by Podcast, Grouped¶
Interview Completion Rate¶
TABLE
length(rows) AS "Total Episodes",
length(filter(rows, (r) => r.interview_conducted = true)) AS "Interviewed",
round(length(filter(rows, (r) => r.interview_conducted = true)) / length(rows) * 100) + "%" AS "Rate"
FROM #podcast
GROUP BY podcast
Episodes with High Ratings¶
Multi-Value Fields & Complex Queries¶
Nested Frontmatter¶
Query nested fields:
List Containment¶
Query lists:
4. Graph View - Visual Knowledge Networks¶
How Graph View Works¶
Obsidian's Graph View visualizes your vault as a network: - Nodes = Notes - Edges = Links (wikilinks only) - Color coding by tags, folders, or custom rules - Zoom, pan, filter capabilities
Requirements for Good Graph Visualization¶
1. Meaningful Links¶
- Links should represent genuine relationships
- Avoid linking every mention (creates noise)
- Focus on cross-references that add value
2. Consistent Note Structure¶
- Similar notes (e.g., all podcast episodes) should link consistently
- Creates recognizable patterns in graph
3. Hub Notes¶
- Central index notes that link to many related notes
- Example:
[[Podcast - Deep Questions - Index]]links to all episodes - Creates clear visual hierarchy
Inkwell Graph View Strategy¶
Episode-to-Episode Linking¶
## Related Episodes
This episode builds on ideas from:
- [[Episode 285 - On Deep Work]]
- [[Episode 280 - Managing Attention]]
See also discussions of similar themes in:
- [[Episode 250 - Zone of Genius]]
Topic-Based Clustering¶
## Key Topics
This episode covered:
- [[Topic - Artificial Intelligence]]
- [[Topic - Productivity Systems]]
- [[Topic - Knowledge Management]]
Entity Linking¶
## People Mentioned
- [[Cal Newport]] (host)
- [[Andrew Huberman]] (referenced)
- [[Tim Ferriss]] (mentioned book)
## Books Discussed
- [[Book - Deep Work]]
- [[Book - Slow Productivity]]
Result: Creates visual clusters in Graph View: - All episodes cluster around their podcast - Episodes discussing similar topics cluster together - Entity nodes (people, books) connect episodes across podcasts
5. Popular Obsidian Plugins for Consideration¶
Templater¶
Purpose: Advanced template system with JavaScript support Relevance: Could inspire our own template system enhancements
Dataview (covered above)¶
Purpose: Query engine for vault Relevance: Primary reason for our frontmatter design
Tag Wrangler¶
Purpose: Tag management and refactoring Relevance: Users will need this for large tag systems
Excalidraw¶
Purpose: Diagrams and sketches Relevance: Not directly relevant, but popular for visual thinkers
Tasks¶
Purpose: Task management with checkboxes Relevance: Could enhance our action items from interviews
Calendar¶
Purpose: Calendar view of daily notes Relevance: Could visualize podcast listening timeline
6. Key Findings & Recommendations¶
Findings¶
- Wikilinks are essential
- Core to Obsidian's value proposition
- Enable backlinks, graph view, and navigation
-
Must use
[[]]format, not markdown links -
Hierarchical tags scale better
- Flat tags become overwhelming at scale
- Use namespace prefixes:
#podcast/,#topic/,#person/ -
YAML frontmatter preferred over inline tags
-
Dataview demands consistent frontmatter
- Field names must be consistent across notes
- Data types matter (dates, booleans, numbers)
-
Lists and nested structures are supported
-
Graph View requires intentional linking
- Too many links = noise
- Too few links = isolation
- Focus on meaningful cross-references
Recommendations for Inkwell¶
Wikilinks¶
- ✅ Auto-generate wikilinks for: people, books, tools, concepts
- ✅ Use consistent naming: prefer simple
[[Name]]over prefixes - ✅ Link cross-episode references
- ✅ Provide custom display text when context demands
Tags¶
- ✅ Use hierarchical structure:
#podcast/show-name - ✅ Limit to 5-7 tags per note
- ✅ Store in YAML frontmatter, not inline
- ✅ Support custom tag rules per podcast feed
Dataview¶
- ✅ Design frontmatter schema for queryability
- ✅ Include: type, podcast, episode, date, duration, rating, status
- ✅ Add cost fields for tracking
- ✅ Use appropriate data types
Graph View¶
- ✅ Link episodes to topics, people, books
- ✅ Create episode-to-episode references
- ✅ Consider hub notes for each podcast
7. Implementation Priority¶
High Priority (Must Have)¶
- Wikilink generation for entities
- Hierarchical tags in frontmatter
- Dataview-compatible frontmatter with consistent fields
Medium Priority (Should Have)¶
- Cross-episode references
- Custom display text for wikilinks
- Topic and concept linking
Low Priority (Nice to Have)¶
- Hub note generation
- Advanced graph view optimization
- Plugin-specific enhancements
8. References¶
- Obsidian Help - Internal Links
- Obsidian Help - Tags
- Dataview Plugin Documentation
- Obsidian Forum - Nested Tags Discussion
- AWS Builders Library - Backoff with Jitter
Next Steps¶
- Design Obsidian integration architecture (see ADR-026)
- Implement wikilink extraction system (Phase 5 Unit 3)
- Implement tag generation system (Phase 5 Unit 4)
- Implement Dataview frontmatter (Phase 5 Unit 5)
Document Version: 1.0 Last Updated: 2025-11-09 Status: Complete