Files
TextNLPClassifierApp/graphify-out/cache/ast/v0.9.47-s2/3ae38a2a907f1aeb6987c647a6290533acde67ef91f590445bdec0e1da5f52be.json
T
andreferraro 6a45368cb0 feat(extractor): implement multi-engine article content extractor
- Added scripts/extract_article_contents.py for batch scraping with stealth Foxcape and triple extraction (Trafilatura, Newspaper4k, Readability)
- Created unit, integration, and E2E test suite in tests/test_extract_article_contents.py (90/90 passing)
- Updated specs/003-article-content-extractor and README.md with usage documentation and CLI contracts
- Passed ruff linting/formatting and mypy type checking cleanly
2026-08-20 19:22:20 -03:00

1 line
7.1 KiB
JSON

{"nodes": [{"id": "$graphify-root$_specs_003_article_content_extractor_plan_md", "label": "plan.md", "file_type": "document", "node_kind": "page", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "label": "Implementation Plan: Article Content Multi-Engine Extractor", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_summary", "label": "Summary", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L9"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_technical_context", "label": "Technical Context", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L15"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_constitution_check", "label": "Constitution Check", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L29"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_project_structure", "label": "Project Structure", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L42"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_documentation_this_feature", "label": "Documentation (this feature)", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L44"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_source_code_layout", "label": "Source Code Layout", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L59"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "label": "Implementation Phases", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L73"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_phase_0_outline_research_completed", "label": "Phase 0: Outline & Research *(Completed)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L75"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_phase_1_design_contracts_completed", "label": "Phase 1: Design & Contracts *(Completed)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L80"}, {"id": "$graphify-root$_specs_003_article_content_extractor_plan_phase_2_tasks_execution_completed", "label": "Phase 2: Tasks & Execution *(Completed)*", "file_type": "document", "node_kind": "heading", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L84"}], "edges": [{"source": "$graphify-root$_specs_003_article_content_extractor_plan_md", "target": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_technical_context", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_constitution_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_project_structure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_project_structure", "target": "$graphify-root$_specs_003_article_content_extractor_plan_documentation_this_feature", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_project_structure", "target": "$graphify-root$_specs_003_article_content_extractor_plan_source_code_layout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_plan_article_content_multi_engine_extractor", "target": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "target": "$graphify-root$_specs_003_article_content_extractor_plan_phase_0_outline_research_completed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "target": "$graphify-root$_specs_003_article_content_extractor_plan_phase_1_design_contracts_completed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_specs_003_article_content_extractor_plan_implementation_phases", "target": "$graphify-root$_specs_003_article_content_extractor_plan_phase_2_tasks_execution_completed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/003-article-content-extractor/plan.md", "source_location": "L84", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}