{"adoption": {"forks": 76, "observed_at": "2026-08-28T04:03:25.836903+00:00", "stars": 1060}, "canonical_url": "https://ross.abutalabs.com/products/wenyan", "card": {"archived": false, "artifact_type": "service", "description": "文颜- Markdown文章排版美化工具，支持微信公众号、今日头条、知乎等平台。", "domain": ["large-language-models", "web-development", "social-media"], "enriched": true, "function": ["mcp", "markdown", "templating", "workflow-automation"], "health_score": 86, "homepage": "https://wenyan.yuzhi.tech", "language": "Swift", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["caol64/wenyan", "caol64/wenyan-mcp"], "name": "Wenyan", "platform": ["cli", "windows"], "pushed_at": "2026-04-29T03:55:13+00:00", "repo": "caol64/wenyan", "stars": 1060, "tags": ["mcp-server", "wechat-official-account", "markdown-publishing", "content-publishing", "ai-writing", "ai-agents", "automation", "nodejs", "docker", "macos", "linux"], "topics": ["swiftui", "wenyan", "wechat"], "urls": [{"kind": "homepage", "url": "https://wenyan.yuzhi.tech"}], "use_cases": ["publish markdown articles to wechat official account via ai", "format markdown for wechat公众号 without copy-pasting into editors", "let claude desktop manage wechat article themes and drafts", "automate blog publishing to wechat from ci", "convert ai-generated markdown to wechat rich text with images uploaded", "register custom css themes for wechat article styling"], "what_it_is": "Wenyan MCP Server is a Model Context Protocol server that lets AI clients like Claude Desktop format Markdown articles and publish them directly to WeChat Official Account draft boxes. It is part of the Wenyan suite, a multi-platform Markdown typesetting and publishing tool that also ships as desktop apps and a CLI.", "when_to_avoid": ["you publish to platforms other than WeChat/Zhihu/Toutiao", "you need a fully manual WYSIWYG editor rather than AI-driven publishing", "you cannot provide WeChat Official Account app credentials"], "when_to_choose": ["you write with AI assistants and want a one-step pipeline from markdown to WeChat drafts", "you want conversational theme switching and custom CSS themes for WeChat formatting", "you need automated publishing from CLI/CI or MCP-capable clients"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/repos/caol64/wenyan", "repo": "caol64/wenyan", "role": "main", "score": 73}, {"path": "/repos/caol64/wenyan-mcp", "repo": "caol64/wenyan-mcp", "role": "plugin", "score": 70}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:25.836903+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:50:17.451953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "529dd3e56d580e5c2ce20d40cd487111655b832c08930628c1371e83d6dcfbab", "fetched_at": "2026-08-28T04:03:25.836903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/caol64/wenyan"}, {"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T12:08:57.061365+00:00", "kind": "homepage", "missing": false, "url": "https://wenyan.yuzhi.tech"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:25.836903+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:50:17.451953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "529dd3e56d580e5c2ce20d40cd487111655b832c08930628c1371e83d6dcfbab", "fetched_at": "2026-08-28T04:03:25.836903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/caol64/wenyan"}, {"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T12:08:57.061365+00:00", "kind": "homepage", "missing": false, "url": "https://wenyan.yuzhi.tech"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:50:17.451953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "529dd3e56d580e5c2ce20d40cd487111655b832c08930628c1371e83d6dcfbab", "fetched_at": "2026-08-28T04:03:25.836903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/caol64/wenyan"}, {"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T12:08:57.061365+00:00", "kind": "homepage", "missing": false, "url": "https://wenyan.yuzhi.tech"}], "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:25.836903+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:25.836903+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:25.836903+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:50:17.451953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "529dd3e56d580e5c2ce20d40cd487111655b832c08930628c1371e83d6dcfbab", "fetched_at": "2026-08-28T04:03:25.836903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/caol64/wenyan"}, {"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T12:08:57.061365+00:00", "kind": "homepage", "missing": false, "url": "https://wenyan.yuzhi.tech"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:25.836903+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:25.836903+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:50:17.451953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "529dd3e56d580e5c2ce20d40cd487111655b832c08930628c1371e83d6dcfbab", "fetched_at": "2026-08-28T04:03:25.836903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/caol64/wenyan"}, {"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T12:08:57.061365+00:00", "kind": "homepage", "missing": false, "url": "https://wenyan.yuzhi.tech"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:25.836903+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:25.836903+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:25.836903+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:50:17.451953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "529dd3e56d580e5c2ce20d40cd487111655b832c08930628c1371e83d6dcfbab", "fetched_at": "2026-08-28T04:03:25.836903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/caol64/wenyan"}, {"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T12:08:57.061365+00:00", "kind": "homepage", "missing": false, "url": "https://wenyan.yuzhi.tech"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:25.836903+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:25.836903+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:50:17.451953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "529dd3e56d580e5c2ce20d40cd487111655b832c08930628c1371e83d6dcfbab", "fetched_at": "2026-08-28T04:03:25.836903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/caol64/wenyan"}, {"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T12:08:57.061365+00:00", "kind": "homepage", "missing": false, "url": "https://wenyan.yuzhi.tech"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:50:17.451953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "529dd3e56d580e5c2ce20d40cd487111655b832c08930628c1371e83d6dcfbab", "fetched_at": "2026-08-28T04:03:25.836903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/caol64/wenyan"}, {"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T12:08:57.061365+00:00", "kind": "homepage", "missing": false, "url": "https://wenyan.yuzhi.tech"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:50:17.451953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "529dd3e56d580e5c2ce20d40cd487111655b832c08930628c1371e83d6dcfbab", "fetched_at": "2026-08-28T04:03:25.836903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/caol64/wenyan"}, {"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T12:08:57.061365+00:00", "kind": "homepage", "missing": false, "url": "https://wenyan.yuzhi.tech"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:50:17.451953+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "529dd3e56d580e5c2ce20d40cd487111655b832c08930628c1371e83d6dcfbab", "fetched_at": "2026-08-28T04:03:25.836903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/caol64/wenyan"}, {"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T12:08:57.061365+00:00", "kind": "homepage", "missing": false, "url": "https://wenyan.yuzhi.tech"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 79, "longevity": 52, "rhythm": 77}, "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": 741, "days_push": 126, "days_rel": 159, "gap_med": 13.5, "n_releases_24m": 11}, "score": 73, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}