612 lines
20 KiB
Markdown
612 lines
20 KiB
Markdown
---
|
|
name: obsidian-vault-manager
|
|
description: Manage Obsidian knowledge base - capture ideas, YouTube videos, articles, repositories, create study guides, and publish to GitHub Pages. Use smart AI tagging for automatic organization.
|
|
allowed-tools:
|
|
- mcp__obsidian-mcp-tools__*
|
|
- mcp__MCP_DOCKER__create_or_update_file
|
|
- mcp__MCP_DOCKER__push_files
|
|
- mcp__MCP_DOCKER__get_file_contents
|
|
- mcp__MCP_DOCKER__fetch
|
|
- mcp__MCP_DOCKER__gitingest-analyze
|
|
- Bash(uvx youtube_transcript_api:*)
|
|
---
|
|
|
|
# Obsidian Vault Manager
|
|
|
|
Manage an AI-powered Obsidian knowledge base with automatic organization and GitHub Pages publishing.
|
|
|
|
## Vault Configuration
|
|
|
|
- **Vault Path**: `/Users/zorro/Documents/Obsidian/Claudecode`
|
|
- **Publishing Folder**: `documents/` (auto-deploys to GitHub Pages)
|
|
- **GitHub Repository**: `ZorroCheng-MC/sharehub`
|
|
|
|
## Tag Taxonomy (STRICT - Use Only These)
|
|
|
|
### Content Type Tags (choose 1)
|
|
- `idea` - Random thoughts, concepts, brainstorms
|
|
- `video` - YouTube videos, lectures
|
|
- `article` - Web articles, blog posts
|
|
- `study-guide` - Learning materials, courses
|
|
- `repository` - Code repositories, technical analysis
|
|
- `reference` - Documentation, quick lookups
|
|
- `project` - Project notes, planning
|
|
|
|
### Topic Tags (choose 2-4 relevant)
|
|
- `AI` - Artificial intelligence, machine learning
|
|
- `productivity` - Time management, workflows, GTD
|
|
- `knowledge-management` - PKM, note-taking, Obsidian
|
|
- `development` - Programming, software engineering
|
|
- `learning` - Education, study techniques
|
|
- `research` - Academic, scientific papers
|
|
- `writing` - Content creation, blogging
|
|
- `tools` - Software tools, applications
|
|
- `business` - Entrepreneurship, strategy
|
|
- `design` - UI/UX, visual design
|
|
- `automation` - Workflows, scripts, efficiency
|
|
- `data-science` - Analytics, statistics
|
|
- `web-development` - Frontend, backend, full-stack
|
|
- `personal-growth` - Self-improvement, habits
|
|
- `finance` - Money, investing, economics
|
|
|
|
### Status Tags (choose 1)
|
|
- `inbox` - Just captured, needs processing
|
|
- `processing` - Currently working on
|
|
- `evergreen` - Timeless, permanent knowledge
|
|
- `published` - Shared publicly
|
|
- `archived` - Done, historical reference
|
|
- `needs-review` - Requires attention
|
|
|
|
### Priority/Metadata Tags (choose 0-2)
|
|
- `high-priority` - Important, urgent
|
|
- `quick-read` - <5 min to consume
|
|
- `deep-dive` - Complex, requires focus
|
|
- `technical` - Code-heavy, engineering
|
|
- `conceptual` - Theory, ideas, frameworks
|
|
- `actionable` - Contains next steps/todos
|
|
- `tutorial` - Step-by-step guide
|
|
- `inspiration` - Creative, motivational
|
|
|
|
## Core Operations
|
|
|
|
### 1. Capture Content (Universal Inbox)
|
|
|
|
Intelligently route content based on type and create properly tagged notes.
|
|
|
|
#### YouTube Videos
|
|
|
|
**Bundled Resources:**
|
|
- **Script**: `scripts/core/fetch-youtube-transcript.sh` - Fetches transcript via uvx
|
|
- **Template**: `templates/youtube-note-template.md` - Note structure
|
|
- **Validation**: `scripts/validation/validate-frontmatter.py` - Quality check
|
|
|
|
When user provides a YouTube URL:
|
|
|
|
**Step 1: Extract Video ID and Fetch Transcript**
|
|
1. Extract VIDEO_ID from URL (e.g., `https://youtu.be/VIDEO_ID` or `https://www.youtube.com/watch?v=VIDEO_ID`)
|
|
2. Run bundled script to fetch transcript:
|
|
```bash
|
|
SKILL_DIR="$HOME/.claude/skills/obsidian-vault-manager"
|
|
TRANSCRIPT=$("$SKILL_DIR/scripts/core/fetch-youtube-transcript.sh" "$VIDEO_ID")
|
|
```
|
|
3. Use `get_transcript` to get video transcript and `fetch` to get YouTube page for metadata (title, channel, description)
|
|
|
|
**Step 2: Analyze Content for Smart Tags**
|
|
Determine:
|
|
- Main topics (choose 2-4 from taxonomy)
|
|
- Complexity level:
|
|
- `quick-read` = under 10 minutes
|
|
- `tutorial` = step-by-step instructional
|
|
- `deep-dive` = 30+ minutes, complex
|
|
- Content characteristics:
|
|
- `technical` = code-heavy, engineering
|
|
- `conceptual` = theory, frameworks
|
|
- `actionable` = practical steps
|
|
- `inspiration` = motivational
|
|
- Priority (high/medium/low based on relevance)
|
|
|
|
**Step 3: Generate Filename**
|
|
Format: `[date]-[creator-or-channel]-[descriptive-title].md`
|
|
Example: `2025-10-24-ai-labs-context-engineering-claude-code.md`
|
|
|
|
**Step 4: Load Template and Substitute Variables**
|
|
|
|
1. Load bundled template:
|
|
```bash
|
|
TEMPLATE=$(cat "$SKILL_DIR/templates/youtube-note-template.md")
|
|
```
|
|
|
|
2. Substitute placeholders with analyzed data:
|
|
- `{{TITLE}}` - Video title from metadata
|
|
- `{{VIDEO_ID}}` - Extracted video ID
|
|
- `{{CHANNEL}}` - Channel name
|
|
- `{{DATE}}` - Current date (YYYY-MM-DD)
|
|
- `{{TOPIC_TAGS}}` - 2-4 topic tags from taxonomy
|
|
- `{{METADATA_TAGS}}` - 1-2 metadata tags (tutorial, actionable, etc.)
|
|
- `{{PRIORITY}}` - high/medium/low
|
|
- `{{DURATION}}` - Estimated duration (~X minutes)
|
|
- `{{DESCRIPTION}}` - 2-3 sentence summary from transcript analysis
|
|
- `{{LEARNING_OBJECTIVES}}` - Bullet list of learning outcomes
|
|
- `{{CURRICULUM}}` - Structured outline with checkboxes
|
|
- `{{MAIN_INSIGHTS}}` - 3-5 key insights from transcript
|
|
- `{{ACTIONABLE_POINTS}}` - Practical takeaways
|
|
- `{{TARGET_AUDIENCE}}` - Who should watch this
|
|
- `{{TOPIC_ANALYSIS}}` - Explanation of chosen topics
|
|
- `{{COMPLEXITY_LEVEL}}` - quick-read/tutorial/deep-dive
|
|
- `{{PRIORITY_REASONING}}` - Why this priority
|
|
- `{{TAG_REASONING}}` - Tag selection explanation
|
|
- `{{PRIMARY_TOPIC}}` - Main topic for filtering
|
|
- `{{RELATED_SEARCHES}}` - Suggested semantic searches
|
|
- `{{CONNECTIONS}}` - Links to related notes
|
|
|
|
**Step 5: Create Enhanced Video Entry**
|
|
|
|
Use `mcp__obsidian-mcp-tools__create_vault_file` with the substituted template content.
|
|
|
|
**Tag Count:** 6-8 tags total
|
|
**Always include:** `video`, `inbox`, 2-4 topic tags, 1-2 metadata tags, optional content-specific tags
|
|
|
|
#### Ideas & Quick Thoughts
|
|
|
|
**Bundled Resources:**
|
|
- **Template**: `templates/idea-template.md` - Idea note structure
|
|
|
|
When user provides plain text (no URL):
|
|
|
|
**Step 1: Analyze the Idea**
|
|
Extract:
|
|
1. Main concept (for title)
|
|
2. Related topics (choose 2-4 from taxonomy)
|
|
3. Idea type:
|
|
- `actionable` = has concrete next steps
|
|
- `conceptual` = theoretical, framework-based
|
|
- `inspiration` = creative, motivational
|
|
- `high-priority` = urgent or important
|
|
4. Brief description (1-2 sentences explaining the idea clearly)
|
|
|
|
**Step 2: Generate Smart Filename**
|
|
Format: `{date}-{3-5-word-idea-name}.md`
|
|
|
|
Examples:
|
|
- "Use AI to automatically categorize notes" → `2025-10-23-ai-note-categorization.md`
|
|
- "Knowledge compounds when connected" → `2025-10-23-knowledge-compound-connections.md`
|
|
|
|
**Step 3: Load Template and Substitute Variables**
|
|
|
|
1. Load bundled template:
|
|
```bash
|
|
SKILL_DIR="$HOME/.claude/skills/obsidian-vault-manager"
|
|
TEMPLATE=$(cat "$SKILL_DIR/templates/idea-template.md")
|
|
```
|
|
|
|
2. Substitute placeholders with analyzed data:
|
|
- `{{TITLE}}` - Concise idea title
|
|
- `{{TOPIC_TAGS}}` - 2-4 topic tags from taxonomy (comma-separated)
|
|
- `{{METADATA_TAGS}}` - 1-2 metadata tags (actionable, conceptual, inspiration, etc.)
|
|
- `{{DATE}}` - Current date (YYYY-MM-DD)
|
|
- `{{PRIORITY}}` - high/medium/low
|
|
- `{{CORE_IDEA}}` - Cleaned idea description (1-2 paragraphs)
|
|
- `{{WHY_MATTERS}}` - 1-2 sentences on potential impact or value
|
|
- `{{RELATED_CONCEPTS}}` - Bullet list of related concepts
|
|
- `{{NEXT_STEPS}}` - If actionable: 2-3 next steps. Otherwise: "Further research needed"
|
|
- `{{TOPICS_EXPLANATION}}` - Explanation of why these topics were chosen
|
|
- `{{CHARACTERISTICS_EXPLANATION}}` - Why it's actionable/conceptual/inspiration
|
|
- `{{PRIORITY_EXPLANATION}}` - Reasoning for priority level
|
|
- `{{TAG_REASONING}}` - Overall tag selection explanation
|
|
- `{{PRIMARY_TOPIC}}` - Main topic for filtering
|
|
- `{{SECONDARY_TOPIC}}` - Secondary topic for filtering
|
|
- `{{RELATED_CONCEPT}}` - For semantic search suggestions
|
|
|
|
**Step 4: Create Enhanced Idea File**
|
|
|
|
Use `mcp__obsidian-mcp-tools__create_vault_file` with the substituted template content.
|
|
|
|
**Tag Count:** 5-8 tags total
|
|
**Always include:** `idea`, `inbox`, 2-4 topic tags, 1-2 metadata tags
|
|
|
|
#### GitHub Repositories
|
|
|
|
When user provides a GitHub URL:
|
|
|
|
**Step 1: Analyze Repository**
|
|
Use `gitingest-analyze` with:
|
|
- `source`: GitHub URL
|
|
- `include_patterns`: `["*.md", "*.py", "*.js", "*.ts"]` (adapt to repo language)
|
|
- `max_file_size`: 10485760 (10MB)
|
|
|
|
**Step 2: Create Repository Analysis Note**
|
|
|
|
Use `mcp__obsidian-mcp-tools__create_vault_file`:
|
|
|
|
```yaml
|
|
---
|
|
title: "[Repo Name] - Repository Analysis"
|
|
tags: [repository, {language}, {topic}, inbox, technical, reference]
|
|
url: [github_url]
|
|
date: YYYY-MM-DD
|
|
type: repository
|
|
status: inbox
|
|
priority: medium
|
|
---
|
|
|
|
## 📦 Repository Overview
|
|
[Repository description from README]
|
|
|
|
## 🏗️ Architecture
|
|
[Key components and structure from gitingest analysis]
|
|
|
|
## 📁 Key Files & Components
|
|
[Important files identified in analysis]
|
|
|
|
## 📝 Documentation Summary
|
|
[Main docs and README content]
|
|
|
|
## 💡 Key Patterns & Insights
|
|
[Notable patterns, technologies, approaches]
|
|
|
|
## 🏷️ Tags Analysis
|
|
- **Topics:** {why these topics}
|
|
- **Language:** {primary programming language}
|
|
- **Bases Filtering:** `type = repository AND tags contains "{topic}"`
|
|
|
|
---
|
|
*Captured: {date}*
|
|
*Source: {repo_url}*
|
|
```
|
|
|
|
**Tag Count:** 6-8 tags
|
|
|
|
#### Web Articles
|
|
|
|
When user provides web article URL:
|
|
|
|
**Step 1: Fetch Content**
|
|
Use `mcp__MCP_DOCKER__fetch` to get article content
|
|
|
|
**Step 2: Create Article Note**
|
|
|
|
Use `mcp__obsidian-mcp-tools__create_vault_file`:
|
|
|
|
```yaml
|
|
---
|
|
title: "[Article Title]"
|
|
tags: [article, {topic1}, {topic2}, {topic3}, inbox, quick-read]
|
|
url: [article_url]
|
|
date: YYYY-MM-DD
|
|
type: article
|
|
status: inbox
|
|
priority: medium
|
|
---
|
|
|
|
## 📄 Summary
|
|
[AI-generated summary of key points]
|
|
|
|
## 🔑 Key Takeaways
|
|
- [Point 1]
|
|
- [Point 2]
|
|
- [Point 3]
|
|
|
|
## 💭 Personal Notes
|
|
[Space for user's thoughts]
|
|
|
|
## 🔗 Related Resources
|
|
[Links mentioned in article]
|
|
|
|
## 🏷️ Tags Analysis
|
|
- **Topics:** {explanation}
|
|
- **Bases Filtering:** `type = article AND tags contains "{topic}"`
|
|
|
|
---
|
|
*Captured: {date}*
|
|
```
|
|
|
|
**Tag Count:** 6-8 tags
|
|
|
|
### 2. Create Study Guides
|
|
|
|
**Bundled Resources:**
|
|
- **Template**: `templates/study-guide-template.md` - Study guide structure
|
|
|
|
When user requests study guide from URL or content:
|
|
|
|
**Step 1: Fetch Content**
|
|
- If URL: use `mcp__MCP_DOCKER__fetch`
|
|
- If file: use `mcp__obsidian-mcp-tools__get_vault_file`
|
|
- If direct text: use provided content
|
|
|
|
**Step 2: Analyze for Smart Tagging**
|
|
Identify:
|
|
- Main topics and themes → Choose 2-4 topic tags from taxonomy
|
|
- Complexity level → `deep-dive` (multi-hour), `technical` (code/math), `conceptual` (theory)
|
|
- Practical application → `actionable` (exercises) or `tutorial` (step-by-step)
|
|
- Learning prerequisites → Determines difficulty level
|
|
- Estimated study time → Hours required
|
|
- Priority (high/medium/low based on goals)
|
|
|
|
**Step 3: Generate Filename**
|
|
Format: `[date]-[topic-name]-study-guide.md`
|
|
|
|
Examples:
|
|
- Machine learning basics → `2025-10-28-machine-learning-study-guide.md`
|
|
- React advanced patterns → `2025-10-28-react-advanced-study-guide.md`
|
|
|
|
**Step 4: Load Template and Substitute Variables**
|
|
|
|
1. Load bundled template:
|
|
```bash
|
|
SKILL_DIR="$HOME/.claude/skills/obsidian-vault-manager"
|
|
TEMPLATE=$(cat "$SKILL_DIR/templates/study-guide-template.md")
|
|
```
|
|
|
|
2. Substitute placeholders with analyzed data:
|
|
- `{{TITLE}}` - Study subject/topic name
|
|
- `{{TOPIC_TAGS}}` - 2-4 topic tags from taxonomy (comma-separated)
|
|
- `{{METADATA_TAGS}}` - 1-2 metadata tags (deep-dive, technical, tutorial, etc.)
|
|
- `{{SOURCE}}` - Source URL or file reference
|
|
- `{{DATE}}` - Current date (YYYY-MM-DD)
|
|
- `{{DIFFICULTY}}` - beginner/intermediate/advanced
|
|
- `{{ESTIMATED_TIME}}` - Study time (e.g., "40 hours", "2 weeks")
|
|
- `{{PRIORITY}}` - high/medium/low
|
|
- `{{LEARNING_OBJECTIVES}}` - Bulleted checklist of objectives
|
|
- `{{PREREQUISITES}}` - Required background knowledge
|
|
- `{{STUDY_METHOD}}` - Recommended approach (active reading, practice-based, mixed)
|
|
- `{{CONTENT_STRUCTURE}}` - Weekly breakdown with concepts/activities/assessments
|
|
- `{{MATERIAL_STRATEGIES}}` - Content-specific study strategies
|
|
- `{{PRACTICE_EXERCISES}}` - Practical exercises or projects
|
|
- `{{TEACHING_TECHNIQUES}}` - How to teach/explain concepts
|
|
- `{{WEEK1_ASSESSMENT}}` - Early knowledge check questions
|
|
- `{{FINAL_ASSESSMENT}}` - Comprehensive assessment questions
|
|
- `{{PROGRESS_STATUS}}` - Weekly completion tracking checklist
|
|
- `{{NEXT_MILESTONE}}` - Specific next goal
|
|
- `{{RELATED_NOTES}}` - Wiki-style links to related content
|
|
- `{{TOPICS_EXPLANATION}}` - Why these topics were chosen
|
|
- `{{DIFFICULTY_EXPLANATION}}` - Difficulty level reasoning
|
|
- `{{CHARACTERISTICS_EXPLANATION}}` - Content characteristics (technical, deep-dive, etc.)
|
|
- `{{PRIORITY_EXPLANATION}}` - Priority reasoning
|
|
- `{{TAG_REASONING}}` - Overall tag selection explanation
|
|
- `{{PRIMARY_TOPIC}}` - Main topic for filtering
|
|
- `{{SECONDARY_TOPIC}}` - Secondary topic for filtering
|
|
- `{{RELATED_CONCEPT}}` - For semantic searches
|
|
- `{{FOUNDATIONAL_TOPIC}}` - Base knowledge topic
|
|
- `{{NEXT_ACTION}}` - Specific next step in study plan
|
|
|
|
**Step 5: Create Enhanced Study Guide**
|
|
|
|
Use `mcp__obsidian-mcp-tools__create_vault_file` with the substituted template content.
|
|
|
|
**Tag Count:** 6-8 tags total
|
|
**Status:** Always use `processing` for study guides (not `inbox`)
|
|
**Always include:** `study-guide`, `processing`, 2-4 topic tags, 1-2 metadata tags
|
|
|
|
### 3. Search Vault (Semantic Search)
|
|
|
|
When user asks to search vault:
|
|
|
|
**Use Semantic Search:**
|
|
|
|
Since Smart Connections is configured, use `mcp__obsidian-mcp-tools__search_vault_smart` with the query:
|
|
|
|
```
|
|
mcp__obsidian-mcp-tools__search_vault_smart({
|
|
query: "[user's search query]",
|
|
filter: {
|
|
limit: 5
|
|
}
|
|
})
|
|
```
|
|
|
|
**Present results showing:**
|
|
- Note titles
|
|
- Relevant excerpts
|
|
- Tags and metadata
|
|
- Connections to other notes
|
|
|
|
**Example queries:**
|
|
- "Search for notes about productivity and AI"
|
|
- "Find everything related to learning workflows"
|
|
- "Show me all high-priority technical content"
|
|
|
|
### 4. Bulk Tag Existing Notes
|
|
|
|
When user asks to tag untagged notes:
|
|
|
|
**Step 1: Discover Files**
|
|
Use `mcp__obsidian-mcp-tools__list_vault_files` to find markdown files
|
|
|
|
**Step 2: Process Each File**
|
|
For each file:
|
|
|
|
1. Use `mcp__obsidian-mcp-tools__get_vault_file` to read content
|
|
2. Analyze existing frontmatter:
|
|
- Check if `tags:` field exists
|
|
- Check if tags are comprehensive (5+ taxonomy tags)
|
|
3. Skip if already well-tagged (has 5+ taxonomy-compliant tags)
|
|
4. Analyze content to determine:
|
|
- Content type (from filename, existing tags, content)
|
|
- Main topics (2-4 from content analysis)
|
|
- Status (infer from content or default to `evergreen` for old notes)
|
|
- Metadata characteristics
|
|
5. Generate enhanced tag array (5-8 tags total)
|
|
6. Use `mcp__obsidian-mcp-tools__patch_vault_file` to update frontmatter:
|
|
|
|
```
|
|
mcp__obsidian-mcp-tools__patch_vault_file({
|
|
filename: "[note-name].md",
|
|
targetType: "frontmatter",
|
|
target: "tags",
|
|
operation: "replace",
|
|
contentType: "application/json",
|
|
content: "[{content-type}, {topic1}, {topic2}, {status}, {metadata}]"
|
|
})
|
|
```
|
|
|
|
**Important Rules:**
|
|
1. Preserve existing data - merge AI tags with existing tags
|
|
2. Be conservative - if uncertain, default to `reference`
|
|
3. Handle errors gracefully - skip invalid files
|
|
4. Respect user intent - enhance rather than replace
|
|
|
|
**Step 3: Report Progress**
|
|
After every 5-10 files:
|
|
```
|
|
✅ Tagged 10 files:
|
|
- 3 ideas tagged with [idea, productivity, ...]
|
|
- 2 videos tagged with [video, AI, learning, ...]
|
|
- 5 articles tagged with [article, development, ...]
|
|
|
|
📊 Progress: 10/47 files processed
|
|
🏷️ Total tags added: 73 tags
|
|
```
|
|
|
|
**Step 4: Final Summary**
|
|
```markdown
|
|
# Bulk Tagging Report
|
|
|
|
## Summary
|
|
- **Files processed:** 47
|
|
- **Files updated:** 43
|
|
- **Files skipped:** 4 (already well-tagged)
|
|
- **Total tags added:** 312
|
|
- **Average tags per note:** 7.3
|
|
|
|
## Tag Distribution
|
|
|
|
### By Content Type
|
|
- idea: 15 notes
|
|
- video: 8 notes
|
|
- article: 12 notes
|
|
|
|
### By Topic
|
|
- AI: 23 notes
|
|
- productivity: 18 notes
|
|
- knowledge-management: 15 notes
|
|
|
|
### By Status
|
|
- inbox: 12 notes
|
|
- evergreen: 28 notes
|
|
- published: 7 notes
|
|
|
|
## Bases Filtering Suggestions
|
|
|
|
You can now create Bases views like:
|
|
1. **AI Learning Pipeline**: `type = video AND tags contains "AI" AND status = inbox`
|
|
2. **Quick Wins**: `tags contains "quick-read" AND tags contains "high-priority"`
|
|
3. **Technical Deep Dives**: `tags contains "technical" AND tags contains "deep-dive"`
|
|
4. **Actionable Items**: `tags contains "actionable" AND status != archived`
|
|
```
|
|
|
|
### 5. Publish to GitHub Pages
|
|
|
|
**Bundled Resources:**
|
|
- **Script**: `scripts/core/publish.sh` - Complete publish workflow
|
|
|
|
When user asks to publish a note:
|
|
|
|
**Step 1: Validate Input**
|
|
|
|
Add `.md` extension if not provided and verify file exists in vault.
|
|
|
|
**Step 2: Run Bundled Publish Script**
|
|
|
|
```bash
|
|
SKILL_DIR="$HOME/.claude/skills/obsidian-vault-manager"
|
|
"$SKILL_DIR/scripts/core/publish.sh" "$NOTE_FILE"
|
|
```
|
|
|
|
**What the script does:**
|
|
1. Finds all image references in the note (supports jpg, jpeg, png, gif, svg, webp)
|
|
2. Copies images from Claudecode vault to sharehub repository (preserves directory structure)
|
|
3. Converts relative image paths to absolute GitHub Pages URLs:
|
|
- `./images/file.jpg` → `/sharehub/images/file.jpg`
|
|
- `images/file.jpg` → `/sharehub/images/file.jpg`
|
|
4. Copies the note with converted paths to `sharehub/documents/`
|
|
5. Creates git commit with proper message format
|
|
6. Pushes to GitHub (triggers GitHub Pages deployment)
|
|
|
|
**Step 3: Wait for Deployment**
|
|
|
|
```bash
|
|
# Wait for GitHub Actions to start
|
|
sleep 3
|
|
|
|
# Show recent workflow runs
|
|
gh run list --limit 3 --repo ZorroCheng-MC/sharehub 2>/dev/null || echo "Install GitHub CLI with: brew install gh"
|
|
|
|
echo ""
|
|
echo "⏳ Waiting 60 seconds for GitHub Pages to deploy..."
|
|
sleep 60
|
|
```
|
|
|
|
**Step 4: Verify Published Page**
|
|
|
|
Use `mcp__MCP_DOCKER__fetch` to verify the page is live:
|
|
```
|
|
url: https://zorrocheng-mc.github.io/sharehub/documents/${NOTE_FILE%.md}.html
|
|
max_length: 2000
|
|
```
|
|
|
|
Check the fetched content for:
|
|
- Page title matches the note title
|
|
- Main heading is present
|
|
- No 404 or error messages
|
|
- Images are referenced correctly
|
|
|
|
**Publishing Paths:**
|
|
- **Vault**: `/Users/zorro/Documents/Obsidian/Claudecode`
|
|
- **Sharehub**: `/Users/zorro/Dev/sharehub`
|
|
- **Repository**: `ZorroCheng-MC/sharehub`
|
|
- **GitHub Pages**: `https://zorrocheng-mc.github.io/sharehub`
|
|
|
|
**Notes:**
|
|
- This workflow requires filesystem access (works in Claude Code CLI)
|
|
- For Claude Desktop: Consider using MCP GitHub tools as alternative
|
|
- Script handles all image copying and path conversion automatically
|
|
- Git commit includes Claude Code attribution
|
|
|
|
## MCP Tools Reference
|
|
|
|
### Primary Tools
|
|
- `mcp__obsidian-mcp-tools__create_vault_file` - Create new notes
|
|
- `mcp__obsidian-mcp-tools__get_vault_file` - Read note content
|
|
- `mcp__obsidian-mcp-tools__patch_vault_file` - Update frontmatter/sections
|
|
- `mcp__obsidian-mcp-tools__search_vault_smart` - Semantic search
|
|
- `mcp__obsidian-mcp-tools__list_vault_files` - List files
|
|
- `mcp__MCP_DOCKER__fetch` - Get web content
|
|
- `mcp__MCP_DOCKER__gitingest-analyze` - Analyze repositories
|
|
- `mcp__MCP_DOCKER__create_or_update_file` - Create/update single file on GitHub
|
|
- `mcp__MCP_DOCKER__push_files` - Push multiple files to GitHub in one commit
|
|
- `mcp__MCP_DOCKER__get_file_contents` - Read files from GitHub
|
|
- YouTube transcript via bash script (`uvx youtube_transcript_api`)
|
|
|
|
## Response Format
|
|
|
|
When completing operations:
|
|
1. **Confirm action**: "✅ Created video note: [title]"
|
|
2. **Show frontmatter**: Display YAML tags and metadata
|
|
3. **Provide path**: Show filename and location
|
|
4. **For publishing**: Include GitHub Pages URL
|
|
5. **Be concise**: Action-oriented responses
|
|
|
|
## Quality Standards
|
|
|
|
- **Consistent tagging**: Use ONLY the defined taxonomy
|
|
- **Correct tag counts**: 5-8 for ideas, 6-8 for videos/study-guides
|
|
- **Complete frontmatter**: All required YAML fields
|
|
- **Clean formatting**: Proper markdown structure
|
|
- **Meaningful titles**: Descriptive, searchable
|
|
- **Actionable content**: Include next steps where relevant
|
|
- **Smart defaults**: Medium priority, inbox status for new captures (except study-guides use processing)
|
|
- **Date stamps**: Always include capture date (YYYY-MM-DD)
|
|
- **Filename rules**: Follow format for each content type
|
|
|
|
## Integration with Bases
|
|
|
|
These tags enable powerful Bases filtering queries like:
|
|
|
|
- "Show all `inbox` items with `high-priority`"
|
|
- "Show `video` content about `AI` and `productivity`"
|
|
- "Show `actionable` items in `processing` status"
|
|
- "Show `technical` `tutorial` content for learning"
|
|
|
|
**Always create tags with filtering in mind.**
|