{"adoption": {"forks": 104, "observed_at": "2026-08-28T04:03:35.609670+00:00", "stars": 1101}, "canonical_url": "https://ross.abutalabs.com/products/auto_symlink", "card": {"archived": false, "artifact_type": "application", "description": "实时监控文件夹，创建与更新软链接/strm文件，自动复制与更新元数据，清空无效文件夹，清空无效软链接", "domain": ["media", "self-hosted", "files"], "enriched": true, "function": ["file-system", "workflow-automation", "monitoring", "webhook", "self-hosted"], "health_score": 52, "homepage": null, "language": null, "license": null, "license_family": "other", "maturity": "active", "member_repos": ["shenxianmq/Auto_Symlink"], "name": "shenxianmq/Auto_Symlink", "platform": ["windows", "python", "self-hosted"], "pushed_at": "2025-11-24T13:35:06+00:00", "repo": "shenxianmq/Auto_Symlink", "stars": 1101, "tags": ["symlink-management", "strm-files", "emby", "jellyfin", "plex", "clouddrive2", "alist", "media-server", "cloud-mount", "automation", "docker", "linux", "web-server"], "topics": [], "urls": [], "use_cases": ["create symlinks for emby from clouddrive2 mounted cloud drive", "generate strm files for jellyfin from alist", "reduce cloud drive access during media library scraping", "automatically notify plex when new videos appear", "clean up broken symlinks and empty folders in media library", "auto transfer files from one folder to another and delete source", "generate emby media library cover images"], "what_it_is": "Auto_Symlink is a self-hosted automation tool that monitors directories mounted from cloud drives via CloudDrive2/Alist and creates/updates symlinks and .strm files for media servers like Emby, Jellyfin, and Plex. It also copies metadata, cleans invalid links and folders, notifies media servers of new content, and offers a web UI for configuration and log viewing.", "when_to_avoid": ["your media is stored entirely on local disks with no cloud mount", "you need Windows-compatible symlinks for playback (links use absolute Linux paths)", "you want a fully GUI-native desktop application rather than a Docker/Python service"], "when_to_choose": ["you mount cloud storage with CloudDrive2 or Alist and serve media through Emby/Jellyfin/Plex", "you want faster library scans with fewer hits to the cloud drive", "you need automatic symlink/strm upkeep and cleanup of stale links"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/auto_symlink", "repo": "shenxianmq/Auto_Symlink", "role": "main", "score": 50}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:35.609670+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:45:44.091526+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aad8203c652073f8fb89ef219b572ff8ae41dee161e2c8769409ab97bd5d6a3e", "fetched_at": "2026-08-28T04:03:35.609670+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shenxianmq/Auto_Symlink"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:35.609670+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:45:44.091526+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aad8203c652073f8fb89ef219b572ff8ae41dee161e2c8769409ab97bd5d6a3e", "fetched_at": "2026-08-28T04:03:35.609670+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shenxianmq/Auto_Symlink"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:45:44.091526+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aad8203c652073f8fb89ef219b572ff8ae41dee161e2c8769409ab97bd5d6a3e", "fetched_at": "2026-08-28T04:03:35.609670+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shenxianmq/Auto_Symlink"}], "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:03:35.609670+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:35.609670+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:35.609670+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:45:44.091526+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aad8203c652073f8fb89ef219b572ff8ae41dee161e2c8769409ab97bd5d6a3e", "fetched_at": "2026-08-28T04:03:35.609670+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shenxianmq/Auto_Symlink"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:35.609670+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:35.609670+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:45:44.091526+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aad8203c652073f8fb89ef219b572ff8ae41dee161e2c8769409ab97bd5d6a3e", "fetched_at": "2026-08-28T04:03:35.609670+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shenxianmq/Auto_Symlink"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:35.609670+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:35.609670+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:35.609670+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:45:44.091526+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aad8203c652073f8fb89ef219b572ff8ae41dee161e2c8769409ab97bd5d6a3e", "fetched_at": "2026-08-28T04:03:35.609670+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shenxianmq/Auto_Symlink"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:35.609670+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:35.609670+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:45:44.091526+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aad8203c652073f8fb89ef219b572ff8ae41dee161e2c8769409ab97bd5d6a3e", "fetched_at": "2026-08-28T04:03:35.609670+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shenxianmq/Auto_Symlink"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:45:44.091526+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aad8203c652073f8fb89ef219b572ff8ae41dee161e2c8769409ab97bd5d6a3e", "fetched_at": "2026-08-28T04:03:35.609670+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shenxianmq/Auto_Symlink"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:45:44.091526+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aad8203c652073f8fb89ef219b572ff8ae41dee161e2c8769409ab97bd5d6a3e", "fetched_at": "2026-08-28T04:03:35.609670+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shenxianmq/Auto_Symlink"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:45:44.091526+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aad8203c652073f8fb89ef219b572ff8ae41dee161e2c8769409ab97bd5d6a3e", "fetched_at": "2026-08-28T04:03:35.609670+00:00", "kind": "readme", "missing": false, "url": "https://github.com/shenxianmq/Auto_Symlink"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 53, "longevity": 72, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1008, "days_push": 282, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 50, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}