{"adoption": {"forks": 117, "observed_at": "2026-08-28T04:05:24.502471+00:00", "stars": 1703}, "canonical_url": "https://ross.abutalabs.com/products/yiyin", "card": {"archived": false, "artifact_type": "application", "description": "一款照片水印添加工具", "domain": ["image-processing", "photography", "desktop-applications", "media"], "enriched": true, "function": ["image-processing"], "health_score": 89, "homepage": null, "language": "TypeScript", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["ggchivalrous/yiyin"], "name": "ggchivalrous/yiyin", "platform": ["cross-platform", "windows"], "pushed_at": "2026-05-25T14:41:00+00:00", "repo": "ggchivalrous/yiyin", "stars": 1703, "tags": ["watermark", "photo-frame", "photography", "batch-processing", "custom-fonts", "offline", "desktop", "macos"], "topics": [], "urls": [], "use_cases": ["add watermark frames to photos before posting to social media", "generate styled photo borders with custom fonts", "batch process images to add signature frames", "convert portrait photos to landscape framed outputs", "brand photos with a personal watermark without online tools"], "what_it_is": "Yiyin (壹印) is a free, open-source desktop application for adding watermark frames to photos, generating styled image borders with customizable parameters and fonts. It works entirely offline with no embedded watermarks and supports custom font uploads stored locally.", "when_to_avoid": ["you need heavy image editing beyond watermarking and framing", "you require automated server-side or CLI batch pipelines", "you need fine-grained layer-based watermark positioning like professional editors"], "when_to_choose": ["you want a free, offline, no-watermark photo framing tool", "you need customizable fonts and frame parameters for photo watermarks", "you prefer a simple install-and-use desktop app over web services"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/yiyin", "repo": "ggchivalrous/yiyin", "role": "main", "score": 83}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.502471+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.959657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "20e0931e1dc226accadc3b37daecfbcd5d72fc40b14ecf8463d57bdac1a01d7b", "fetched_at": "2026-08-28T04:05:24.502471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ggchivalrous/yiyin"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.502471+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.959657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "20e0931e1dc226accadc3b37daecfbcd5d72fc40b14ecf8463d57bdac1a01d7b", "fetched_at": "2026-08-28T04:05:24.502471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ggchivalrous/yiyin"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.959657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "20e0931e1dc226accadc3b37daecfbcd5d72fc40b14ecf8463d57bdac1a01d7b", "fetched_at": "2026-08-28T04:05:24.502471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ggchivalrous/yiyin"}], "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:05:24.502471+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.502471+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.502471+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.959657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "20e0931e1dc226accadc3b37daecfbcd5d72fc40b14ecf8463d57bdac1a01d7b", "fetched_at": "2026-08-28T04:05:24.502471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ggchivalrous/yiyin"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.502471+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.502471+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.959657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "20e0931e1dc226accadc3b37daecfbcd5d72fc40b14ecf8463d57bdac1a01d7b", "fetched_at": "2026-08-28T04:05:24.502471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ggchivalrous/yiyin"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.502471+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.502471+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.502471+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.959657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "20e0931e1dc226accadc3b37daecfbcd5d72fc40b14ecf8463d57bdac1a01d7b", "fetched_at": "2026-08-28T04:05:24.502471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ggchivalrous/yiyin"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.502471+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.502471+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.959657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "20e0931e1dc226accadc3b37daecfbcd5d72fc40b14ecf8463d57bdac1a01d7b", "fetched_at": "2026-08-28T04:05:24.502471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ggchivalrous/yiyin"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.959657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "20e0931e1dc226accadc3b37daecfbcd5d72fc40b14ecf8463d57bdac1a01d7b", "fetched_at": "2026-08-28T04:05:24.502471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ggchivalrous/yiyin"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.959657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "20e0931e1dc226accadc3b37daecfbcd5d72fc40b14ecf8463d57bdac1a01d7b", "fetched_at": "2026-08-28T04:05:24.502471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ggchivalrous/yiyin"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:37:37.959657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "20e0931e1dc226accadc3b37daecfbcd5d72fc40b14ecf8463d57bdac1a01d7b", "fetched_at": "2026-08-28T04:05:24.502471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ggchivalrous/yiyin"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 84, "longevity": 77, "rhythm": 85}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1089, "days_push": 100, "days_rel": 100, "gap_med": 13.5, "n_releases_24m": 5}, "score": 83, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}