Files
vault-para/README.md
T
windyboy f99056a099 feat(tagging-system): Add comprehensive tagging system implementation
- Add tagging system Python package with modular architecture (config, core, impl)
- Create core interfaces for file discovery, content analysis, and tag generation
- Implement content analyzer with language detection and topic extraction
- Implement file discovery engine with directory scanning and filtering
- Implement tag generator with hierarchical tag creation and consolidation
- Add configuration management with example config and validation
- Create comprehensive design and requirements documentation in .kiro/specs
- Add pytest test suite with unit tests for models, interfaces, and config
- Add setup.py, requirements.txt, and pytest.ini for package management
- Add README.md with project overview and usage instructions
- Update workspace.json with new project structure
- Add Excalidraw diagram for system architecture visualization
- Establish foundation for automated vault tagging and metadata management
2025-12-31 08:37:16 +08:00

3.0 KiB

Comprehensive Tagging System

A Python-based comprehensive tagging system for Obsidian vaults that analyzes files, generates appropriate tags based on directory structure and content analysis, and updates frontmatter while preserving existing data.

Features

  • Directory-based tagging: Automatically generates tags based on vault directory structure
  • Content analysis: Analyzes file content to extract topics, technologies, and entities
  • Hierarchical tag structures: Creates organized tag hierarchies using forward slash notation
  • Language detection: Identifies content language (English, Chinese, mixed, unknown)
  • Frontmatter management: Updates YAML frontmatter while preserving existing data
  • Batch processing: Processes entire vaults efficiently with progress tracking
  • Sensitive content detection: Identifies and appropriately tags sensitive information
  • Obsidian compatibility: Ensures tags work with Obsidian's features and plugins

Installation

pip install -e .

Development Setup

# Install development dependencies
pip install -e ".[dev,test]"

# Run tests
pytest

# Run tests with coverage
pytest --cov=tagging_system

# Format code
black tagging_system tests

# Lint code
flake8 tagging_system tests

# Type checking
mypy tagging_system

Project Structure

tagging_system/
├── __init__.py
├── core/
│   ├── __init__.py
│   ├── models.py          # Core data models
│   └── interfaces.py      # Abstract interfaces and protocols
├── config/
│   ├── __init__.py
│   └── config.py          # Configuration system
└── implementations/       # Concrete implementations (to be added)

tests/
├── __init__.py
├── conftest.py           # Pytest configuration and fixtures
├── test_models.py        # Tests for core models
├── test_config.py        # Tests for configuration system
└── test_interfaces.py    # Tests for interfaces and protocols

Configuration

The system uses a flexible configuration system that supports both YAML and JSON formats. Configuration includes:

  • Directory mappings for tag generation
  • Tag hierarchies and structures
  • Sensitive content detection patterns
  • File processing settings
  • Language detection parameters

Testing

The project uses pytest with hypothesis for property-based testing:

  • Unit tests: Test specific functionality and edge cases
  • Property-based tests: Test universal properties across randomized inputs
  • Integration tests: Test component interactions

Run tests with:

pytest                    # Run all tests
pytest -m unit           # Run only unit tests
pytest -m property       # Run only property-based tests
pytest -v                # Verbose output

Requirements

This implementation addresses the following requirements:

  • 1.1, 1.2, 1.3: Standardized frontmatter structure
  • Directory-based tag mapping
  • Content analysis and classification
  • Tag consistency and validation
  • Batch processing capabilities

License

MIT License