{"adoption": {"forks": 275, "observed_at": "2026-08-28T04:07:26.422158+00:00", "stars": 2863}, "canonical_url": "https://ross.abutalabs.com/products/aeneas", "card": {"archived": false, "artifact_type": "library", "description": "aeneas is a Python/C library and a set of tools to automagically synchronize audio and text (aka forced alignment)", "domain": ["speech-processing", "media", "accessibility"], "enriched": true, "function": ["speech-recognition", "tts", "audio-processing", "nlp", "cli"], "health_score": 77, "homepage": "http://www.readbeyond.it/aeneas/", "language": "Python", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["readbeyond/aeneas"], "name": "readbeyond/aeneas", "platform": ["python", "windows", "cli"], "pushed_at": "2026-07-25T10:22:31+00:00", "repo": "readbeyond/aeneas", "stars": 2863, "tags": ["forced-alignment", "dtw", "sync-map", "subtitles", "epub3-media-overlays", "espeak", "ffmpeg", "audio-text-synchronization", "audio", "natural-language-processing", "linux", "macos"], "topics": ["speech", "alignment", "tts", "python", "linux", "macos", "windows", "nlp", "espeak", "espeak-ng", "festival", "cli", "dtw", "ffmpeg", "forced-alignment", "text", "audio", "srt", "smil", "text-to-speech"], "urls": [], "use_cases": ["align audiobook narration with text fragments", "generate subtitles from a transcript and audio", "create EPUB 3 media overlay SMIL files for audio-eBooks", "synchronize lyrics or poetry with a recording", "produce ELAN or TextGrid annotations for speech research", "batch-align many audio/text pairs via job files"], "what_it_is": "aeneas is a Python/C library and set of CLI tools that automatically computes forced alignments, generating a synchronization map between a list of text fragments and an audio file narrating that text. It supports many output formats including SRT, SMIL (EPUB 3 Media Overlays), ELAN EAF, TextGrid, and JSON, using MFCC features and dynamic time warping with eSpeak/eSpeak-ng or Festival TTS.", "when_to_avoid": ["you need state-of-the-art speech recognition or alignment on noisy, spontaneous audio", "you want an actively developed project with recent releases and modern Python support", "you need word-level alignment with neural acoustic models", "you cannot install C dependencies like ffmpeg and espeak-ng"], "when_to_choose": ["you need to time-align a known transcript to its audio without manual annotation", "you want EPUB 3 audio-eBook synchronization maps", "you need subtitle files (SRT, VTT, TTML) generated from text and narration", "you work offline with a lightweight Python/C tool rather than heavy deep-learning ASR"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/aeneas", "repo": "readbeyond/aeneas", "role": "main", "score": 65}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.422158+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:48:29.393797+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e27199e75fbcee21362929cbb02c1bf444d8177f3690b4ff395e988ef4aced52", "fetched_at": "2026-08-28T04:07:26.422158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/readbeyond/aeneas"}, {"content_hash": "b92ff4d76b843c5b7857e23c7f1847b062b317e7d365b062aea172b108b7ac70", "fetched_at": "2026-08-29T09:52:07.878713+00:00", "kind": "homepage", "missing": false, "url": "http://www.readbeyond.it/aeneas/"}, {"content_hash": "f41706419ffa22d687b3b5ea4e441d1b2ac9df029b7f4f1e1a9fb470bf0e4f6e", "fetched_at": "2026-08-29T09:52:07.891188+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/libtutorial.html"}, {"content_hash": "12fa9cb3fbaf22464d54404dfe45a49535424bcd6acef4c8234a6a0177ad3378", "fetched_at": "2026-08-29T09:52:07.893311+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/changelog.html"}, {"content_hash": "22e1090e98dcba9db3d8149a9559f21d4b68f017aeecdbf2aeb901aba70b12cc", "fetched_at": "2026-08-29T09:52:07.895337+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/about.html"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.882063+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/aeneas/docs"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.884132+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs"}, {"content_hash": "e72ba305471cdea0add5889930505a224e238e9b2f8c6d35ddc26d4e56bd75ab", "fetched_at": "2026-08-29T09:52:07.886087+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/clitutorial.html"}, {"content_hash": "fa51172bc4a4c60b76d816e3a0635e6011f1b7fb064602f5ca31bc14c12ff652", "fetched_at": "2026-08-29T09:52:07.889128+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/textfile.html"}, {"content_hash": "116b5a823dd41944bec69170154131dd64a7d556cf43388a922fff86bbc395bd", "fetched_at": "2026-08-29T09:52:07.896978+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aeneas/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.422158+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:48:29.393797+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e27199e75fbcee21362929cbb02c1bf444d8177f3690b4ff395e988ef4aced52", "fetched_at": "2026-08-28T04:07:26.422158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/readbeyond/aeneas"}, {"content_hash": "b92ff4d76b843c5b7857e23c7f1847b062b317e7d365b062aea172b108b7ac70", "fetched_at": "2026-08-29T09:52:07.878713+00:00", "kind": "homepage", "missing": false, "url": "http://www.readbeyond.it/aeneas/"}, {"content_hash": "f41706419ffa22d687b3b5ea4e441d1b2ac9df029b7f4f1e1a9fb470bf0e4f6e", "fetched_at": "2026-08-29T09:52:07.891188+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/libtutorial.html"}, {"content_hash": "12fa9cb3fbaf22464d54404dfe45a49535424bcd6acef4c8234a6a0177ad3378", "fetched_at": "2026-08-29T09:52:07.893311+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/changelog.html"}, {"content_hash": "22e1090e98dcba9db3d8149a9559f21d4b68f017aeecdbf2aeb901aba70b12cc", "fetched_at": "2026-08-29T09:52:07.895337+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/about.html"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.882063+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/aeneas/docs"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.884132+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs"}, {"content_hash": "e72ba305471cdea0add5889930505a224e238e9b2f8c6d35ddc26d4e56bd75ab", "fetched_at": "2026-08-29T09:52:07.886087+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/clitutorial.html"}, {"content_hash": "fa51172bc4a4c60b76d816e3a0635e6011f1b7fb064602f5ca31bc14c12ff652", "fetched_at": "2026-08-29T09:52:07.889128+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/textfile.html"}, {"content_hash": "116b5a823dd41944bec69170154131dd64a7d556cf43388a922fff86bbc395bd", "fetched_at": "2026-08-29T09:52:07.896978+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aeneas/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:48:29.393797+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e27199e75fbcee21362929cbb02c1bf444d8177f3690b4ff395e988ef4aced52", "fetched_at": "2026-08-28T04:07:26.422158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/readbeyond/aeneas"}, {"content_hash": "b92ff4d76b843c5b7857e23c7f1847b062b317e7d365b062aea172b108b7ac70", "fetched_at": "2026-08-29T09:52:07.878713+00:00", "kind": "homepage", "missing": false, "url": "http://www.readbeyond.it/aeneas/"}, {"content_hash": "f41706419ffa22d687b3b5ea4e441d1b2ac9df029b7f4f1e1a9fb470bf0e4f6e", "fetched_at": "2026-08-29T09:52:07.891188+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/libtutorial.html"}, {"content_hash": "12fa9cb3fbaf22464d54404dfe45a49535424bcd6acef4c8234a6a0177ad3378", "fetched_at": "2026-08-29T09:52:07.893311+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/changelog.html"}, {"content_hash": "22e1090e98dcba9db3d8149a9559f21d4b68f017aeecdbf2aeb901aba70b12cc", "fetched_at": "2026-08-29T09:52:07.895337+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/about.html"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.882063+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/aeneas/docs"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.884132+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs"}, {"content_hash": "e72ba305471cdea0add5889930505a224e238e9b2f8c6d35ddc26d4e56bd75ab", "fetched_at": "2026-08-29T09:52:07.886087+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/clitutorial.html"}, {"content_hash": "fa51172bc4a4c60b76d816e3a0635e6011f1b7fb064602f5ca31bc14c12ff652", "fetched_at": "2026-08-29T09:52:07.889128+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/textfile.html"}, {"content_hash": "116b5a823dd41944bec69170154131dd64a7d556cf43388a922fff86bbc395bd", "fetched_at": "2026-08-29T09:52:07.896978+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aeneas/json"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.422158+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.422158+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.422158+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:48:29.393797+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e27199e75fbcee21362929cbb02c1bf444d8177f3690b4ff395e988ef4aced52", "fetched_at": "2026-08-28T04:07:26.422158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/readbeyond/aeneas"}, {"content_hash": "b92ff4d76b843c5b7857e23c7f1847b062b317e7d365b062aea172b108b7ac70", "fetched_at": "2026-08-29T09:52:07.878713+00:00", "kind": "homepage", "missing": false, "url": "http://www.readbeyond.it/aeneas/"}, {"content_hash": "f41706419ffa22d687b3b5ea4e441d1b2ac9df029b7f4f1e1a9fb470bf0e4f6e", "fetched_at": "2026-08-29T09:52:07.891188+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/libtutorial.html"}, {"content_hash": "12fa9cb3fbaf22464d54404dfe45a49535424bcd6acef4c8234a6a0177ad3378", "fetched_at": "2026-08-29T09:52:07.893311+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/changelog.html"}, {"content_hash": "22e1090e98dcba9db3d8149a9559f21d4b68f017aeecdbf2aeb901aba70b12cc", "fetched_at": "2026-08-29T09:52:07.895337+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/about.html"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.882063+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/aeneas/docs"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.884132+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs"}, {"content_hash": "e72ba305471cdea0add5889930505a224e238e9b2f8c6d35ddc26d4e56bd75ab", "fetched_at": "2026-08-29T09:52:07.886087+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/clitutorial.html"}, {"content_hash": "fa51172bc4a4c60b76d816e3a0635e6011f1b7fb064602f5ca31bc14c12ff652", "fetched_at": "2026-08-29T09:52:07.889128+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/textfile.html"}, {"content_hash": "116b5a823dd41944bec69170154131dd64a7d556cf43388a922fff86bbc395bd", "fetched_at": "2026-08-29T09:52:07.896978+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aeneas/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.422158+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.422158+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:48:29.393797+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e27199e75fbcee21362929cbb02c1bf444d8177f3690b4ff395e988ef4aced52", "fetched_at": "2026-08-28T04:07:26.422158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/readbeyond/aeneas"}, {"content_hash": "b92ff4d76b843c5b7857e23c7f1847b062b317e7d365b062aea172b108b7ac70", "fetched_at": "2026-08-29T09:52:07.878713+00:00", "kind": "homepage", "missing": false, "url": "http://www.readbeyond.it/aeneas/"}, {"content_hash": "f41706419ffa22d687b3b5ea4e441d1b2ac9df029b7f4f1e1a9fb470bf0e4f6e", "fetched_at": "2026-08-29T09:52:07.891188+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/libtutorial.html"}, {"content_hash": "12fa9cb3fbaf22464d54404dfe45a49535424bcd6acef4c8234a6a0177ad3378", "fetched_at": "2026-08-29T09:52:07.893311+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/changelog.html"}, {"content_hash": "22e1090e98dcba9db3d8149a9559f21d4b68f017aeecdbf2aeb901aba70b12cc", "fetched_at": "2026-08-29T09:52:07.895337+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/about.html"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.882063+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/aeneas/docs"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.884132+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs"}, {"content_hash": "e72ba305471cdea0add5889930505a224e238e9b2f8c6d35ddc26d4e56bd75ab", "fetched_at": "2026-08-29T09:52:07.886087+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/clitutorial.html"}, {"content_hash": "fa51172bc4a4c60b76d816e3a0635e6011f1b7fb064602f5ca31bc14c12ff652", "fetched_at": "2026-08-29T09:52:07.889128+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/textfile.html"}, {"content_hash": "116b5a823dd41944bec69170154131dd64a7d556cf43388a922fff86bbc395bd", "fetched_at": "2026-08-29T09:52:07.896978+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aeneas/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.422158+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.422158+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.422158+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:48:29.393797+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e27199e75fbcee21362929cbb02c1bf444d8177f3690b4ff395e988ef4aced52", "fetched_at": "2026-08-28T04:07:26.422158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/readbeyond/aeneas"}, {"content_hash": "b92ff4d76b843c5b7857e23c7f1847b062b317e7d365b062aea172b108b7ac70", "fetched_at": "2026-08-29T09:52:07.878713+00:00", "kind": "homepage", "missing": false, "url": "http://www.readbeyond.it/aeneas/"}, {"content_hash": "f41706419ffa22d687b3b5ea4e441d1b2ac9df029b7f4f1e1a9fb470bf0e4f6e", "fetched_at": "2026-08-29T09:52:07.891188+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/libtutorial.html"}, {"content_hash": "12fa9cb3fbaf22464d54404dfe45a49535424bcd6acef4c8234a6a0177ad3378", "fetched_at": "2026-08-29T09:52:07.893311+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/changelog.html"}, {"content_hash": "22e1090e98dcba9db3d8149a9559f21d4b68f017aeecdbf2aeb901aba70b12cc", "fetched_at": "2026-08-29T09:52:07.895337+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/about.html"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.882063+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/aeneas/docs"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.884132+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs"}, {"content_hash": "e72ba305471cdea0add5889930505a224e238e9b2f8c6d35ddc26d4e56bd75ab", "fetched_at": "2026-08-29T09:52:07.886087+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/clitutorial.html"}, {"content_hash": "fa51172bc4a4c60b76d816e3a0635e6011f1b7fb064602f5ca31bc14c12ff652", "fetched_at": "2026-08-29T09:52:07.889128+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/textfile.html"}, {"content_hash": "116b5a823dd41944bec69170154131dd64a7d556cf43388a922fff86bbc395bd", "fetched_at": "2026-08-29T09:52:07.896978+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aeneas/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.422158+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.422158+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:48:29.393797+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e27199e75fbcee21362929cbb02c1bf444d8177f3690b4ff395e988ef4aced52", "fetched_at": "2026-08-28T04:07:26.422158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/readbeyond/aeneas"}, {"content_hash": "b92ff4d76b843c5b7857e23c7f1847b062b317e7d365b062aea172b108b7ac70", "fetched_at": "2026-08-29T09:52:07.878713+00:00", "kind": "homepage", "missing": false, "url": "http://www.readbeyond.it/aeneas/"}, {"content_hash": "f41706419ffa22d687b3b5ea4e441d1b2ac9df029b7f4f1e1a9fb470bf0e4f6e", "fetched_at": "2026-08-29T09:52:07.891188+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/libtutorial.html"}, {"content_hash": "12fa9cb3fbaf22464d54404dfe45a49535424bcd6acef4c8234a6a0177ad3378", "fetched_at": "2026-08-29T09:52:07.893311+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/changelog.html"}, {"content_hash": "22e1090e98dcba9db3d8149a9559f21d4b68f017aeecdbf2aeb901aba70b12cc", "fetched_at": "2026-08-29T09:52:07.895337+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/about.html"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.882063+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/aeneas/docs"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.884132+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs"}, {"content_hash": "e72ba305471cdea0add5889930505a224e238e9b2f8c6d35ddc26d4e56bd75ab", "fetched_at": "2026-08-29T09:52:07.886087+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/clitutorial.html"}, {"content_hash": "fa51172bc4a4c60b76d816e3a0635e6011f1b7fb064602f5ca31bc14c12ff652", "fetched_at": "2026-08-29T09:52:07.889128+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/textfile.html"}, {"content_hash": "116b5a823dd41944bec69170154131dd64a7d556cf43388a922fff86bbc395bd", "fetched_at": "2026-08-29T09:52:07.896978+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aeneas/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:48:29.393797+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e27199e75fbcee21362929cbb02c1bf444d8177f3690b4ff395e988ef4aced52", "fetched_at": "2026-08-28T04:07:26.422158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/readbeyond/aeneas"}, {"content_hash": "b92ff4d76b843c5b7857e23c7f1847b062b317e7d365b062aea172b108b7ac70", "fetched_at": "2026-08-29T09:52:07.878713+00:00", "kind": "homepage", "missing": false, "url": "http://www.readbeyond.it/aeneas/"}, {"content_hash": "f41706419ffa22d687b3b5ea4e441d1b2ac9df029b7f4f1e1a9fb470bf0e4f6e", "fetched_at": "2026-08-29T09:52:07.891188+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/libtutorial.html"}, {"content_hash": "12fa9cb3fbaf22464d54404dfe45a49535424bcd6acef4c8234a6a0177ad3378", "fetched_at": "2026-08-29T09:52:07.893311+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/changelog.html"}, {"content_hash": "22e1090e98dcba9db3d8149a9559f21d4b68f017aeecdbf2aeb901aba70b12cc", "fetched_at": "2026-08-29T09:52:07.895337+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/about.html"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.882063+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/aeneas/docs"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.884132+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs"}, {"content_hash": "e72ba305471cdea0add5889930505a224e238e9b2f8c6d35ddc26d4e56bd75ab", "fetched_at": "2026-08-29T09:52:07.886087+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/clitutorial.html"}, {"content_hash": "fa51172bc4a4c60b76d816e3a0635e6011f1b7fb064602f5ca31bc14c12ff652", "fetched_at": "2026-08-29T09:52:07.889128+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/textfile.html"}, {"content_hash": "116b5a823dd41944bec69170154131dd64a7d556cf43388a922fff86bbc395bd", "fetched_at": "2026-08-29T09:52:07.896978+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aeneas/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:48:29.393797+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e27199e75fbcee21362929cbb02c1bf444d8177f3690b4ff395e988ef4aced52", "fetched_at": "2026-08-28T04:07:26.422158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/readbeyond/aeneas"}, {"content_hash": "b92ff4d76b843c5b7857e23c7f1847b062b317e7d365b062aea172b108b7ac70", "fetched_at": "2026-08-29T09:52:07.878713+00:00", "kind": "homepage", "missing": false, "url": "http://www.readbeyond.it/aeneas/"}, {"content_hash": "f41706419ffa22d687b3b5ea4e441d1b2ac9df029b7f4f1e1a9fb470bf0e4f6e", "fetched_at": "2026-08-29T09:52:07.891188+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/libtutorial.html"}, {"content_hash": "12fa9cb3fbaf22464d54404dfe45a49535424bcd6acef4c8234a6a0177ad3378", "fetched_at": "2026-08-29T09:52:07.893311+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/changelog.html"}, {"content_hash": "22e1090e98dcba9db3d8149a9559f21d4b68f017aeecdbf2aeb901aba70b12cc", "fetched_at": "2026-08-29T09:52:07.895337+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/about.html"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.882063+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/aeneas/docs"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.884132+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs"}, {"content_hash": "e72ba305471cdea0add5889930505a224e238e9b2f8c6d35ddc26d4e56bd75ab", "fetched_at": "2026-08-29T09:52:07.886087+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/clitutorial.html"}, {"content_hash": "fa51172bc4a4c60b76d816e3a0635e6011f1b7fb064602f5ca31bc14c12ff652", "fetched_at": "2026-08-29T09:52:07.889128+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/textfile.html"}, {"content_hash": "116b5a823dd41944bec69170154131dd64a7d556cf43388a922fff86bbc395bd", "fetched_at": "2026-08-29T09:52:07.896978+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aeneas/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:48:29.393797+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e27199e75fbcee21362929cbb02c1bf444d8177f3690b4ff395e988ef4aced52", "fetched_at": "2026-08-28T04:07:26.422158+00:00", "kind": "readme", "missing": false, "url": "https://github.com/readbeyond/aeneas"}, {"content_hash": "b92ff4d76b843c5b7857e23c7f1847b062b317e7d365b062aea172b108b7ac70", "fetched_at": "2026-08-29T09:52:07.878713+00:00", "kind": "homepage", "missing": false, "url": "http://www.readbeyond.it/aeneas/"}, {"content_hash": "f41706419ffa22d687b3b5ea4e441d1b2ac9df029b7f4f1e1a9fb470bf0e4f6e", "fetched_at": "2026-08-29T09:52:07.891188+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/libtutorial.html"}, {"content_hash": "12fa9cb3fbaf22464d54404dfe45a49535424bcd6acef4c8234a6a0177ad3378", "fetched_at": "2026-08-29T09:52:07.893311+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/changelog.html"}, {"content_hash": "22e1090e98dcba9db3d8149a9559f21d4b68f017aeecdbf2aeb901aba70b12cc", "fetched_at": "2026-08-29T09:52:07.895337+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/about.html"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.882063+00:00", "kind": "site_page", "missing": false, "url": "https://www.readbeyond.it/aeneas/docs"}, {"content_hash": "ddb5da6102937fdd5eec383ab1df3ecfe2a6fdd9187625c14191116d86415bc7", "fetched_at": "2026-08-29T09:52:07.884132+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs"}, {"content_hash": "e72ba305471cdea0add5889930505a224e238e9b2f8c6d35ddc26d4e56bd75ab", "fetched_at": "2026-08-29T09:52:07.886087+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/clitutorial.html"}, {"content_hash": "fa51172bc4a4c60b76d816e3a0635e6011f1b7fb064602f5ca31bc14c12ff652", "fetched_at": "2026-08-29T09:52:07.889128+00:00", "kind": "site_page", "missing": false, "url": "http://www.readbeyond.it/aeneas/docs/textfile.html"}, {"content_hash": "116b5a823dd41944bec69170154131dd64a7d556cf43388a922fff86bbc395bd", "fetched_at": "2026-08-29T09:52:07.896978+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aeneas/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 94, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4132, "days_push": 39, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 65, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}