Step 1: Identify Input Type
Determine what the user provided:
| Input | Detection | Handling |
|---|---|---|
| File path | Ends in .pdf, .txt, .md, .html, or is a valid file path |
Read the file |
| URL | Starts with http:// or https:// |
Fetch and extract content |
| Raw text | Everything else | Use directly |
If no input was provided, prompt: "What would you like to ingest? Provide a file path, URL, or paste the text."
Step 2: Extract Raw Content
For PDF files
- Read the PDF content
- Extract text, preserving structure (headings, lists, paragraphs)
- Note any images or diagrams that cannot be extracted (mention them in the output)
For URLs
- Fetch the page content
- Extract the main article/content body (strip navigation, ads, footers)
- Capture the title, author, publication date if available
- Save the source URL for attribution
For raw text
- Use the text as-is
- Attempt to identify structure (headings, lists, paragraphs)
Step 3: Understand Salience
Ask the user what matters about this content before processing:
I have the content loaded. Before I extract key points, help me understand what is salient for you:
1. What is your goal with this content? (learning, reference, decision-making, project context)
2. Any specific sections or topics you care about most?
3. How detailed should the extraction be? (high-level summary / key points / detailed notes)
4. Any existing vault notes this relates to?
Or just say "general" and I will extract the most important points.
Use the user's guidance to focus the extraction. If the user says "general," extract broadly.
Step 4: Process Content
Based on the salience guidance, extract and structure the content:
Key Points Extraction
- Identify the main thesis or purpose
- Extract key arguments, findings, or concepts
- Note important data points, quotes, or examples
- Identify action items or implications for the user
Structure the Output
---
date: YYYY-MM-DD
tags: [{topic-tags}]
type: reference
source: "{URL or filename or 'raw input'}"
author: "{if known}"
ingested: YYYY-MM-DD
status: staging
---
# {Title}
> **Source:** {URL/file/raw}
> **Ingested:** {date} via ingest skill
## Summary
{2-5 sentence summary of the content}
## Key Points
- {main takeaway 1}
- {main takeaway 2}
- {main takeaway 3}
## Detailed Notes
{structured notes based on salience guidance}
## Relevance
{how this connects to existing vault content}
- Related: [[existing note 1]]
- Related: [[existing note 2]]
## Questions / Follow-ups
- {anything raised by the content worth exploring}
## Raw Quotes
> "{important quote 1}" -- {attribution}
> "{important quote 2}" -- {attribution}
Step 5: Add Wikilinks
Cross-reference the ingested content with the existing vault:
- Read
Machine/Memory/entities.mdfor known entities. - Scan
Human/Projects/for active projects. - Add
[[wikilinks]]wherever the content references known entities, projects, or concepts that have existing notes. - Suggest new wikilinks for concepts that do not yet have notes but probably should.
Step 6: Save to Staging
Save the processed note to Machine/ (the AI zone), NOT directly to Human/:
Path: Machine/ingested/{YYYY-MM-DD}-{slug}.md
Where {slug} is a kebab-case version of the title (e.g., 2025-01-15-api-design-patterns.md).
Create the Machine/ingested/ directory if it does not exist.
Step 7: Present and Offer Integration
Show the user what was created:
Ingested and processed. Here is what I saved:
File: Machine/ingested/{filename}.md
Source: {source}
Key points: {count}
Wikilinks: {count} connections to existing notes
Preview:
{show the Summary and Key Points sections}
Actions:
1. Move to Human/ (integrate into your notes)
2. Edit first (open for review)
3. Leave in Machine/ingested/ for now
4. Discard
What would you like to do?
If the user chooses to integrate:
- Move the file to the appropriate
Human/subdirectory - Update the
statusfrontmatter field fromstagingtointegrated - Update today's daily note with a log entry
Advanced: PDF and Document Pipeline
For importing large or messy documents (PDFs, DOCX, Excel, annual reports), use this pipeline to extract signal from noise:
Sub-step A: Organize by File Type
If given a folder of mixed files:
- Scan the directory for file types
- Create subfolders:
PDFs/,DOCX/,Spreadsheets/,Other/ - Move files to appropriate subfolders
- Report the organization to the user before proceeding
Sub-step B: Extract and Synthesize
For each document:
Extract raw text using available tools (Read for text files, Bash for
pdftotextif available)Synthesize with a focused prompt:
You are distilling [document type] into a knowledge artifact. Extract ONLY: - Core concepts and definitions - Key decisions or findings - Actionable insights - Important data points or metrics - Named entities (people, companies, products) Ignore: formatting noise, headers/footers, boilerplate, redundant text. Format as clean markdown with clear sections.Create a cheat-sheet note — not a full copy, just the signal:
--- date: YYYY-MM-DD tags: [ingested, {document-type}] type: reference source: {original filename} --- # {Document Title} — Key Points {synthesized content}
Sub-step C: Import to Vault
Save synthesized notes to Human/Projects/{topic}/ or ask user for preferred location.
With Obsidian CLI:
obsidian open "{note-path}" # open the new note to verify
Sub-step D: Link to Related Notes
After importing, suggest connections:
- Search for existing notes on the same topic
- Offer to add
[[wikilinks]]to related content - Offer to update
Machine/Memory/entities.mdwith new entities discovered