{"adoption": {"forks": 107, "observed_at": "2026-08-28T04:05:47.831177+00:00", "stars": 1877}, "canonical_url": "https://ross.abutalabs.com/products/elog", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Markdown 批量导出工具、开放式跨平台博客解决方案，随意组合写作平台(语雀/Notion/FlowUs/飞书/我来Wolai)和博客平台(Hexo/Vitepress/Halo/Confluence/WordPress等)", "domain": ["cms", "documentation", "web-development", "developer-tools"], "enriched": true, "function": ["markdown", "cli", "file-upload", "static-site-generator", "workflow-automation", "developer-tools"], "health_score": 86, "homepage": "https://elog.1874.cool", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["LetTTGACO/elog"], "name": "LetTTGACO/elog", "platform": ["cli", "cross-platform"], "pushed_at": "2026-07-10T06:59:38+00:00", "repo": "LetTTGACO/elog", "stars": 1877, "tags": ["blog-publishing", "notion-export", "yuque-export", "feishu-docs", "image-hosting", "front-matter", "static-site", "content-sync", "automation", "nodejs"], "topics": ["blog", "hexo", "hugo", "notion", "vitepress", "yuque", "confluence", "docusaurus", "docz", "flowus", "markdown", "wordpress", "feishu"], "urls": [], "use_cases": ["export notion pages to markdown for hexo", "sync yuque docs to vitepress blog", "publish feishu documents to wordpress", "batch download markdown from writing platforms", "replace image links with my own image host", "write in notion and deploy to hugo", "migrate flowus docs to a static site"], "what_it_is": "Elog is an open-source cross-platform blogging solution that syncs Markdown documents from writing platforms (Notion, Yuque, FlowUs, Feishu, Wolai, Outline) to blog platforms (Hexo, Vitepress, Hugo, Halo, Confluence, WordPress, etc.). It also re-hosts document images to configurable image beds and supports multiple output formats including Markdown with front matter, HTML, and Confluence wiki.", "when_to_avoid": ["your writing platform and blog platform are the same tool", "you need a WYSIWYG editor or a full blogging system rather than a sync/export tool", "your platform is not among the supported writing or blog platforms and you cannot write a custom adapter"], "when_to_choose": ["you write in Notion/Yuque/Feishu/FlowUs but publish to a Markdown-based static site or CMS", "you need to fix image hotlink protection by re-uploading images to your own image bed", "you want automated, repeatable syncing between a writing platform and a blog platform"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/elog", "repo": "LetTTGACO/elog", "role": "main", "score": 70}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.831177+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:14:41.211946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e4e4f2c23532e06c28494741244e7aa9749b5b9e81dd6cd54e3ead6779464cf", "fetched_at": "2026-08-28T04:05:47.831177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LetTTGACO/elog"}, {"content_hash": "a4004790fd64b5df669051e42b4dcb388a54fdd297f883408f8aba13f1687152", "fetched_at": "2026-08-29T10:53:38.767885+00:00", "kind": "homepage", "missing": false, "url": "https://elog.1874.cool"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.831177+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:14:41.211946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e4e4f2c23532e06c28494741244e7aa9749b5b9e81dd6cd54e3ead6779464cf", "fetched_at": "2026-08-28T04:05:47.831177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LetTTGACO/elog"}, {"content_hash": "a4004790fd64b5df669051e42b4dcb388a54fdd297f883408f8aba13f1687152", "fetched_at": "2026-08-29T10:53:38.767885+00:00", "kind": "homepage", "missing": false, "url": "https://elog.1874.cool"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:14:41.211946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e4e4f2c23532e06c28494741244e7aa9749b5b9e81dd6cd54e3ead6779464cf", "fetched_at": "2026-08-28T04:05:47.831177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LetTTGACO/elog"}, {"content_hash": "a4004790fd64b5df669051e42b4dcb388a54fdd297f883408f8aba13f1687152", "fetched_at": "2026-08-29T10:53:38.767885+00:00", "kind": "homepage", "missing": false, "url": "https://elog.1874.cool"}], "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:47.831177+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.831177+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.831177+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:14:41.211946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e4e4f2c23532e06c28494741244e7aa9749b5b9e81dd6cd54e3ead6779464cf", "fetched_at": "2026-08-28T04:05:47.831177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LetTTGACO/elog"}, {"content_hash": "a4004790fd64b5df669051e42b4dcb388a54fdd297f883408f8aba13f1687152", "fetched_at": "2026-08-29T10:53:38.767885+00:00", "kind": "homepage", "missing": false, "url": "https://elog.1874.cool"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.831177+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.831177+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:14:41.211946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e4e4f2c23532e06c28494741244e7aa9749b5b9e81dd6cd54e3ead6779464cf", "fetched_at": "2026-08-28T04:05:47.831177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LetTTGACO/elog"}, {"content_hash": "a4004790fd64b5df669051e42b4dcb388a54fdd297f883408f8aba13f1687152", "fetched_at": "2026-08-29T10:53:38.767885+00:00", "kind": "homepage", "missing": false, "url": "https://elog.1874.cool"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.831177+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.831177+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.831177+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:14:41.211946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e4e4f2c23532e06c28494741244e7aa9749b5b9e81dd6cd54e3ead6779464cf", "fetched_at": "2026-08-28T04:05:47.831177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LetTTGACO/elog"}, {"content_hash": "a4004790fd64b5df669051e42b4dcb388a54fdd297f883408f8aba13f1687152", "fetched_at": "2026-08-29T10:53:38.767885+00:00", "kind": "homepage", "missing": false, "url": "https://elog.1874.cool"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.831177+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.831177+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:14:41.211946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e4e4f2c23532e06c28494741244e7aa9749b5b9e81dd6cd54e3ead6779464cf", "fetched_at": "2026-08-28T04:05:47.831177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LetTTGACO/elog"}, {"content_hash": "a4004790fd64b5df669051e42b4dcb388a54fdd297f883408f8aba13f1687152", "fetched_at": "2026-08-29T10:53:38.767885+00:00", "kind": "homepage", "missing": false, "url": "https://elog.1874.cool"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:14:41.211946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e4e4f2c23532e06c28494741244e7aa9749b5b9e81dd6cd54e3ead6779464cf", "fetched_at": "2026-08-28T04:05:47.831177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LetTTGACO/elog"}, {"content_hash": "a4004790fd64b5df669051e42b4dcb388a54fdd297f883408f8aba13f1687152", "fetched_at": "2026-08-29T10:53:38.767885+00:00", "kind": "homepage", "missing": false, "url": "https://elog.1874.cool"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:14:41.211946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e4e4f2c23532e06c28494741244e7aa9749b5b9e81dd6cd54e3ead6779464cf", "fetched_at": "2026-08-28T04:05:47.831177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LetTTGACO/elog"}, {"content_hash": "a4004790fd64b5df669051e42b4dcb388a54fdd297f883408f8aba13f1687152", "fetched_at": "2026-08-29T10:53:38.767885+00:00", "kind": "homepage", "missing": false, "url": "https://elog.1874.cool"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:14:41.211946+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e4e4f2c23532e06c28494741244e7aa9749b5b9e81dd6cd54e3ead6779464cf", "fetched_at": "2026-08-28T04:05:47.831177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LetTTGACO/elog"}, {"content_hash": "a4004790fd64b5df669051e42b4dcb388a54fdd297f883408f8aba13f1687152", "fetched_at": "2026-08-29T10:53:38.767885+00:00", "kind": "homepage", "missing": false, "url": "https://elog.1874.cool"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 91, "longevity": 97, "rhythm": 28}, "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": 1371, "days_push": 54, "days_rel": 551, "gap_med": 50, "n_releases_24m": 4}, "score": 70, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}