{"adoption": {"forks": 542, "observed_at": "2026-08-28T04:08:31.865296+00:00", "stars": 3994}, "canonical_url": "https://ross.abutalabs.com/products/ai-media2doc", "card": {"archived": false, "artifact_type": "application", "description": "一键将音视频转化为小红书/公众号/知识笔记/思维导图/视频字幕等各种风格的文档。", "domain": ["artificial-intelligence", "large-language-models", "media", "developer-tools", "self-hosted", "web-development"], "enriched": true, "function": ["speech-recognition", "llm-inference", "video-processing", "audio-processing", "web-framework", "chat-interface", "prompt-engineering"], "health_score": 76, "homepage": null, "language": "Vue", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["hanshuaikang/AI-Media2Doc"], "name": "hanshuaikang/AI-Media2Doc", "platform": ["self-hosted", "python", "cross-platform"], "pushed_at": "2026-02-05T15:34:45+00:00", "repo": "hanshuaikang/AI-Media2Doc", "stars": 3994, "tags": ["transcription", "subtitle-generation", "ffmpeg-wasm", "xiaohongshu", "note-taking", "mindmap", "bilibili", "youtube", "content-creation", "docker", "web-server"], "topics": ["ai", "python", "vue", "bilibili", "chatgpt", "openai", "youtube", "subtitles-generator", "xiaohongshu"], "urls": [], "use_cases": ["convert video to text notes", "generate subtitles from audio or video", "turn a YouTube or Bilibili video into a blog article", "create Xiaohongshu posts from video content", "make a mind map from a lecture recording", "summarize podcast audio into knowledge notes", "ask AI questions about a video's content", "self-host a media-to-document transcription tool"], "what_it_is": "A self-hostable web application that uses AI large language models to convert video and audio into various document styles such as Xiaohongshu posts, WeChat articles, knowledge notes, mind maps, and subtitles. It runs locally via Docker with no login required, using ffmpeg.wasm in the browser for media processing.", "when_to_avoid": ["you need fully offline transcription today - it relies on cloud LLM APIs (local fast-whisper is only planned)", "you need a managed SaaS with team collaboration features", "you need batch processing of large media libraries at scale"], "when_to_choose": ["you want to transcribe and restyle video/audio content into documents without paid accounts", "privacy matters and you prefer local deployment with no third-party uploads", "you want automatic smart screenshots inserted into generated articles", "you need one-click subtitle export or customizable prompts"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ai-media2doc", "repo": "hanshuaikang/AI-Media2Doc", "role": "main", "score": 57}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:31.865296+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:24:12.132111+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "552e7683404a5ac25cd9b86b488d1c011e7ed062d0be6dab3f59137d22c42bdc", "fetched_at": "2026-08-28T04:08:31.865296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanshuaikang/AI-Media2Doc"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:31.865296+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:24:12.132111+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "552e7683404a5ac25cd9b86b488d1c011e7ed062d0be6dab3f59137d22c42bdc", "fetched_at": "2026-08-28T04:08:31.865296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanshuaikang/AI-Media2Doc"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:24:12.132111+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "552e7683404a5ac25cd9b86b488d1c011e7ed062d0be6dab3f59137d22c42bdc", "fetched_at": "2026-08-28T04:08:31.865296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanshuaikang/AI-Media2Doc"}], "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:08:31.865296+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:31.865296+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:31.865296+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:24:12.132111+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "552e7683404a5ac25cd9b86b488d1c011e7ed062d0be6dab3f59137d22c42bdc", "fetched_at": "2026-08-28T04:08:31.865296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanshuaikang/AI-Media2Doc"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:31.865296+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:31.865296+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:24:12.132111+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "552e7683404a5ac25cd9b86b488d1c011e7ed062d0be6dab3f59137d22c42bdc", "fetched_at": "2026-08-28T04:08:31.865296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanshuaikang/AI-Media2Doc"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:31.865296+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:31.865296+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:31.865296+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:24:12.132111+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "552e7683404a5ac25cd9b86b488d1c011e7ed062d0be6dab3f59137d22c42bdc", "fetched_at": "2026-08-28T04:08:31.865296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanshuaikang/AI-Media2Doc"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:31.865296+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:31.865296+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:24:12.132111+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "552e7683404a5ac25cd9b86b488d1c011e7ed062d0be6dab3f59137d22c42bdc", "fetched_at": "2026-08-28T04:08:31.865296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanshuaikang/AI-Media2Doc"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:24:12.132111+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "552e7683404a5ac25cd9b86b488d1c011e7ed062d0be6dab3f59137d22c42bdc", "fetched_at": "2026-08-28T04:08:31.865296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanshuaikang/AI-Media2Doc"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:24:12.132111+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "552e7683404a5ac25cd9b86b488d1c011e7ed062d0be6dab3f59137d22c42bdc", "fetched_at": "2026-08-28T04:08:31.865296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanshuaikang/AI-Media2Doc"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:24:12.132111+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "552e7683404a5ac25cd9b86b488d1c011e7ed062d0be6dab3f59137d22c42bdc", "fetched_at": "2026-08-28T04:08:31.865296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanshuaikang/AI-Media2Doc"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 66, "longevity": 36, "rhythm": 58}, "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": 508, "days_push": 209, "days_rel": 283, "gap_med": 9.0, "n_releases_24m": 19}, "score": 57, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}