Optimize Obsidian plugin resource usage and external service costs. Use when managing API quotas, reducing storage usage, or optimizing sync and external service consumption. Trigger with phrases like "obsidian resources", "obsidian quota", "optimize obsidian storage", "reduce obsidian costs".
From obsidian-packnpx claudepluginhub nickloveinvesting/nick-love-plugins --plugin obsidian-packThis skill is limited to using the following tools:
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides implementation of event-driven hooks in Claude Code plugins using prompt-based validation and bash commands for PreToolUse, Stop, and session events.
Optimize costs related to Obsidian usage, including Sync subscription ($4/mo personal, $8/mo for 10GB), Publish hosting ($8/mo per site), and third-party plugin API costs. The main cost drivers are: Obsidian Sync storage (1-10GB depending on tier), Publish bandwidth, and external API calls from community plugins (AI assistants, translation services, image hosting).
# Check total vault size
du -sh /path/to/vault/
# Find largest files consuming sync bandwidth
find /path/to/vault/ -type f -exec du -h {} + | sort -rh | head -20
# Count files by type
find /path/to/vault/ -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn | head -10
# .obsidian/sync-exclusions.md - Exclude from Obsidian Sync
# Large binary files that don't need cloud sync
*.pdf
*.mp4
*.zip
attachments/archives/**
node_modules/**
.git/**
# Generated content that can be recreated
.obsidian/plugins/*/data.json # Plugin caches (regenerated on launch)
.trash/** # Deleted files in vault trash
// For plugins that call external APIs (AI assistants, translation, etc.)
// Implement caching to reduce API calls
class PluginCostOptimizer {
// Cache AI responses to avoid re-querying for identical prompts
private responseCache = new Map<string, { result: string; timestamp: number }>();
private cacheTTL = 24 * 60 * 60 * 1000; // 24 hours # 1000: 1 second in ms
async getCachedOrFetch(prompt: string, apiFn: () => Promise<string>): Promise<string> {
const cached = this.responseCache.get(prompt);
if (cached && Date.now() - cached.timestamp < this.cacheTTL) return cached.result;
const result = await apiFn();
this.responseCache.set(prompt, { result, timestamp: Date.now() });
return result;
}
}
# Sync tier decision matrix
personal_4_per_month:
storage: 1GB
best_for: Text-only vaults, <5000 notes # 5000: 5 seconds in ms
tip: Exclude images from sync, use relative links to local folders
standard_8_per_month:
storage: 10GB
best_for: Vaults with images and PDFs
tip: Compress images before adding to vault (tinypng or ImageOptim)
self_hosted_free:
storage: Unlimited
options: [Obsidian Git plugin, Syncthing, iCloud Drive]
tradeoff: Manual setup, no version history UI, but $0/month
If using Obsidian Publish ($8/mo per site), minimize what you publish:
publish: true frontmatter selectively instead of publishing entire folders| Issue | Cause | Solution |
|---|---|---|
| Sync storage full | Large attachments | Exclude binary files from sync, compress images |
| Plugin API costs high | No caching in plugin | Implement response caching or switch to local models |
| Vault backup too large | Accumulated trash | Empty .trash folder, purge version history |
| Publish site slow | Large uncompressed images | Compress images, lazy-load media |
Basic usage: Apply obsidian cost tuning to a standard project setup with default configuration options.
Advanced scenario: Customize obsidian cost tuning for production environments with multiple constraints and team-specific requirements.