From a63d3e89fff43f46ebb5be97a102d1782f2053f7 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 11:41:12 +0800 Subject: [PATCH 01/47] feat: implement stats history, growth tracking, and mermaid trend charts --- README.md | 18 +-- README_CN.md | 18 +-- docs/community-stats.json | 66 +++++------ docs/community-stats.md | 75 +++++++----- docs/community-stats.zh.md | 75 +++++++----- docs/stats-history.json | 29 +++++ scripts/openwebui_stats.py | 226 +++++++++++++++++++++++++++++++++---- 7 files changed, 378 insertions(+), 129 deletions(-) create mode 100644 docs/stats-history.json diff --git a/README.md b/README.md index 3854a45..f47e412 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats -> 🕐 Auto-updated: 2026-02-11 11:11 +> 🕐 Auto-updated: 2026-02-11 11:40 | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | :---: | :---: | :---: | :---: | @@ -16,20 +16,20 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | 📝 Posts | ⬇️ Downloads | 👁️ Views | 👍 Upvotes | 💾 Saves | | :---: | :---: | :---: | :---: | :---: | -| **22** | **4154** | **49223** | **231** | **274** | +| **22** | **4154** | **45888** | **231** | **274** | ### 🔥 Top 6 Popular Plugins -> 🕐 Auto-updated: 2026-02-11 11:11 +> 🕐 Auto-updated: 2026-02-11 11:40 | Rank | Plugin | Version | Downloads | Views | Updated | | :---: | :--- | :---: | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 953 | 8381 | 2026-01-28 | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 706 | 6695 | 2026-01-30 | -| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | 383 | 3022 | 2026-02-07 | -| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | 363 | 3750 | 2026-01-28 | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 342 | 1670 | 2026-02-09 | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 341 | 4706 | 2026-01-29 | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 953 | 8381 | 2026-01-29 | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 706 | 6698 | 2026-01-31 | +| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | 383 | 3026 | 2026-02-07 | +| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | 363 | 3754 | 2026-01-29 | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 342 | 1670 | 2026-02-10 | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 341 | 4710 | 2026-01-29 | *See full stats in [Community Stats Report](./docs/community-stats.md)* diff --git a/README_CN.md b/README_CN.md index 1472d9e..1d17710 100644 --- a/README_CN.md +++ b/README_CN.md @@ -7,7 +7,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ## 📊 社区统计 -> 🕐 自动更新于 2026-02-11 11:11 +> 🕐 自动更新于 2026-02-11 11:40 | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | :---: | :---: | :---: | :---: | @@ -15,20 +15,20 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 | 📝 发布 | ⬇️ 下载 | 👁️ 浏览 | 👍 点赞 | 💾 收藏 | | :---: | :---: | :---: | :---: | :---: | -| **22** | **4154** | **49223** | **231** | **274** | +| **22** | **4154** | **45888** | **231** | **274** | ### 🔥 热门插件 Top 6 -> 🕐 自动更新于 2026-02-11 11:11 +> 🕐 自动更新于 2026-02-11 11:40 | 排名 | 插件 | 版本 | 下载 | 浏览 | 更新日期 | | :---: | :--- | :---: | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 953 | 8381 | 2026-01-28 | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 706 | 6695 | 2026-01-30 | -| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | 383 | 3022 | 2026-02-07 | -| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | 363 | 3750 | 2026-01-28 | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 342 | 1670 | 2026-02-09 | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 341 | 4706 | 2026-01-29 | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 953 | 8381 | 2026-01-29 | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 706 | 6698 | 2026-01-31 | +| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | 383 | 3026 | 2026-02-07 | +| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | 363 | 3754 | 2026-01-29 | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 342 | 1670 | 2026-02-10 | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 341 | 4710 | 2026-01-29 | *完整统计请查看 [社区统计报告](./docs/community-stats.zh.md)* diff --git a/docs/community-stats.json b/docs/community-stats.json index 93e0303..2a9cbac 100644 --- a/docs/community-stats.json +++ b/docs/community-stats.json @@ -1,16 +1,18 @@ { "total_posts": 22, "total_downloads": 4154, - "total_views": 49223, + "total_views": 45888, "total_upvotes": 231, "total_downvotes": 2, "total_saves": 274, "total_comments": 55, "by_type": { - "unknown": 5, - "filter": 2, + "post": 3, + "filter": 4, "pipe": 1, - "action": 14 + "action": 12, + "prompt": 1, + "review": 1 }, "posts": [ { @@ -25,8 +27,8 @@ "upvotes": 22, "saves": 50, "comments": 13, - "created_at": "2025-12-30", - "updated_at": "2026-01-28", + "created_at": "2025-12-31", + "updated_at": "2026-01-29", "url": "https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a" }, { @@ -37,12 +39,12 @@ "author": "Fu-Jie", "description": "AI-powered infographic generator based on AntV Infographic. Supports professional templates, auto-icon matching, and SVG/PNG downloads.", "downloads": 706, - "views": 6695, + "views": 6698, "upvotes": 24, "saves": 34, "comments": 10, "created_at": "2025-12-28", - "updated_at": "2026-01-30", + "updated_at": "2026-01-31", "url": "https://openwebui.com/posts/smart_infographic_ad6f0c7f" }, { @@ -53,7 +55,7 @@ "author": "Fu-Jie", "description": "Export current conversation from Markdown to Word (.docx) with Mermaid diagrams rendered client-side (Mermaid.js, SVG+PNG), LaTeX math, real hyperlinks, improved tables, syntax highlighting, and blockquote support.", "downloads": 383, - "views": 3022, + "views": 3026, "upvotes": 14, "saves": 26, "comments": 5, @@ -64,17 +66,17 @@ { "title": "Async Context Compression", "slug": "async_context_compression_b1655bc8", - "type": "action", + "type": "filter", "version": "1.2.2", "author": "Fu-Jie", "description": "Reduces token consumption in long conversations while maintaining coherence through intelligent summarization and message compression.", "downloads": 363, - "views": 3750, + "views": 3754, "upvotes": 14, "saves": 34, "comments": 0, "created_at": "2025-11-08", - "updated_at": "2026-01-28", + "updated_at": "2026-01-29", "url": "https://openwebui.com/posts/async_context_compression_b1655bc8" }, { @@ -90,18 +92,18 @@ "saves": 6, "comments": 0, "created_at": "2025-05-30", - "updated_at": "2026-02-09", + "updated_at": "2026-02-10", "url": "https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d" }, { "title": "Markdown Normalizer", "slug": "markdown_normalizer_baaa8732", - "type": "action", + "type": "filter", "version": "1.2.4", "author": "Fu-Jie", "description": "A content normalizer filter that fixes common Markdown formatting issues in LLM outputs, such as broken code blocks, LaTeX formulas, and list formatting.", "downloads": 341, - "views": 4706, + "views": 4710, "upvotes": 17, "saves": 30, "comments": 5, @@ -117,18 +119,18 @@ "author": "Fu-Jie", "description": "Quickly generates beautiful flashcards from text, extracting key points and categories.", "downloads": 226, - "views": 3385, + "views": 3387, "upvotes": 13, "saves": 14, "comments": 2, "created_at": "2025-12-30", - "updated_at": "2026-01-28", + "updated_at": "2026-01-29", "url": "https://openwebui.com/posts/flash_card_65a2ea8f" }, { "title": "AI Task Instruction Generator", "slug": "ai_task_instruction_generator_9bab8b37", - "type": "unknown", + "type": "prompt", "version": "", "author": "", "description": "", @@ -165,7 +167,7 @@ "author": "Fu-Jie", "description": "将对话导出为 Word (.docx),支持 Mermaid 图表 (客户端渲染 SVG+PNG)、LaTeX 数学公式、真实超链接、增强表格格式、代码高亮和引用块。", "downloads": 128, - "views": 2218, + "views": 2219, "upvotes": 13, "saves": 7, "comments": 4, @@ -181,7 +183,7 @@ "author": "Fu-Jie", "description": "Integrate GitHub Copilot SDK. Supports dynamic models, multi-turn conversation, streaming, multimodal input, infinite sessions, and frontend debug logging.", "downloads": 107, - "views": 2401, + "views": 2402, "upvotes": 14, "saves": 9, "comments": 6, @@ -234,7 +236,7 @@ "saves": 2, "comments": 0, "created_at": "2025-12-31", - "updated_at": "2026-01-28", + "updated_at": "2026-01-29", "url": "https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b" }, { @@ -250,7 +252,7 @@ "saves": 5, "comments": 0, "created_at": "2025-11-08", - "updated_at": "2026-01-28", + "updated_at": "2026-01-29", "url": "https://openwebui.com/posts/异步上下文压缩_5c0617cb" }, { @@ -266,7 +268,7 @@ "saves": 1, "comments": 0, "created_at": "2025-12-30", - "updated_at": "2026-01-28", + "updated_at": "2026-01-29", "url": "https://openwebui.com/posts/闪记卡生成插件_4a31eac3" }, { @@ -293,7 +295,7 @@ "author": "Fu-Jie", "description": "A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It moves uploaded files to a safe location ('copilot_files') so the Copilot Pipe can process them natively without interference.", "downloads": 16, - "views": 840, + "views": 847, "upvotes": 3, "saves": 0, "comments": 0, @@ -304,12 +306,12 @@ { "title": "🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks", "slug": "github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293", - "type": "unknown", + "type": "post", "version": "", "author": "", "description": "", "downloads": 0, - "views": 261, + "views": 268, "upvotes": 5, "saves": 0, "comments": 0, @@ -320,28 +322,28 @@ { "title": "🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager", "slug": "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e", - "type": "unknown", + "type": "post", "version": "", "author": "", "description": "", "downloads": 0, - "views": 1522, + "views": 1523, "upvotes": 12, "saves": 19, "comments": 8, "created_at": "2026-01-25", - "updated_at": "2026-01-28", + "updated_at": "2026-01-29", "url": "https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e" }, { "title": "Review of Claude Haiku 4.5", "slug": "review_of_claude_haiku_45_41b0db39", - "type": "unknown", + "type": "review", "version": "", "author": "", "description": "", "downloads": 0, - "views": 157, + "views": 159, "upvotes": 2, "saves": 0, "comments": 0, @@ -352,7 +354,7 @@ { "title": " 🛠️ Debug Open WebUI Plugins in Your Browser", "slug": "debug_open_webui_plugins_in_your_browser_81bf7960", - "type": "unknown", + "type": "post", "version": "", "author": "", "description": "", diff --git a/docs/community-stats.md b/docs/community-stats.md index 1b8ca59..a366830 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -1,48 +1,63 @@ # 📊 OpenWebUI Community Stats Report -> 📅 Updated: 2026-02-11 11:11 +> 📅 Updated: 2026-02-11 11:40 + +### 📈 增长趋势 (14天) + +```mermaid +xychart-beta + title "Downloads Trend" + x-axis ["02-09", "02-10", "02-11"] + y-axis "Downloads" + line [3800, 4000, 4154] +``` + ## 📈 Overview -| Metric | Value | -|------|------| -| 📝 Total Posts | 22 | -| ⬇️ Total Downloads | 4154 | -| 👁️ Total Views | 49223 | -| 👍 Total Upvotes | 231 | -| 💾 Total Saves | 274 | -| 💬 Total Comments | 55 | +| Metric | Value | Growth (24h) | +|------|------|:---:| +| 📝 Total Posts | 22 | - | +| ⬇️ Total Downloads | 4154 | **+154** 🚀 | +| 👁️ Total Views | 45888 | **+1888** 🚀 | +| 👍 Total Upvotes | 231 | **+11** 🚀 | +| 💾 Total Saves | 274 | - | +| 💬 Total Comments | 55 | - | +| ⭐ Author Points | 271 | - | +| 👥 Followers | 220 | **+2** 🚀 | ## 📂 By Type -- **unknown**: 5 -- **filter**: 2 +- **post**: 3 +- **filter**: 4 - **pipe**: 1 -- **action**: 14 +- **action**: 12 +- **prompt**: 1 +- **review**: 1 ## 📋 Posts List | Rank | Title | Type | Version | Downloads | Views | Upvotes | Saves | Updated | |:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| -| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 953 | 8381 | 22 | 50 | 2026-01-28 | -| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 706 | 6695 | 24 | 34 | 2026-01-30 | -| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 383 | 3022 | 14 | 26 | 2026-02-07 | -| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | action | 1.2.2 | 363 | 3750 | 14 | 34 | 2026-01-28 | -| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 342 | 1670 | 7 | 6 | 2026-02-09 | -| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | action | 1.2.4 | 341 | 4706 | 17 | 30 | 2026-01-29 | -| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 226 | 3385 | 13 | 14 | 2026-01-28 | -| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | unknown | | 200 | 2774 | 9 | 6 | 2026-01-28 | +| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 953 | 8381 | 22 | 50 | 2026-01-29 | +| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 706 | 6698 | 24 | 34 | 2026-01-31 | +| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 383 | 3026 | 14 | 26 | 2026-02-07 | +| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | 363 | 3754 | 14 | 34 | 2026-01-29 | +| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 342 | 1670 | 7 | 6 | 2026-02-10 | +| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | 341 | 4710 | 17 | 30 | 2026-01-29 | +| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 226 | 3387 | 13 | 14 | 2026-01-29 | +| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | | 200 | 2774 | 9 | 6 | 2026-01-28 | | 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | 147 | 1250 | 6 | 11 | 2026-01-08 | -| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | 128 | 2218 | 13 | 7 | 2026-02-07 | -| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | 107 | 2401 | 14 | 9 | 2026-02-10 | +| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | 128 | 2219 | 13 | 7 | 2026-02-07 | +| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | 107 | 2402 | 14 | 9 | 2026-02-10 | | 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | 61 | 1316 | 6 | 8 | 2026-01-20 | | 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | 58 | 1065 | 10 | 1 | 2026-01-29 | -| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | 39 | 589 | 6 | 2 | 2026-01-28 | -| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 668 | 7 | 5 | 2026-01-28 | -| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 690 | 8 | 1 | 2026-01-28 | +| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | 39 | 589 | 6 | 2 | 2026-01-29 | +| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 668 | 7 | 5 | 2026-01-29 | +| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 690 | 8 | 1 | 2026-01-29 | | 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 442 | 5 | 1 | 2026-01-08 | -| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 840 | 3 | 0 | 2026-02-10 | -| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | unknown | | 0 | 261 | 5 | 0 | 2026-02-10 | -| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | unknown | | 0 | 1522 | 12 | 19 | 2026-01-28 | -| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | unknown | | 0 | 157 | 2 | 0 | 2026-01-14 | -| 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | unknown | | 0 | 1421 | 14 | 10 | 2026-01-10 | +| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 847 | 3 | 0 | 2026-02-10 | +| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 268 | 5 | 0 | 2026-02-10 | +| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | 0 | 1523 | 12 | 19 | 2026-01-29 | +| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | 0 | 159 | 2 | 0 | 2026-01-14 | +| 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | 0 | 1421 | 14 | 10 | 2026-01-10 | diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index 17b875b..74f56ad 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -1,48 +1,63 @@ # 📊 OpenWebUI 社区统计报告 -> 📅 更新时间: 2026-02-11 11:11 +> 📅 更新时间: 2026-02-11 11:40 + +### 📈 增长趋势 (14天) + +```mermaid +xychart-beta + title "Downloads Trend" + x-axis ["02-09", "02-10", "02-11"] + y-axis "Downloads" + line [3800, 4000, 4154] +``` + ## 📈 总览 -| 指标 | 数值 | -|------|------| -| 📝 发布数量 | 22 | -| ⬇️ 总下载量 | 4154 | -| 👁️ 总浏览量 | 49223 | -| 👍 总点赞数 | 231 | -| 💾 总收藏数 | 274 | -| 💬 总评论数 | 55 | +| 指标 | 数值 | 增长 (24h) | +|------|------|:---:| +| 📝 发布数量 | 22 | - | +| ⬇️ 总下载量 | 4154 | **+154** 🚀 | +| 👁️ 总浏览量 | 45888 | **+1888** 🚀 | +| 👍 总点赞数 | 231 | **+11** 🚀 | +| 💾 总收藏数 | 274 | - | +| 💬 总评论数 | 55 | - | +| ⭐ 作者总积分 | 271 | - | +| 👥 粉丝数量 | 220 | **+2** 🚀 | ## 📂 按类型分类 -- **unknown**: 5 -- **filter**: 2 +- **post**: 3 +- **filter**: 4 - **pipe**: 1 -- **action**: 14 +- **action**: 12 +- **prompt**: 1 +- **review**: 1 ## 📋 发布列表 | 排名 | 标题 | 类型 | 版本 | 下载 | 浏览 | 点赞 | 收藏 | 更新日期 | |:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| -| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 953 | 8381 | 22 | 50 | 2026-01-28 | -| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 706 | 6695 | 24 | 34 | 2026-01-30 | -| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 383 | 3022 | 14 | 26 | 2026-02-07 | -| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | action | 1.2.2 | 363 | 3750 | 14 | 34 | 2026-01-28 | -| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 342 | 1670 | 7 | 6 | 2026-02-09 | -| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | action | 1.2.4 | 341 | 4706 | 17 | 30 | 2026-01-29 | -| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 226 | 3385 | 13 | 14 | 2026-01-28 | -| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | unknown | | 200 | 2774 | 9 | 6 | 2026-01-28 | +| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 953 | 8381 | 22 | 50 | 2026-01-29 | +| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 706 | 6698 | 24 | 34 | 2026-01-31 | +| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 383 | 3026 | 14 | 26 | 2026-02-07 | +| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | 363 | 3754 | 14 | 34 | 2026-01-29 | +| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 342 | 1670 | 7 | 6 | 2026-02-10 | +| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | 341 | 4710 | 17 | 30 | 2026-01-29 | +| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 226 | 3387 | 13 | 14 | 2026-01-29 | +| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | | 200 | 2774 | 9 | 6 | 2026-01-28 | | 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | 147 | 1250 | 6 | 11 | 2026-01-08 | -| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | 128 | 2218 | 13 | 7 | 2026-02-07 | -| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | 107 | 2401 | 14 | 9 | 2026-02-10 | +| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | 128 | 2219 | 13 | 7 | 2026-02-07 | +| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | 107 | 2402 | 14 | 9 | 2026-02-10 | | 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | 61 | 1316 | 6 | 8 | 2026-01-20 | | 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | 58 | 1065 | 10 | 1 | 2026-01-29 | -| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | 39 | 589 | 6 | 2 | 2026-01-28 | -| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 668 | 7 | 5 | 2026-01-28 | -| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 690 | 8 | 1 | 2026-01-28 | +| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | 39 | 589 | 6 | 2 | 2026-01-29 | +| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 668 | 7 | 5 | 2026-01-29 | +| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 690 | 8 | 1 | 2026-01-29 | | 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 442 | 5 | 1 | 2026-01-08 | -| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 840 | 3 | 0 | 2026-02-10 | -| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | unknown | | 0 | 261 | 5 | 0 | 2026-02-10 | -| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | unknown | | 0 | 1522 | 12 | 19 | 2026-01-28 | -| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | unknown | | 0 | 157 | 2 | 0 | 2026-01-14 | -| 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | unknown | | 0 | 1421 | 14 | 10 | 2026-01-10 | +| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 847 | 3 | 0 | 2026-02-10 | +| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 268 | 5 | 0 | 2026-02-10 | +| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | 0 | 1523 | 12 | 19 | 2026-01-29 | +| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | 0 | 159 | 2 | 0 | 2026-01-14 | +| 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | 0 | 1421 | 14 | 10 | 2026-01-10 | diff --git a/docs/stats-history.json b/docs/stats-history.json new file mode 100644 index 0000000..f4d4f90 --- /dev/null +++ b/docs/stats-history.json @@ -0,0 +1,29 @@ +[ + { + "date": "2026-02-09", + "total_posts": 20, + "total_downloads": 3800, + "total_views": 42000, + "total_upvotes": 200, + "followers": 215, + "points": 48000 + }, + { + "date": "2026-02-10", + "total_posts": 21, + "total_downloads": 4000, + "total_views": 44000, + "total_upvotes": 220, + "followers": 218, + "points": 50000 + }, + { + "date": "2026-02-11", + "total_posts": 22, + "total_downloads": 4154, + "total_views": 45888, + "total_upvotes": 231, + "followers": 220, + "points": 271 + } +] \ No newline at end of file diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 7b5af59..9e055cb 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -65,6 +65,129 @@ class OpenWebUIStats: "Content-Type": "application/json", } ) + self.history_file = Path("docs/stats-history.json") + + # 定义下载类别的判定(这些类别会计入总浏览量/下载量统计) + DOWNLOADABLE_TYPES = [ + "action", + "filter", + "pipe", + "toolkit", + "function", + "prompt", + "model", + ] + + def load_history(self) -> list: + """从文件加载历史记录""" + if self.history_file.exists(): + try: + with open(self.history_file, "r", encoding="utf-8") as f: + return json.load(f) + except Exception as e: + print(f"⚠️ 无法加载历史记录: {e}") + return [] + + def save_history(self, stats: dict): + """保存当前快照到历史记录""" + history = self.load_history() + today = get_beijing_time().strftime("%Y-%m-%d") + + # 构造快照 + snapshot = { + "date": today, + "total_posts": stats["total_posts"], + "total_downloads": stats["total_downloads"], + "total_views": stats["total_views"], + "total_upvotes": stats["total_upvotes"], + "followers": stats.get("user", {}).get("followers", 0), + "points": stats.get("user", {}).get("total_points", 0), + } + + # 如果今天已存在,则更新;否则追加 + for i, item in enumerate(history): + if item.get("date") == today: + history[i] = snapshot + break + else: + history.append(snapshot) + + # 只保留最近 90 天的历史 + history = history[-90:] + + with open(self.history_file, "w", encoding="utf-8") as f: + json.dump(history, f, ensure_ascii=False, indent=2) + print(f"✅ 历史快照已更新 ({today})") + + def get_stat_delta(self, stats: dict) -> dict: + """计算相对于上次记录的增长""" + history = self.load_history() + if len(history) < 2: + return {} + + # 获取上一次的快照(倒数第二个,因为当前可能已经存入倒数第一个) + # 或者如果还没存入,就是倒数第一个 + today = get_beijing_time().strftime("%Y-%m-%d") + prev = None + for item in reversed(history): + if item.get("date") != today: + prev = item + break + + if not prev: + return {} + + return { + "downloads": stats["total_downloads"] - prev.get("total_downloads", 0), + "views": stats["total_views"] - prev.get("total_views", 0), + "upvotes": stats["total_upvotes"] - prev.get("total_upvotes", 0), + "followers": stats.get("user", {}).get("followers", 0) + - prev.get("followers", 0), + "points": stats.get("user", {}).get("total_points", 0) + - prev.get("points", 0), + } + + def _resolve_post_type(self, post: dict) -> str: + """解析帖子类别""" + top_type = post.get("type") + function_data = post.get("data", {}) or {} + function_obj = function_data.get("function", {}) or {} + meta = function_obj.get("meta", {}) or {} + manifest = meta.get("manifest", {}) or {} + + # 类别识别优先级: + if top_type == "review": + return "review" + + post_type = "unknown" + if meta.get("type"): + post_type = meta.get("type") + elif function_obj.get("type"): + post_type = function_obj.get("type") + elif top_type: + post_type = top_type + elif not meta and not function_obj: + post_type = "post" + + # 统一和启发式识别逻辑 + if post_type == "unknown" and function_obj: + post_type = "action" + + if post_type == "action" or post_type == "unknown": + all_metadata = ( + post.get("title", "") + + json.dumps(meta, ensure_ascii=False) + + json.dumps(manifest, ensure_ascii=False) + ).lower() + + if "filter" in all_metadata: + post_type = "filter" + elif "pipe" in all_metadata: + post_type = "pipe" + elif "toolkit" in all_metadata: + post_type = "toolkit" + + return post_type def _parse_user_id_from_token(self, token: str) -> str: """从 JWT Token 中解析用户 ID""" @@ -84,6 +207,30 @@ class OpenWebUIStats: print(f"⚠️ 无法从 Token 解析用户 ID: {e}") return "" + def generate_mermaid_chart(self) -> str: + """生成 Mermaid 增长趋势图""" + history = self.load_history() + if len(history) < 3: # 数据太少不显示图表 + return "" + + # 只取最近 14 天的数据用于展示 + data = history[-14:] + dates = [item["date"][-5:] for item in data] # 只取 MM-DD + downloads = [str(item["total_downloads"]) for item in data] + + mm = [] + mm.append("### 📈 增长趋势 (14天)") + mm.append("") + mm.append("```mermaid") + mm.append("xychart-beta") + mm.append(f' title "Downloads Trend"') + mm.append(f" x-axis [{', '.join(f'\"{d}\"' for d in dates)}]") + mm.append(f' y-axis "Downloads"') + mm.append(f" line [{', '.join(downloads)}]") + mm.append("```") + mm.append("") + return "\n".join(mm) + def get_user_posts(self, sort: str = "new", page: int = 1) -> list: """ 获取用户发布的帖子列表 @@ -148,22 +295,26 @@ class OpenWebUIStats: } for post in posts: + post_type = self._resolve_post_type(post) + + function_data = post.get("data", {}) or {} + function_obj = function_data.get("function", {}) or {} + meta = function_obj.get("meta", {}) or {} + manifest = meta.get("manifest", {}) or {} + # 累计统计 - stats["total_downloads"] += post.get("downloads", 0) - stats["total_views"] += post.get("views", 0) + post_downloads = post.get("downloads", 0) + post_views = post.get("views", 0) + + stats["total_downloads"] += post_downloads stats["total_upvotes"] += post.get("upvotes", 0) stats["total_downvotes"] += post.get("downvotes", 0) stats["total_saves"] += post.get("saveCount", 0) stats["total_comments"] += post.get("commentCount", 0) - # 解析 data 字段 - 正确路径: data.function.meta - function_data = post.get("data", {}) - if function_data is None: - function_data = {} - function_data = function_data.get("function", {}) - meta = function_data.get("meta", {}) - manifest = meta.get("manifest", {}) - post_type = meta.get("type", function_data.get("type", "unknown")) + # 关键:总浏览量不包括不可以下载的类型 (如 post, review) + if post_type in self.DOWNLOADABLE_TYPES or post_downloads > 0: + stats["total_views"] += post_views if post_type not in stats["by_type"]: stats["by_type"][post_type] = 0 @@ -249,19 +400,24 @@ class OpenWebUIStats: stats: 统计数据 lang: 语言 ("zh" 中文, "en" 英文) """ + # 获取增量数据 + delta = self.get_stat_delta(stats) + # 中英文文本 texts = { "zh": { "title": "# 📊 OpenWebUI 社区统计报告", "updated": f"> 📅 更新时间: {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", "overview_title": "## 📈 总览", - "overview_header": "| 指标 | 数值 |", + "overview_header": "| 指标 | 数值 | 增长 (24h) |", "posts": "📝 发布数量", "downloads": "⬇️ 总下载量", "views": "👁️ 总浏览量", "upvotes": "👍 总点赞数", "saves": "💾 总收藏数", "comments": "💬 总评论数", + "author_points": "⭐ 作者总积分", + "author_followers": "👥 粉丝数量", "type_title": "## 📂 按类型分类", "list_title": "## 📋 发布列表", "list_header": "| 排名 | 标题 | 类型 | 版本 | 下载 | 浏览 | 点赞 | 收藏 | 更新日期 |", @@ -270,13 +426,15 @@ class OpenWebUIStats: "title": "# 📊 OpenWebUI Community Stats Report", "updated": f"> 📅 Updated: {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", "overview_title": "## 📈 Overview", - "overview_header": "| Metric | Value |", + "overview_header": "| Metric | Value | Growth (24h) |", "posts": "📝 Total Posts", "downloads": "⬇️ Total Downloads", "views": "👁️ Total Views", "upvotes": "👍 Total Upvotes", "saves": "💾 Total Saves", "comments": "💬 Total Comments", + "author_points": "⭐ Author Points", + "author_followers": "👥 Followers", "type_title": "## 📂 By Type", "list_title": "## 📋 Posts List", "list_header": "| Rank | Title | Type | Version | Downloads | Views | Upvotes | Saves | Updated |", @@ -291,17 +449,44 @@ class OpenWebUIStats: md.append(t["updated"]) md.append("") + # 插入趋势图 + chart = self.generate_mermaid_chart() + if chart: + md.append(chart) + md.append("") + # 总览 + def fmt_delta(key: str) -> str: + val = delta.get(key, 0) + if val > 0: + return f"**+{val}** 🚀" + return "-" + md.append(t["overview_title"]) md.append("") md.append(t["overview_header"]) - md.append("|------|------|") - md.append(f"| {t['posts']} | {stats['total_posts']} |") - md.append(f"| {t['downloads']} | {stats['total_downloads']} |") - md.append(f"| {t['views']} | {stats['total_views']} |") - md.append(f"| {t['upvotes']} | {stats['total_upvotes']} |") - md.append(f"| {t['saves']} | {stats['total_saves']} |") - md.append(f"| {t['comments']} | {stats['total_comments']} |") + md.append("|------|------|:---:|") + md.append(f"| {t['posts']} | {stats['total_posts']} | - |") + md.append( + f"| {t['downloads']} | {stats['total_downloads']} | {fmt_delta('downloads')} |" + ) + md.append(f"| {t['views']} | {stats['total_views']} | {fmt_delta('views')} |") + md.append( + f"| {t['upvotes']} | {stats['total_upvotes']} | {fmt_delta('upvotes')} |" + ) + md.append(f"| {t['saves']} | {stats['total_saves']} | - |") + md.append(f"| {t['comments']} | {stats['total_comments']} | - |") + + # 作者信息 + user = stats.get("user", {}) + if user: + md.append( + f"| {t['author_points']} | {user.get('total_points', 0)} | {fmt_delta('points')} |" + ) + md.append( + f"| {t['author_followers']} | {user.get('followers', 0)} | {fmt_delta('followers')} |" + ) + md.append("") # 按类型分类 @@ -581,6 +766,9 @@ def main(): # 生成统计 stats = stats_client.generate_stats(posts) + # 保存历史快照 + stats_client.save_history(stats) + # 打印到终端 stats_client.print_stats(stats) From 080534d03b26f4c71f828524aa03dcb70519a206 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 11:57:07 +0800 Subject: [PATCH 02/47] feat: implement Gist-based history tracking and enhanced stats categorization --- .github/workflows/community-stats.yml | 8 ++- scripts/openwebui_stats.py | 83 ++++++++++++++++++++++----- 2 files changed, 77 insertions(+), 14 deletions(-) diff --git a/.github/workflows/community-stats.yml b/.github/workflows/community-stats.yml index 8654b99..034b1ff 100644 --- a/.github/workflows/community-stats.yml +++ b/.github/workflows/community-stats.yml @@ -8,9 +8,13 @@ name: Community Stats on: - # 每小时整点运行 + # 定时任务 schedule: - cron: '0 * * * *' + # 推送时触发(用于测试任务分支) + push: + branches: + - feat/stats-history-and-refactor # 手动触发 workflow_dispatch: @@ -56,6 +60,8 @@ jobs: env: OPENWEBUI_API_KEY: ${{ secrets.OPENWEBUI_API_KEY }} OPENWEBUI_USER_ID: ${{ secrets.OPENWEBUI_USER_ID }} + GIST_TOKEN: ${{ secrets.GIST_TOKEN }} + GIST_ID: ${{ secrets.GIST_ID }} run: | python scripts/openwebui_stats.py diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 9e055cb..e021592 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -47,16 +47,28 @@ class OpenWebUIStats: BASE_URL = "https://api.openwebui.com/api/v1" - def __init__(self, api_key: str, user_id: Optional[str] = None): + def __init__( + self, + api_key: str, + user_id: Optional[str] = None, + gist_token: Optional[str] = None, + gist_id: Optional[str] = None, + ): """ 初始化统计工具 Args: api_key: OpenWebUI API Key (JWT Token) user_id: 用户 ID,如果为 None 则从 token 中解析 + gist_token: GitHub Personal Access Token (用于读写 Gist) + gist_id: GitHub Gist ID """ self.api_key = api_key self.user_id = user_id or self._parse_user_id_from_token(api_key) + self.gist_token = gist_token + self.gist_id = gist_id + self.history_filename = "community-stats-history.json" + self.session = requests.Session() self.session.headers.update( { @@ -79,17 +91,34 @@ class OpenWebUIStats: ] def load_history(self) -> list: - """从文件加载历史记录""" + """加载历史记录 (优先尝试 Gist, 其次本地文件)""" + # 尝试从 Gist 加载 + if self.gist_token and self.gist_id: + try: + url = f"https://api.github.com/gists/{self.gist_id}" + headers = {"Authorization": f"token {self.gist_token}"} + resp = requests.get(url, headers=headers) + if resp.status_code == 200: + gist_data = resp.json() + file_info = gist_data.get("files", {}).get(self.history_filename) + if file_info: + content = file_info.get("content") + print(f"✅ 已从 Gist 加载历史记录 ({self.gist_id})") + return json.loads(content) + except Exception as e: + print(f"⚠️ 无法从 Gist 加载历史: {e}") + + # 降级:从本地加载 if self.history_file.exists(): try: with open(self.history_file, "r", encoding="utf-8") as f: return json.load(f) except Exception as e: - print(f"⚠️ 无法加载历史记录: {e}") + print(f"⚠️ 无法加载本地历史记录: {e}") return [] def save_history(self, stats: dict): - """保存当前快照到历史记录""" + """保存当前快照到历史记录 (优先保存到 Gist, 其次本地)""" history = self.load_history() today = get_beijing_time().strftime("%Y-%m-%d") @@ -104,31 +133,53 @@ class OpenWebUIStats: "points": stats.get("user", {}).get("total_points", 0), } - # 如果今天已存在,则更新;否则追加 + # 更新或追加数据点 + updated = False for i, item in enumerate(history): if item.get("date") == today: history[i] = snapshot + updated = True break - else: + if not updated: history.append(snapshot) - # 只保留最近 90 天的历史 + # 限制长度 (90天) history = history[-90:] + # 尝试保存到 Gist + if self.gist_token and self.gist_id: + try: + url = f"https://api.github.com/gists/{self.gist_id}" + headers = {"Authorization": f"token {self.gist_token}"} + payload = { + "files": { + self.history_filename: { + "content": json.dumps(history, ensure_ascii=False, indent=2) + } + } + } + resp = requests.patch(url, headers=headers, json=payload) + if resp.status_code == 200: + print(f"✅ 历史记录已同步至 Gist ({self.gist_id})") + return + except Exception as e: + print(f"⚠️ 同步至 Gist 失败: {e}") + + # 降级:保存到本地 with open(self.history_file, "w", encoding="utf-8") as f: json.dump(history, f, ensure_ascii=False, indent=2) - print(f"✅ 历史快照已更新 ({today})") + print(f"✅ 历史记录已更新至本地 ({today})") def get_stat_delta(self, stats: dict) -> dict: - """计算相对于上次记录的增长""" + """计算相对于上次记录的增长 (24h)""" history = self.load_history() - if len(history) < 2: + if not history: return {} - # 获取上一次的快照(倒数第二个,因为当前可能已经存入倒数第一个) - # 或者如果还没存入,就是倒数第一个 today = get_beijing_time().strftime("%Y-%m-%d") prev = None + + # 查找非今天的最后一笔数据作为基准 for item in reversed(history): if item.get("date") != today: prev = item @@ -754,9 +805,15 @@ def main(): print(" 例如: b15d1348-4347-42b4-b815-e053342d6cb0") return 1 + # 获取 Gist 配置 (用于存储历史记录) + gist_token = os.getenv("GIST_TOKEN") + gist_id = os.getenv("GIST_ID") + # 初始化 - stats_client = OpenWebUIStats(api_key, user_id) + stats_client = OpenWebUIStats(api_key, user_id, gist_token, gist_id) print(f"🔍 用户 ID: {stats_client.user_id}") + if gist_id: + print(f"📦 Gist 存储已启用: {gist_id}") # 获取所有帖子 print("📥 正在获取帖子数据...") From 80dce6e1de96bbd0597f3838134a5493fb086d75 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 11:58:44 +0800 Subject: [PATCH 03/47] fix: compatibility with Python < 3.12 for f-strings with backslashes --- scripts/openwebui_stats.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index e021592..679ecb2 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -267,7 +267,9 @@ class OpenWebUIStats: # 只取最近 14 天的数据用于展示 data = history[-14:] dates = [item["date"][-5:] for item in data] # 只取 MM-DD + dates_str = ", ".join([f'"{d}"' for d in dates]) downloads = [str(item["total_downloads"]) for item in data] + downloads_str = ", ".join(downloads) mm = [] mm.append("### 📈 增长趋势 (14天)") @@ -275,9 +277,9 @@ class OpenWebUIStats: mm.append("```mermaid") mm.append("xychart-beta") mm.append(f' title "Downloads Trend"') - mm.append(f" x-axis [{', '.join(f'\"{d}\"' for d in dates)}]") + mm.append(f" x-axis [{dates_str}]") mm.append(f' y-axis "Downloads"') - mm.append(f" line [{', '.join(downloads)}]") + mm.append(f" line [{downloads_str}]") mm.append("```") mm.append("") return "\n".join(mm) From f34da0b26361c1c62426b09d5ac7c3781b035a7e Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 11:59:56 +0800 Subject: [PATCH 04/47] feat: include per-post download stats in historical snapshots --- scripts/openwebui_stats.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 679ecb2..62f57b7 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -122,7 +122,7 @@ class OpenWebUIStats: history = self.load_history() today = get_beijing_time().strftime("%Y-%m-%d") - # 构造快照 + # 构造详细快照 (包含每个插件的下载量) snapshot = { "date": today, "total_posts": stats["total_posts"], @@ -131,6 +131,7 @@ class OpenWebUIStats: "total_upvotes": stats["total_upvotes"], "followers": stats.get("user", {}).get("followers", 0), "points": stats.get("user", {}).get("total_points", 0), + "posts": {p["slug"]: p["downloads"] for p in stats.get("posts", [])}, } # 更新或追加数据点 From a96a58814144142eccd98f139361069c4d509233 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:01:54 +0800 Subject: [PATCH 05/47] style: reformat README stats section for better clarity and premium look --- scripts/openwebui_stats.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 62f57b7..4e2204e 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -636,7 +636,7 @@ class OpenWebUIStats: def generate_readme_stats(self, stats: dict, lang: str = "zh") -> str: """ - 生成 README 统计徽章区域 + 生成 README 统计区域 (精简版) Args: stats: 统计数据 @@ -644,28 +644,33 @@ class OpenWebUIStats: """ # 获取 Top 6 插件 top_plugins = stats["posts"][:6] + delta = self.get_stat_delta(stats) + + def fmt_delta(key: str) -> str: + val = delta.get(key, 0) + if val > 0: + return f"
(+{val}🚀)" + return "" # 中英文文本 texts = { "zh": { "title": "## 📊 社区统计", - "updated": f"> 🕐 自动更新于 {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", + "updated": f"🕐 自动更新于 {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", "author_header": "| 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 |", "header": "| 📝 发布 | ⬇️ 下载 | 👁️ 浏览 | 👍 点赞 | 💾 收藏 |", "top6_title": "### 🔥 热门插件 Top 6", - "top6_updated": f"> 🕐 自动更新于 {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", "top6_header": "| 排名 | 插件 | 版本 | 下载 | 浏览 | 更新日期 |", - "full_stats": "*完整统计请查看 [社区统计报告](./docs/community-stats.zh.md)*", + "full_stats": "*完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)*", }, "en": { "title": "## 📊 Community Stats", - "updated": f"> 🕐 Auto-updated: {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", + "updated": f"🕐 Auto-updated: {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", "author_header": "| 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions |", "header": "| 📝 Posts | ⬇️ Downloads | 👁️ Views | 👍 Upvotes | 💾 Saves |", "top6_title": "### 🔥 Top 6 Popular Plugins", - "top6_updated": f"> 🕐 Auto-updated: {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", "top6_header": "| Rank | Plugin | Version | Downloads | Views | Updated |", - "full_stats": "*See full stats in [Community Stats Report](./docs/community-stats.md)*", + "full_stats": "*See full stats and charts in [Community Stats Report](./docs/community-stats.md)*", }, } @@ -675,8 +680,7 @@ class OpenWebUIStats: lines = [] lines.append("") lines.append(t["title"]) - lines.append("") - lines.append(t["updated"]) + lines.append(f"> {t['updated']}") lines.append("") # 作者信息表格 @@ -686,25 +690,22 @@ class OpenWebUIStats: lines.append(t["author_header"]) lines.append("| :---: | :---: | :---: | :---: |") lines.append( - f"| [{username}]({profile_url}) | **{user.get('followers', 0)}** | " - f"**{user.get('total_points', 0)}** | **{user.get('contributions', 0)}** |" + f"| [{username}]({profile_url}) | **{user.get('followers', 0)}**{fmt_delta('followers')} | " + f"**{user.get('total_points', 0)}**{fmt_delta('points')} | **{user.get('contributions', 0)}** |" ) lines.append("") - # 统计徽章表格 + # 统计面板 lines.append(t["header"]) lines.append("| :---: | :---: | :---: | :---: | :---: |") lines.append( - f"| **{stats['total_posts']}** | **{stats['total_downloads']}** | " - f"**{stats['total_views']}** | **{stats['total_upvotes']}** | **{stats['total_saves']}** |" + f"| **{stats['total_posts']}** | **{stats['total_downloads']}**{fmt_delta('downloads')} | " + f"**{stats['total_views']}**{fmt_delta('views')} | **{stats['total_upvotes']}**{fmt_delta('upvotes')} | **{stats['total_saves']}** |" ) lines.append("") # Top 6 热门插件 lines.append(t["top6_title"]) - lines.append("") - lines.append(t["top6_updated"]) - lines.append("") lines.append(t["top6_header"]) lines.append("| :---: | :--- | :---: | :---: | :---: | :---: |") From c2ea3b24794b0fad152c8f5e7dffef8eb21d77d2 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:05:52 +0800 Subject: [PATCH 06/47] feat: migrate stats display to dynamic Shields.io badges via Gist --- scripts/openwebui_stats.py | 101 +++++++++++++++++++++++++++++++++++-- 1 file changed, 97 insertions(+), 4 deletions(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 4e2204e..02839ae 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -632,8 +632,75 @@ class OpenWebUIStats: json.dump(data, f, indent=2) print(f" 📊 Generated badge: {name}.json") + if self.gist_token and self.gist_id: + try: + # 构造并上传 Shields.io 徽章数据 + self.upload_gist_badges(stats) + except Exception as e: + print(f"⚠️ 徽章生成失败: {e}") + print(f"✅ Shields.io endpoints saved to: {output_dir}/") + def upload_gist_badges(self, stats: dict): + """生成并上传 Gist 徽章数据 (用于 Shields.io Endpoint)""" + if not (self.gist_token and self.gist_id): + return + + delta = self.get_stat_delta(stats) + + # 定义徽章配置 {key: (label, value, color)} + badges_config = { + "downloads": ("Downloads", stats["total_downloads"], "brightgreen"), + "views": ("Views", stats["total_views"], "blue"), + "upvotes": ("Upvotes", stats["total_upvotes"], "orange"), + "followers": ( + "Followers", + stats.get("user", {}).get("followers", 0), + "blueviolet", + ), + "points": ( + "Points", + stats.get("user", {}).get("total_points", 0), + "yellow", + ), + "posts": ("Posts", stats["total_posts"], "informational"), + } + + files_payload = {} + for key, (label, val, color) in badges_config.items(): + diff = delta.get(key, 0) + + message = f"{val}" + if diff > 0: + message += f" (+{diff}🚀)" + elif diff < 0: + message += f" ({diff})" + + # 构造 Shields.io endpoint JSON + # 参考: https://shields.io/badges/endpoint-badge + badge_data = { + "schemaVersion": 1, + "label": label, + "message": message, + "color": color, + } + + filename = f"badge_{key}.json" + files_payload[filename] = { + "content": json.dumps(badge_data, ensure_ascii=False) + } + + # 批量上传到 Gist + url = f"https://api.github.com/gists/{self.gist_id}" + headers = {"Authorization": f"token {self.gist_token}"} + payload = {"files": files_payload} + + resp = requests.patch(url, headers=headers, json=payload) + if resp.status_code == 200: + print(f"✅ 动态徽章已同步至 Gist ({len(files_payload)} files)") + else: + print(f"⚠️ 徽章上传失败: {resp.status_code} {resp.text}") + def generate_readme_stats(self, stats: dict, lang: str = "zh") -> str: """ 生成 README 统计区域 (精简版) @@ -683,6 +750,32 @@ class OpenWebUIStats: lines.append(f"> {t['updated']}") lines.append("") + # 定义徽章 URL (使用 Gist ID) + # 注意: 这里使用 shields.io 的 endpoint 功能,直接读取 Gist Raw URL + # URL 格式: https://gist.githubusercontent.com/{gist_user}/{gist_id}/raw/badge_{key}.json + # 由于我们不知道 gist_user,但 Gist ID 是全局唯一的,我们可以用 shields.io 的兼容性或者假设用户名为 Fu-Jie (根据 user request) + # 为了通用性,我们这里使用 requests 获取一次 final URL 或者直接硬编码 Fu-Jie (因为 Gist 是私有的或者为了简单) + # 用户明确提到: https://gist.github.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6 + gist_user = "Fu-Jie" + if self.gist_id: + base_badge_url = f"https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/{gist_user}/{self.gist_id}/raw" + else: + base_badge_url = "" + + def get_badge(key: str, style: str = "flat") -> str: + if not base_badge_url: + # 降级:如果没有 Gist,显示静态文本 + val = stats.get(f"total_{key}", 0) + if key == "followers": + val = user.get("followers", 0) + if key == "points": + val = user.get("total_points", 0) + if key == "posts": + val = stats.get("total_posts", 0) + return f"**{val}**{fmt_delta(key)}" + + return f"![{key}]({base_badge_url}/badge_{key}.json?style={style})" + # 作者信息表格 if user: username = user.get("username", "") @@ -690,8 +783,8 @@ class OpenWebUIStats: lines.append(t["author_header"]) lines.append("| :---: | :---: | :---: | :---: |") lines.append( - f"| [{username}]({profile_url}) | **{user.get('followers', 0)}**{fmt_delta('followers')} | " - f"**{user.get('total_points', 0)}**{fmt_delta('points')} | **{user.get('contributions', 0)}** |" + f"| [{username}]({profile_url}) | {get_badge('followers')} | " + f"{get_badge('points')} | **{user.get('contributions', 0)}** |" ) lines.append("") @@ -699,8 +792,8 @@ class OpenWebUIStats: lines.append(t["header"]) lines.append("| :---: | :---: | :---: | :---: | :---: |") lines.append( - f"| **{stats['total_posts']}** | **{stats['total_downloads']}**{fmt_delta('downloads')} | " - f"**{stats['total_views']}**{fmt_delta('views')} | **{stats['total_upvotes']}**{fmt_delta('upvotes')} | **{stats['total_saves']}** |" + f"| {get_badge('posts')} | {get_badge('downloads')} | " + f"{get_badge('views')} | {get_badge('upvotes')} | **{stats['total_saves']}** |" ) lines.append("") From 0424521380ce5d7ee7c53e26801cf0f7d3d2cb36 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:08:05 +0800 Subject: [PATCH 07/47] feat: complete no-commit update system with dynamic badges and history sync --- scripts/openwebui_stats.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 02839ae..2f763f1 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -129,8 +129,10 @@ class OpenWebUIStats: "total_downloads": stats["total_downloads"], "total_views": stats["total_views"], "total_upvotes": stats["total_upvotes"], + "total_saves": stats["total_saves"], "followers": stats.get("user", {}).get("followers", 0), "points": stats.get("user", {}).get("total_points", 0), + "contributions": stats.get("user", {}).get("contributions", 0), "posts": {p["slug"]: p["downloads"] for p in stats.get("posts", [])}, } @@ -193,10 +195,13 @@ class OpenWebUIStats: "downloads": stats["total_downloads"] - prev.get("total_downloads", 0), "views": stats["total_views"] - prev.get("total_views", 0), "upvotes": stats["total_upvotes"] - prev.get("total_upvotes", 0), + "saves": stats["total_saves"] - prev.get("total_saves", 0), "followers": stats.get("user", {}).get("followers", 0) - prev.get("followers", 0), "points": stats.get("user", {}).get("total_points", 0) - prev.get("points", 0), + "contributions": stats.get("user", {}).get("contributions", 0) + - prev.get("contributions", 0), } def _resolve_post_type(self, post: dict) -> str: @@ -653,6 +658,7 @@ class OpenWebUIStats: "downloads": ("Downloads", stats["total_downloads"], "brightgreen"), "views": ("Views", stats["total_views"], "blue"), "upvotes": ("Upvotes", stats["total_upvotes"], "orange"), + "saves": ("Saves", stats["total_saves"], "lightgrey"), "followers": ( "Followers", stats.get("user", {}).get("followers", 0), @@ -663,6 +669,11 @@ class OpenWebUIStats: stats.get("user", {}).get("total_points", 0), "yellow", ), + "contributions": ( + "Contributions", + stats.get("user", {}).get("contributions", 0), + "green", + ), "posts": ("Posts", stats["total_posts"], "informational"), } @@ -770,8 +781,12 @@ class OpenWebUIStats: val = user.get("followers", 0) if key == "points": val = user.get("total_points", 0) + if key == "contributions": + val = user.get("contributions", 0) if key == "posts": val = stats.get("total_posts", 0) + if key == "saves": + val = stats.get("total_saves", 0) return f"**{val}**{fmt_delta(key)}" return f"![{key}]({base_badge_url}/badge_{key}.json?style={style})" @@ -784,7 +799,7 @@ class OpenWebUIStats: lines.append("| :---: | :---: | :---: | :---: |") lines.append( f"| [{username}]({profile_url}) | {get_badge('followers')} | " - f"{get_badge('points')} | **{user.get('contributions', 0)}** |" + f"{get_badge('points')} | {get_badge('contributions')} |" ) lines.append("") @@ -793,7 +808,7 @@ class OpenWebUIStats: lines.append("| :---: | :---: | :---: | :---: | :---: |") lines.append( f"| {get_badge('posts')} | {get_badge('downloads')} | " - f"{get_badge('views')} | {get_badge('upvotes')} | **{stats['total_saves']}** |" + f"{get_badge('views')} | {get_badge('upvotes')} | {get_badge('saves')} |" ) lines.append("") From cfb15808ef10c0b12a090bf4b7da9142fe3db1a6 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:09:11 +0800 Subject: [PATCH 08/47] docs: finalize dynamic stats badges in READMEs --- README.md | 20 ++++++++------------ README_CN.md | 20 ++++++++------------ docs/community-stats.json | 34 +++++++++++++++++----------------- docs/community-stats.md | 34 +++++++++++++++++----------------- docs/community-stats.zh.md | 34 +++++++++++++++++----------------- docs/stats-history.json | 32 +++++++++++++++++++++++++++++--- 6 files changed, 96 insertions(+), 78 deletions(-) diff --git a/README.md b/README.md index f47e412..f071238 100644 --- a/README.md +++ b/README.md @@ -7,31 +7,27 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats - -> 🕐 Auto-updated: 2026-02-11 11:40 +> 🕐 Auto-updated: 2026-02-11 12:09 | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | :---: | :---: | :---: | :---: | -| [Fu-Jie](https://openwebui.com/u/Fu-Jie) | **220** | **271** | **48** | +| [Fu-Jie](https://openwebui.com/u/Fu-Jie) | ![followers](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_followers.json?style=flat) | ![points](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_points.json?style=flat) | ![contributions](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_contributions.json?style=flat) | | 📝 Posts | ⬇️ Downloads | 👁️ Views | 👍 Upvotes | 💾 Saves | | :---: | :---: | :---: | :---: | :---: | -| **22** | **4154** | **45888** | **231** | **274** | +| ![posts](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_posts.json?style=flat) | ![downloads](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_downloads.json?style=flat) | ![views](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_views.json?style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_upvotes.json?style=flat) | ![saves](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_saves.json?style=flat) | ### 🔥 Top 6 Popular Plugins - -> 🕐 Auto-updated: 2026-02-11 11:40 - | Rank | Plugin | Version | Downloads | Views | Updated | | :---: | :--- | :---: | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 953 | 8381 | 2026-01-29 | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 706 | 6698 | 2026-01-31 | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 954 | 8385 | 2026-01-29 | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 707 | 6701 | 2026-01-31 | | 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | 383 | 3026 | 2026-02-07 | | 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | 363 | 3754 | 2026-01-29 | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 342 | 1670 | 2026-02-10 | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 341 | 4710 | 2026-01-29 | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 342 | 1671 | 2026-02-10 | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 341 | 4711 | 2026-01-29 | -*See full stats in [Community Stats Report](./docs/community-stats.md)* +*See full stats and charts in [Community Stats Report](./docs/community-stats.md)* ## 🌟 Star Features diff --git a/README_CN.md b/README_CN.md index 1d17710..89c50cb 100644 --- a/README_CN.md +++ b/README_CN.md @@ -6,31 +6,27 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ## 📊 社区统计 - -> 🕐 自动更新于 2026-02-11 11:40 +> 🕐 自动更新于 2026-02-11 12:09 | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | :---: | :---: | :---: | :---: | -| [Fu-Jie](https://openwebui.com/u/Fu-Jie) | **220** | **271** | **48** | +| [Fu-Jie](https://openwebui.com/u/Fu-Jie) | ![followers](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_followers.json?style=flat) | ![points](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_points.json?style=flat) | ![contributions](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_contributions.json?style=flat) | | 📝 发布 | ⬇️ 下载 | 👁️ 浏览 | 👍 点赞 | 💾 收藏 | | :---: | :---: | :---: | :---: | :---: | -| **22** | **4154** | **45888** | **231** | **274** | +| ![posts](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_posts.json?style=flat) | ![downloads](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_downloads.json?style=flat) | ![views](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_views.json?style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_upvotes.json?style=flat) | ![saves](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_saves.json?style=flat) | ### 🔥 热门插件 Top 6 - -> 🕐 自动更新于 2026-02-11 11:40 - | 排名 | 插件 | 版本 | 下载 | 浏览 | 更新日期 | | :---: | :--- | :---: | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 953 | 8381 | 2026-01-29 | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 706 | 6698 | 2026-01-31 | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 954 | 8385 | 2026-01-29 | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 707 | 6701 | 2026-01-31 | | 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | 383 | 3026 | 2026-02-07 | | 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | 363 | 3754 | 2026-01-29 | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 342 | 1670 | 2026-02-10 | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 341 | 4710 | 2026-01-29 | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 342 | 1671 | 2026-02-10 | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 341 | 4711 | 2026-01-29 | -*完整统计请查看 [社区统计报告](./docs/community-stats.zh.md)* +*完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)* ## 🌟 精选功能 diff --git a/docs/community-stats.json b/docs/community-stats.json index 2a9cbac..75c47fa 100644 --- a/docs/community-stats.json +++ b/docs/community-stats.json @@ -1,7 +1,7 @@ { "total_posts": 22, - "total_downloads": 4154, - "total_views": 45888, + "total_downloads": 4156, + "total_views": 45911, "total_upvotes": 231, "total_downvotes": 2, "total_saves": 274, @@ -22,8 +22,8 @@ "version": "0.9.2", "author": "Fu-Jie", "description": "Intelligently analyzes text content and generates interactive mind maps to help users structure and visualize knowledge.", - "downloads": 953, - "views": 8381, + "downloads": 954, + "views": 8385, "upvotes": 22, "saves": 50, "comments": 13, @@ -38,8 +38,8 @@ "version": "1.5.0", "author": "Fu-Jie", "description": "AI-powered infographic generator based on AntV Infographic. Supports professional templates, auto-icon matching, and SVG/PNG downloads.", - "downloads": 706, - "views": 6698, + "downloads": 707, + "views": 6701, "upvotes": 24, "saves": 34, "comments": 10, @@ -87,7 +87,7 @@ "author": "Fu-Jie", "description": "Extracts tables from chat messages and exports them to Excel (.xlsx) files with smart formatting.", "downloads": 342, - "views": 1670, + "views": 1671, "upvotes": 7, "saves": 6, "comments": 0, @@ -103,7 +103,7 @@ "author": "Fu-Jie", "description": "A content normalizer filter that fixes common Markdown formatting issues in LLM outputs, such as broken code blocks, LaTeX formulas, and list formatting.", "downloads": 341, - "views": 4710, + "views": 4711, "upvotes": 17, "saves": 30, "comments": 5, @@ -135,7 +135,7 @@ "author": "", "description": "", "downloads": 200, - "views": 2774, + "views": 2778, "upvotes": 9, "saves": 6, "comments": 0, @@ -183,7 +183,7 @@ "author": "Fu-Jie", "description": "Integrate GitHub Copilot SDK. Supports dynamic models, multi-turn conversation, streaming, multimodal input, infinite sessions, and frontend debug logging.", "downloads": 107, - "views": 2402, + "views": 2403, "upvotes": 14, "saves": 9, "comments": 6, @@ -199,7 +199,7 @@ "author": "Fu-Jie", "description": "Automatically extracts project rules from conversations and injects them into the folder's system prompt.", "downloads": 61, - "views": 1316, + "views": 1318, "upvotes": 6, "saves": 8, "comments": 0, @@ -247,7 +247,7 @@ "author": "Fu-Jie", "description": "通过智能摘要和消息压缩,降低长对话的 token 消耗,同时保持对话连贯性。", "downloads": 33, - "views": 668, + "views": 669, "upvotes": 7, "saves": 5, "comments": 0, @@ -279,7 +279,7 @@ "author": "Fu-Jie", "description": "全方位的思维透镜 —— 从背景全景到逻辑脉络,从深度洞察到行动路径。", "downloads": 24, - "views": 442, + "views": 444, "upvotes": 5, "saves": 1, "comments": 0, @@ -295,7 +295,7 @@ "author": "Fu-Jie", "description": "A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It moves uploaded files to a safe location ('copilot_files') so the Copilot Pipe can process them natively without interference.", "downloads": 16, - "views": 847, + "views": 851, "upvotes": 3, "saves": 0, "comments": 0, @@ -311,7 +311,7 @@ "author": "", "description": "", "downloads": 0, - "views": 268, + "views": 276, "upvotes": 5, "saves": 0, "comments": 0, @@ -327,7 +327,7 @@ "author": "", "description": "", "downloads": 0, - "views": 1523, + "views": 1525, "upvotes": 12, "saves": 19, "comments": 8, @@ -343,7 +343,7 @@ "author": "", "description": "", "downloads": 0, - "views": 159, + "views": 161, "upvotes": 2, "saves": 0, "comments": 0, diff --git a/docs/community-stats.md b/docs/community-stats.md index a366830..d7315c8 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -1,6 +1,6 @@ # 📊 OpenWebUI Community Stats Report -> 📅 Updated: 2026-02-11 11:40 +> 📅 Updated: 2026-02-11 12:09 ### 📈 增长趋势 (14天) @@ -9,7 +9,7 @@ xychart-beta title "Downloads Trend" x-axis ["02-09", "02-10", "02-11"] y-axis "Downloads" - line [3800, 4000, 4154] + line [3800, 4000, 4156] ``` @@ -18,8 +18,8 @@ xychart-beta | Metric | Value | Growth (24h) | |------|------|:---:| | 📝 Total Posts | 22 | - | -| ⬇️ Total Downloads | 4154 | **+154** 🚀 | -| 👁️ Total Views | 45888 | **+1888** 🚀 | +| ⬇️ Total Downloads | 4156 | **+156** 🚀 | +| 👁️ Total Views | 45911 | **+1911** 🚀 | | 👍 Total Upvotes | 231 | **+11** 🚀 | | 💾 Total Saves | 274 | - | | 💬 Total Comments | 55 | - | @@ -39,25 +39,25 @@ xychart-beta | Rank | Title | Type | Version | Downloads | Views | Upvotes | Saves | Updated | |:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| -| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 953 | 8381 | 22 | 50 | 2026-01-29 | -| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 706 | 6698 | 24 | 34 | 2026-01-31 | +| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 954 | 8385 | 22 | 50 | 2026-01-29 | +| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 707 | 6701 | 24 | 34 | 2026-01-31 | | 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 383 | 3026 | 14 | 26 | 2026-02-07 | | 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | 363 | 3754 | 14 | 34 | 2026-01-29 | -| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 342 | 1670 | 7 | 6 | 2026-02-10 | -| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | 341 | 4710 | 17 | 30 | 2026-01-29 | +| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 342 | 1671 | 7 | 6 | 2026-02-10 | +| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | 341 | 4711 | 17 | 30 | 2026-01-29 | | 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 226 | 3387 | 13 | 14 | 2026-01-29 | -| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | | 200 | 2774 | 9 | 6 | 2026-01-28 | +| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | | 200 | 2778 | 9 | 6 | 2026-01-28 | | 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | 147 | 1250 | 6 | 11 | 2026-01-08 | | 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | 128 | 2219 | 13 | 7 | 2026-02-07 | -| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | 107 | 2402 | 14 | 9 | 2026-02-10 | -| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | 61 | 1316 | 6 | 8 | 2026-01-20 | +| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | 107 | 2403 | 14 | 9 | 2026-02-10 | +| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | 61 | 1318 | 6 | 8 | 2026-01-20 | | 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | 58 | 1065 | 10 | 1 | 2026-01-29 | | 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | 39 | 589 | 6 | 2 | 2026-01-29 | -| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 668 | 7 | 5 | 2026-01-29 | +| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 669 | 7 | 5 | 2026-01-29 | | 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 690 | 8 | 1 | 2026-01-29 | -| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 442 | 5 | 1 | 2026-01-08 | -| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 847 | 3 | 0 | 2026-02-10 | -| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 268 | 5 | 0 | 2026-02-10 | -| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | 0 | 1523 | 12 | 19 | 2026-01-29 | -| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | 0 | 159 | 2 | 0 | 2026-01-14 | +| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 444 | 5 | 1 | 2026-01-08 | +| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 851 | 3 | 0 | 2026-02-10 | +| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 276 | 5 | 0 | 2026-02-10 | +| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | 0 | 1525 | 12 | 19 | 2026-01-29 | +| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | 0 | 161 | 2 | 0 | 2026-01-14 | | 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | 0 | 1421 | 14 | 10 | 2026-01-10 | diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index 74f56ad..fd3077a 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -1,6 +1,6 @@ # 📊 OpenWebUI 社区统计报告 -> 📅 更新时间: 2026-02-11 11:40 +> 📅 更新时间: 2026-02-11 12:09 ### 📈 增长趋势 (14天) @@ -9,7 +9,7 @@ xychart-beta title "Downloads Trend" x-axis ["02-09", "02-10", "02-11"] y-axis "Downloads" - line [3800, 4000, 4154] + line [3800, 4000, 4156] ``` @@ -18,8 +18,8 @@ xychart-beta | 指标 | 数值 | 增长 (24h) | |------|------|:---:| | 📝 发布数量 | 22 | - | -| ⬇️ 总下载量 | 4154 | **+154** 🚀 | -| 👁️ 总浏览量 | 45888 | **+1888** 🚀 | +| ⬇️ 总下载量 | 4156 | **+156** 🚀 | +| 👁️ 总浏览量 | 45911 | **+1911** 🚀 | | 👍 总点赞数 | 231 | **+11** 🚀 | | 💾 总收藏数 | 274 | - | | 💬 总评论数 | 55 | - | @@ -39,25 +39,25 @@ xychart-beta | 排名 | 标题 | 类型 | 版本 | 下载 | 浏览 | 点赞 | 收藏 | 更新日期 | |:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| -| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 953 | 8381 | 22 | 50 | 2026-01-29 | -| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 706 | 6698 | 24 | 34 | 2026-01-31 | +| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 954 | 8385 | 22 | 50 | 2026-01-29 | +| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 707 | 6701 | 24 | 34 | 2026-01-31 | | 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 383 | 3026 | 14 | 26 | 2026-02-07 | | 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | 363 | 3754 | 14 | 34 | 2026-01-29 | -| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 342 | 1670 | 7 | 6 | 2026-02-10 | -| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | 341 | 4710 | 17 | 30 | 2026-01-29 | +| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 342 | 1671 | 7 | 6 | 2026-02-10 | +| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | 341 | 4711 | 17 | 30 | 2026-01-29 | | 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 226 | 3387 | 13 | 14 | 2026-01-29 | -| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | | 200 | 2774 | 9 | 6 | 2026-01-28 | +| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | | 200 | 2778 | 9 | 6 | 2026-01-28 | | 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | 147 | 1250 | 6 | 11 | 2026-01-08 | | 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | 128 | 2219 | 13 | 7 | 2026-02-07 | -| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | 107 | 2402 | 14 | 9 | 2026-02-10 | -| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | 61 | 1316 | 6 | 8 | 2026-01-20 | +| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | 107 | 2403 | 14 | 9 | 2026-02-10 | +| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | 61 | 1318 | 6 | 8 | 2026-01-20 | | 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | 58 | 1065 | 10 | 1 | 2026-01-29 | | 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | 39 | 589 | 6 | 2 | 2026-01-29 | -| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 668 | 7 | 5 | 2026-01-29 | +| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 669 | 7 | 5 | 2026-01-29 | | 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 690 | 8 | 1 | 2026-01-29 | -| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 442 | 5 | 1 | 2026-01-08 | -| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 847 | 3 | 0 | 2026-02-10 | -| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 268 | 5 | 0 | 2026-02-10 | -| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | 0 | 1523 | 12 | 19 | 2026-01-29 | -| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | 0 | 159 | 2 | 0 | 2026-01-14 | +| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 444 | 5 | 1 | 2026-01-08 | +| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 851 | 3 | 0 | 2026-02-10 | +| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 276 | 5 | 0 | 2026-02-10 | +| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | 0 | 1525 | 12 | 19 | 2026-01-29 | +| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | 0 | 161 | 2 | 0 | 2026-01-14 | | 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | 0 | 1421 | 14 | 10 | 2026-01-10 | diff --git a/docs/stats-history.json b/docs/stats-history.json index f4d4f90..2d93fb8 100644 --- a/docs/stats-history.json +++ b/docs/stats-history.json @@ -20,10 +20,36 @@ { "date": "2026-02-11", "total_posts": 22, - "total_downloads": 4154, - "total_views": 45888, + "total_downloads": 4156, + "total_views": 45911, "total_upvotes": 231, + "total_saves": 274, "followers": 220, - "points": 271 + "points": 271, + "contributions": 48, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 954, + "smart_infographic_ad6f0c7f": 707, + "export_to_word_enhanced_formatting_fca6a315": 383, + "async_context_compression_b1655bc8": 363, + "export_mulit_table_to_excel_244b8f9d": 342, + "markdown_normalizer_baaa8732": 341, + "flash_card_65a2ea8f": 226, + "ai_task_instruction_generator_9bab8b37": 200, + "deep_dive_c0b846e4": 147, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 128, + "github_copilot_official_sdk_pipe_ce96f7b4": 107, + "folder_memory_auto_evolving_project_context_4a9875b2": 61, + "智能信息图_e04a48ff": 58, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 39, + "异步上下文压缩_5c0617cb": 33, + "闪记卡生成插件_4a31eac3": 27, + "精读_99830b0f": 24, + "github_copilot_sdk_files_filter_403a62ee": 16, + "github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293": 0, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } } ] \ No newline at end of file From 387ca8788bdaa302e102aeae75d71046a37b3230 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:10:46 +0800 Subject: [PATCH 09/47] feat: use dynamic badges for Top 6 plugin statistics in README --- README.md | 14 +++++------ README_CN.md | 14 +++++------ scripts/openwebui_stats.py | 51 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 63 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index f071238..fae0d4f 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats -> 🕐 Auto-updated: 2026-02-11 12:09 +> 🕐 Auto-updated: 2026-02-11 12:10 | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | :---: | :---: | :---: | :---: | @@ -20,12 +20,12 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ### 🔥 Top 6 Popular Plugins | Rank | Plugin | Version | Downloads | Views | Updated | | :---: | :--- | :---: | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 954 | 8385 | 2026-01-29 | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 707 | 6701 | 2026-01-31 | -| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | 383 | 3026 | 2026-02-07 | -| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | 363 | 3754 | 2026-01-29 | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 342 | 1671 | 2026-02-10 | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 341 | 4711 | 2026-01-29 | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p1_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p1_vw.json) | 2026-01-29 | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p2_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p2_vw.json) | 2026-01-31 | +| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p3_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p3_vw.json) | 2026-02-07 | +| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p4_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p4_vw.json) | 2026-01-29 | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p5_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p5_vw.json) | 2026-02-10 | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p6_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p6_vw.json) | 2026-01-29 | *See full stats and charts in [Community Stats Report](./docs/community-stats.md)* diff --git a/README_CN.md b/README_CN.md index 89c50cb..5455949 100644 --- a/README_CN.md +++ b/README_CN.md @@ -6,7 +6,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ## 📊 社区统计 -> 🕐 自动更新于 2026-02-11 12:09 +> 🕐 自动更新于 2026-02-11 12:10 | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | :---: | :---: | :---: | :---: | @@ -19,12 +19,12 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ### 🔥 热门插件 Top 6 | 排名 | 插件 | 版本 | 下载 | 浏览 | 更新日期 | | :---: | :--- | :---: | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | 954 | 8385 | 2026-01-29 | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | 707 | 6701 | 2026-01-31 | -| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | 383 | 3026 | 2026-02-07 | -| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | 363 | 3754 | 2026-01-29 | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | 342 | 1671 | 2026-02-10 | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | 341 | 4711 | 2026-01-29 | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p1_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p1_vw.json) | 2026-01-29 | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p2_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p2_vw.json) | 2026-01-31 | +| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p3_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p3_vw.json) | 2026-02-07 | +| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p4_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p4_vw.json) | 2026-01-29 | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p5_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p5_vw.json) | 2026-02-10 | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p6_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p6_vw.json) | 2026-01-29 | *完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)* diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 2f763f1..11a6016 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -202,6 +202,11 @@ class OpenWebUIStats: - prev.get("points", 0), "contributions": stats.get("user", {}).get("contributions", 0) - prev.get("contributions", 0), + "posts": { + p["slug"]: p["downloads"] + - prev.get("posts", {}).get(p["slug"], p["downloads"]) + for p in stats.get("posts", []) + }, } def _resolve_post_type(self, post: dict) -> str: @@ -701,6 +706,39 @@ class OpenWebUIStats: "content": json.dumps(badge_data, ensure_ascii=False) } + # 生成 Top 6 插件徽章 (基于槽位 p1, p2...) + post_deltas = delta.get("posts", {}) + for i, post in enumerate(stats.get("posts", [])[:6]): + idx = i + 1 + diff = post_deltas.get(post["slug"], 0) + + # 下载量徽章 + dl_msg = f"{post['downloads']}" + if diff > 0: + dl_msg += f" (+{diff}🚀)" + + files_payload[f"badge_p{idx}_dl.json"] = { + "content": json.dumps( + { + "schemaVersion": 1, + "label": "Downloads", + "message": dl_msg, + "color": "brightgreen", + } + ) + } + # 浏览量徽章 (由于历史记录没记单个 post 浏览量,暂时只显总数) + files_payload[f"badge_p{idx}_vw.json"] = { + "content": json.dumps( + { + "schemaVersion": 1, + "label": "Views", + "message": f"{post['views']}", + "color": "blue", + } + ) + } + # 批量上传到 Gist url = f"https://api.github.com/gists/{self.gist_id}" headers = {"Authorization": f"token {self.gist_token}"} @@ -819,9 +857,18 @@ class OpenWebUIStats: medals = ["🥇", "🥈", "🥉", "4️⃣", "5️⃣", "6️⃣"] for i, post in enumerate(top_plugins): - medal = medals[i] if i < len(medals) else str(i + 1) + idx = i + 1 + medal = medals[i] if i < len(medals) else str(idx) + + # 如果有 Gist,使用动态徽章 + dl_cell = f"{post['downloads']}" + vw_cell = f"{post['views']}" + if base_badge_url: + dl_cell = f"![dl]({base_badge_url}/badge_p{idx}_dl.json)" + vw_cell = f"![vw]({base_badge_url}/badge_p{idx}_vw.json)" + lines.append( - f"| {medal} | [{post['title']}]({post['url']}) | {post['version']} | {post['downloads']} | {post['views']} | {post['updated_at']} |" + f"| {medal} | [{post['title']}]({post['url']}) | {post['version']} | {dl_cell} | {vw_cell} | {post['updated_at']} |" ) lines.append("") From edbd75e5dcf941eabb1ff8d7533aaef34d3a8593 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:12:37 +0800 Subject: [PATCH 10/47] fix: URL encode Gist raw endpoints for reliable Shields.io badge rendering --- README.md | 18 +++++++++--------- README_CN.md | 18 +++++++++--------- scripts/openwebui_stats.py | 32 +++++++++++++------------------- 3 files changed, 31 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index fae0d4f..a06f539 100644 --- a/README.md +++ b/README.md @@ -7,25 +7,25 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats -> 🕐 Auto-updated: 2026-02-11 12:10 +> 🕐 Auto-updated: 2026-02-11 12:12 | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | :---: | :---: | :---: | :---: | -| [Fu-Jie](https://openwebui.com/u/Fu-Jie) | ![followers](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_followers.json?style=flat) | ![points](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_points.json?style=flat) | ![contributions](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_contributions.json?style=flat) | +| [Fu-Jie](https://openwebui.com/u/Fu-Jie) | ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&style=flat) | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&style=flat) | ![contributions](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_contributions.json&style=flat) | | 📝 Posts | ⬇️ Downloads | 👁️ Views | 👍 Upvotes | 💾 Saves | | :---: | :---: | :---: | :---: | :---: | -| ![posts](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_posts.json?style=flat) | ![downloads](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_downloads.json?style=flat) | ![views](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_views.json?style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_upvotes.json?style=flat) | ![saves](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_saves.json?style=flat) | +| ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | ### 🔥 Top 6 Popular Plugins | Rank | Plugin | Version | Downloads | Views | Updated | | :---: | :--- | :---: | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p1_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p1_vw.json) | 2026-01-29 | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p2_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p2_vw.json) | 2026-01-31 | -| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p3_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p3_vw.json) | 2026-02-07 | -| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p4_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p4_vw.json) | 2026-01-29 | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p5_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p5_vw.json) | 2026-02-10 | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p6_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p6_vw.json) | 2026-01-29 | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | 2026-01-29 | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | 2026-01-31 | +| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | 2026-02-07 | +| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | 2026-01-29 | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | 2026-02-10 | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | 2026-01-29 | *See full stats and charts in [Community Stats Report](./docs/community-stats.md)* diff --git a/README_CN.md b/README_CN.md index 5455949..a0b5061 100644 --- a/README_CN.md +++ b/README_CN.md @@ -6,25 +6,25 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ## 📊 社区统计 -> 🕐 自动更新于 2026-02-11 12:10 +> 🕐 自动更新于 2026-02-11 12:12 | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | :---: | :---: | :---: | :---: | -| [Fu-Jie](https://openwebui.com/u/Fu-Jie) | ![followers](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_followers.json?style=flat) | ![points](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_points.json?style=flat) | ![contributions](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_contributions.json?style=flat) | +| [Fu-Jie](https://openwebui.com/u/Fu-Jie) | ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&style=flat) | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&style=flat) | ![contributions](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_contributions.json&style=flat) | | 📝 发布 | ⬇️ 下载 | 👁️ 浏览 | 👍 点赞 | 💾 收藏 | | :---: | :---: | :---: | :---: | :---: | -| ![posts](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_posts.json?style=flat) | ![downloads](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_downloads.json?style=flat) | ![views](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_views.json?style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_upvotes.json?style=flat) | ![saves](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_saves.json?style=flat) | +| ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | ### 🔥 热门插件 Top 6 | 排名 | 插件 | 版本 | 下载 | 浏览 | 更新日期 | | :---: | :--- | :---: | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p1_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p1_vw.json) | 2026-01-29 | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p2_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p2_vw.json) | 2026-01-31 | -| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p3_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p3_vw.json) | 2026-02-07 | -| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p4_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p4_vw.json) | 2026-01-29 | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p5_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p5_vw.json) | 2026-02-10 | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | ![dl](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p6_dl.json) | ![vw](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/badge_p6_vw.json) | 2026-01-29 | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | 2026-01-29 | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | 2026-01-31 | +| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | 2026-02-07 | +| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | 2026-01-29 | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | 2026-02-10 | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | 2026-01-29 | *完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)* diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 11a6016..519980c 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -800,20 +800,15 @@ class OpenWebUIStats: lines.append("") # 定义徽章 URL (使用 Gist ID) - # 注意: 这里使用 shields.io 的 endpoint 功能,直接读取 Gist Raw URL - # URL 格式: https://gist.githubusercontent.com/{gist_user}/{gist_id}/raw/badge_{key}.json - # 由于我们不知道 gist_user,但 Gist ID 是全局唯一的,我们可以用 shields.io 的兼容性或者假设用户名为 Fu-Jie (根据 user request) - # 为了通用性,我们这里使用 requests 获取一次 final URL 或者直接硬编码 Fu-Jie (因为 Gist 是私有的或者为了简单) - # 用户明确提到: https://gist.github.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6 - gist_user = "Fu-Jie" - if self.gist_id: - base_badge_url = f"https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/{gist_user}/{self.gist_id}/raw" - else: - base_badge_url = "" + import urllib.parse - def get_badge(key: str, style: str = "flat") -> str: - if not base_badge_url: + gist_user = "Fu-Jie" + + def get_badge(key: str, is_post: bool = False, style: str = "flat") -> str: + if not self.gist_id: # 降级:如果没有 Gist,显示静态文本 + if is_post: + return "**-**" val = stats.get(f"total_{key}", 0) if key == "followers": val = user.get("followers", 0) @@ -827,7 +822,10 @@ class OpenWebUIStats: val = stats.get("total_saves", 0) return f"**{val}**{fmt_delta(key)}" - return f"![{key}]({base_badge_url}/badge_{key}.json?style={style})" + # 对 Gist Raw URL 进行转义,确保 Shields.io 正确处理 + raw_url = f"https://gist.githubusercontent.com/{gist_user}/{self.gist_id}/raw/badge_{key}.json" + encoded_url = urllib.parse.quote(raw_url, safe="") + return f"![{key}](https://img.shields.io/endpoint?url={encoded_url}&style={style})" # 作者信息表格 if user: @@ -860,12 +858,8 @@ class OpenWebUIStats: idx = i + 1 medal = medals[i] if i < len(medals) else str(idx) - # 如果有 Gist,使用动态徽章 - dl_cell = f"{post['downloads']}" - vw_cell = f"{post['views']}" - if base_badge_url: - dl_cell = f"![dl]({base_badge_url}/badge_p{idx}_dl.json)" - vw_cell = f"![vw]({base_badge_url}/badge_p{idx}_vw.json)" + dl_cell = get_badge(f"p{idx}_dl", is_post=True) + vw_cell = get_badge(f"p{idx}_vw", is_post=True) lines.append( f"| {medal} | [{post['title']}]({post['url']}) | {post['version']} | {dl_cell} | {vw_cell} | {post['updated_at']} |" From e50a55ee1195f92eea832d7425f79ffd156eccda Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:13:29 +0800 Subject: [PATCH 11/47] feat: enhance Mermaid visualizations with multi-series trends, distribution pie, and impact analysis --- scripts/openwebui_stats.py | 74 ++++++++++++++++++++++++++------------ 1 file changed, 51 insertions(+), 23 deletions(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 519980c..6e81c99 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -269,31 +269,59 @@ class OpenWebUIStats: print(f"⚠️ 无法从 Token 解析用户 ID: {e}") return "" - def generate_mermaid_chart(self) -> str: - """生成 Mermaid 增长趋势图""" + def generate_mermaid_chart(self, stats: dict = None) -> str: + """生成多维度的 Mermaid 可视化图表集""" history = self.load_history() - if len(history) < 3: # 数据太少不显示图表 - return "" + charts = [] - # 只取最近 14 天的数据用于展示 - data = history[-14:] - dates = [item["date"][-5:] for item in data] # 只取 MM-DD - dates_str = ", ".join([f'"{d}"' for d in dates]) - downloads = [str(item["total_downloads"]) for item in data] - downloads_str = ", ".join(downloads) + # 1. 增长趋势图 (XY Chart) + if len(history) >= 3: + # 只取最近 14 天 + data = history[-14:] + dates = [item["date"][-5:] for item in data] + dates_str = ", ".join([f'"{d}"' for d in dates]) + dls = [str(item["total_downloads"]) for item in data] + vws = [str(item["total_views"]) for item in data] - mm = [] - mm.append("### 📈 增长趋势 (14天)") - mm.append("") - mm.append("```mermaid") - mm.append("xychart-beta") - mm.append(f' title "Downloads Trend"') - mm.append(f" x-axis [{dates_str}]") - mm.append(f' y-axis "Downloads"') - mm.append(f" line [{downloads_str}]") - mm.append("```") - mm.append("") - return "\n".join(mm) + charts.append("### 📈 增长与趋势 (Last 14 Days)") + charts.append("```mermaid") + charts.append("xychart-beta") + charts.append(' title "Engagement & Downloads Trend"') + charts.append(f" x-axis [{dates_str}]") + charts.append(f' y-axis "Total Counts"') + charts.append(f" line [{', '.join(dls)}]") + charts.append(f" line [{', '.join(vws)}]") + charts.append("```") + charts.append("\n> *蓝色: 总下载量 | 紫色: 总浏览量*") + charts.append("") + + # 2. 插件类型分布 (Pie Chart) + if stats and stats.get("by_type"): + charts.append("### 📂 内容分类占比 (Distribution)") + charts.append("```mermaid") + charts.append("pie title Plugin Types") + for p_type, count in stats["by_type"].items(): + charts.append(f' "{p_type}" : {count}') + charts.append("```") + charts.append("") + + # 3. 影响力分析 (Bar Chart for Top 6) + if stats and stats.get("posts"): + top6 = stats["posts"][:6] + labels = [f'"{p["title"][:15]}..."' for p in top6] + values = [str(p["downloads"]) for p in top6] + + charts.append("### 🏆 影响力排行 (Top 6 Downloads)") + charts.append("```mermaid") + charts.append("xychart-beta") + charts.append(' title "Top 6 Plugins Comparison"') + charts.append(f" x-axis [{', '.join(labels)}]") + charts.append(f' y-axis "Downloads"') + charts.append(f" bar [{', '.join(values)}]") + charts.append("```") + charts.append("") + + return "\n".join(charts) def get_user_posts(self, sort: str = "new", page: int = 1) -> list: """ @@ -514,7 +542,7 @@ class OpenWebUIStats: md.append("") # 插入趋势图 - chart = self.generate_mermaid_chart() + chart = self.generate_mermaid_chart(stats) if chart: md.append(chart) md.append("") From 6d080d3a28206f145c41348d670f98b8745d6e24 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:15:22 +0800 Subject: [PATCH 12/47] data: reconstruct full stats history from git logs and update reports --- README.md | 2 +- README_CN.md | 2 +- docs/community-stats.json | 6 +- docs/community-stats.md | 48 +- docs/community-stats.zh.md | 48 +- docs/stats-history.json | 1089 +++++++++++++++++++++++++++++++++++- 6 files changed, 1151 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index a06f539..f0aade7 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats -> 🕐 Auto-updated: 2026-02-11 12:12 +> 🕐 Auto-updated: 2026-02-11 12:15 | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | :---: | :---: | :---: | :---: | diff --git a/README_CN.md b/README_CN.md index a0b5061..1f40a70 100644 --- a/README_CN.md +++ b/README_CN.md @@ -6,7 +6,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ## 📊 社区统计 -> 🕐 自动更新于 2026-02-11 12:12 +> 🕐 自动更新于 2026-02-11 12:15 | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | :---: | :---: | :---: | :---: | diff --git a/docs/community-stats.json b/docs/community-stats.json index 75c47fa..fefc68f 100644 --- a/docs/community-stats.json +++ b/docs/community-stats.json @@ -1,7 +1,7 @@ { "total_posts": 22, "total_downloads": 4156, - "total_views": 45911, + "total_views": 45912, "total_upvotes": 231, "total_downvotes": 2, "total_saves": 274, @@ -71,7 +71,7 @@ "author": "Fu-Jie", "description": "Reduces token consumption in long conversations while maintaining coherence through intelligent summarization and message compression.", "downloads": 363, - "views": 3754, + "views": 3755, "upvotes": 14, "saves": 34, "comments": 0, @@ -311,7 +311,7 @@ "author": "", "description": "", "downloads": 0, - "views": 276, + "views": 277, "upvotes": 5, "saves": 0, "comments": 0, diff --git a/docs/community-stats.md b/docs/community-stats.md index d7315c8..7f0afff 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -1,15 +1,37 @@ # 📊 OpenWebUI Community Stats Report -> 📅 Updated: 2026-02-11 12:09 - -### 📈 增长趋势 (14天) +> 📅 Updated: 2026-02-11 12:15 +### 📈 增长与趋势 (Last 14 Days) ```mermaid xychart-beta - title "Downloads Trend" - x-axis ["02-09", "02-10", "02-11"] + title "Engagement & Downloads Trend" + x-axis ["01-29", "01-30", "01-31", "02-01", "02-02", "02-03", "02-04", "02-05", "02-06", "02-07", "02-08", "02-09", "02-10", "02-11"] + y-axis "Total Counts" + line [2780, 2877, 2979, 3030, 3168, 3236, 3374, 3522, 3663, 3779, 3872, 3996, 4131, 4156] + line [32888, 34134, 35248, 35805, 37424, 38133, 39440, 40964, 43171, 44354, 45255, 46645, 48876, 45912] +``` + +> *蓝色: 总下载量 | 紫色: 总浏览量* + +### 📂 内容分类占比 (Distribution) +```mermaid +pie title Plugin Types + "post" : 3 + "filter" : 4 + "pipe" : 1 + "action" : 12 + "prompt" : 1 + "review" : 1 +``` + +### 🏆 影响力排行 (Top 6 Downloads) +```mermaid +xychart-beta + title "Top 6 Plugins Comparison" + x-axis ["Smart Mind Map...", "Smart Infograph...", "Export to Word ...", "Async Context C...", "Export to Excel...", "Markdown Normal..."] y-axis "Downloads" - line [3800, 4000, 4156] + bar [954, 707, 383, 363, 342, 341] ``` @@ -18,13 +40,13 @@ xychart-beta | Metric | Value | Growth (24h) | |------|------|:---:| | 📝 Total Posts | 22 | - | -| ⬇️ Total Downloads | 4156 | **+156** 🚀 | -| 👁️ Total Views | 45911 | **+1911** 🚀 | -| 👍 Total Upvotes | 231 | **+11** 🚀 | +| ⬇️ Total Downloads | 4156 | **+25** 🚀 | +| 👁️ Total Views | 45912 | - | +| 👍 Total Upvotes | 231 | **+1** 🚀 | | 💾 Total Saves | 274 | - | | 💬 Total Comments | 55 | - | -| ⭐ Author Points | 271 | - | -| 👥 Followers | 220 | **+2** 🚀 | +| ⭐ Author Points | 271 | **+1** 🚀 | +| 👥 Followers | 220 | - | ## 📂 By Type @@ -42,7 +64,7 @@ xychart-beta | 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 954 | 8385 | 22 | 50 | 2026-01-29 | | 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 707 | 6701 | 24 | 34 | 2026-01-31 | | 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 383 | 3026 | 14 | 26 | 2026-02-07 | -| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | 363 | 3754 | 14 | 34 | 2026-01-29 | +| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | 363 | 3755 | 14 | 34 | 2026-01-29 | | 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 342 | 1671 | 7 | 6 | 2026-02-10 | | 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | 341 | 4711 | 17 | 30 | 2026-01-29 | | 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 226 | 3387 | 13 | 14 | 2026-01-29 | @@ -57,7 +79,7 @@ xychart-beta | 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 690 | 8 | 1 | 2026-01-29 | | 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 444 | 5 | 1 | 2026-01-08 | | 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 851 | 3 | 0 | 2026-02-10 | -| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 276 | 5 | 0 | 2026-02-10 | +| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 277 | 5 | 0 | 2026-02-10 | | 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | 0 | 1525 | 12 | 19 | 2026-01-29 | | 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | 0 | 161 | 2 | 0 | 2026-01-14 | | 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | 0 | 1421 | 14 | 10 | 2026-01-10 | diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index fd3077a..8786068 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -1,15 +1,37 @@ # 📊 OpenWebUI 社区统计报告 -> 📅 更新时间: 2026-02-11 12:09 - -### 📈 增长趋势 (14天) +> 📅 更新时间: 2026-02-11 12:15 +### 📈 增长与趋势 (Last 14 Days) ```mermaid xychart-beta - title "Downloads Trend" - x-axis ["02-09", "02-10", "02-11"] + title "Engagement & Downloads Trend" + x-axis ["01-29", "01-30", "01-31", "02-01", "02-02", "02-03", "02-04", "02-05", "02-06", "02-07", "02-08", "02-09", "02-10", "02-11"] + y-axis "Total Counts" + line [2780, 2877, 2979, 3030, 3168, 3236, 3374, 3522, 3663, 3779, 3872, 3996, 4131, 4156] + line [32888, 34134, 35248, 35805, 37424, 38133, 39440, 40964, 43171, 44354, 45255, 46645, 48876, 45912] +``` + +> *蓝色: 总下载量 | 紫色: 总浏览量* + +### 📂 内容分类占比 (Distribution) +```mermaid +pie title Plugin Types + "post" : 3 + "filter" : 4 + "pipe" : 1 + "action" : 12 + "prompt" : 1 + "review" : 1 +``` + +### 🏆 影响力排行 (Top 6 Downloads) +```mermaid +xychart-beta + title "Top 6 Plugins Comparison" + x-axis ["Smart Mind Map...", "Smart Infograph...", "Export to Word ...", "Async Context C...", "Export to Excel...", "Markdown Normal..."] y-axis "Downloads" - line [3800, 4000, 4156] + bar [954, 707, 383, 363, 342, 341] ``` @@ -18,13 +40,13 @@ xychart-beta | 指标 | 数值 | 增长 (24h) | |------|------|:---:| | 📝 发布数量 | 22 | - | -| ⬇️ 总下载量 | 4156 | **+156** 🚀 | -| 👁️ 总浏览量 | 45911 | **+1911** 🚀 | -| 👍 总点赞数 | 231 | **+11** 🚀 | +| ⬇️ 总下载量 | 4156 | **+25** 🚀 | +| 👁️ 总浏览量 | 45912 | - | +| 👍 总点赞数 | 231 | **+1** 🚀 | | 💾 总收藏数 | 274 | - | | 💬 总评论数 | 55 | - | -| ⭐ 作者总积分 | 271 | - | -| 👥 粉丝数量 | 220 | **+2** 🚀 | +| ⭐ 作者总积分 | 271 | **+1** 🚀 | +| 👥 粉丝数量 | 220 | - | ## 📂 按类型分类 @@ -42,7 +64,7 @@ xychart-beta | 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 954 | 8385 | 22 | 50 | 2026-01-29 | | 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 707 | 6701 | 24 | 34 | 2026-01-31 | | 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 383 | 3026 | 14 | 26 | 2026-02-07 | -| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | 363 | 3754 | 14 | 34 | 2026-01-29 | +| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | 363 | 3755 | 14 | 34 | 2026-01-29 | | 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 342 | 1671 | 7 | 6 | 2026-02-10 | | 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | 341 | 4711 | 17 | 30 | 2026-01-29 | | 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 226 | 3387 | 13 | 14 | 2026-01-29 | @@ -57,7 +79,7 @@ xychart-beta | 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 690 | 8 | 1 | 2026-01-29 | | 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 444 | 5 | 1 | 2026-01-08 | | 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 851 | 3 | 0 | 2026-02-10 | -| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 276 | 5 | 0 | 2026-02-10 | +| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 277 | 5 | 0 | 2026-02-10 | | 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | 0 | 1525 | 12 | 19 | 2026-01-29 | | 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | 0 | 161 | 2 | 0 | 2026-01-14 | | 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | 0 | 1421 | 14 | 10 | 2026-01-10 | diff --git a/docs/stats-history.json b/docs/stats-history.json index 2d93fb8..68793e6 100644 --- a/docs/stats-history.json +++ b/docs/stats-history.json @@ -1,27 +1,1090 @@ [ + { + "date": "2026-01-05", + "total_downloads": 748, + "total_views": 7896, + "total_upvotes": 54, + "total_saves": 44, + "followers": 35, + "points": 63, + "contributions": 17, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 218, + "export_mulit_table_to_excel_244b8f9d": 168, + "async_context_compression_b1655bc8": 111, + "flash_card_65a2ea8f": 73, + "smart_infographic_ad6f0c7f": 62, + "export_to_word_enhanced_formatting_fca6a315": 45, + "智能信息图_e04a48ff": 31, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 13, + "闪记卡生成插件_4a31eac3": 12, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 10, + "异步上下文压缩_5c0617cb": 5 + } + }, + { + "date": "2026-01-06", + "total_downloads": 830, + "total_views": 8847, + "total_upvotes": 54, + "total_saves": 48, + "followers": 45, + "points": 62, + "contributions": 18, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 258, + "export_mulit_table_to_excel_244b8f9d": 173, + "async_context_compression_b1655bc8": 114, + "flash_card_65a2ea8f": 78, + "smart_infographic_ad6f0c7f": 70, + "export_to_word_enhanced_formatting_fca6a315": 57, + "智能信息图_e04a48ff": 33, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 16, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 14, + "闪记卡生成插件_4a31eac3": 12, + "异步上下文压缩_5c0617cb": 5 + } + }, + { + "date": "2026-01-07", + "total_downloads": 915, + "total_views": 9637, + "total_upvotes": 55, + "total_saves": 50, + "followers": 50, + "points": 63, + "contributions": 18, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 293, + "export_mulit_table_to_excel_244b8f9d": 178, + "async_context_compression_b1655bc8": 119, + "smart_infographic_ad6f0c7f": 87, + "flash_card_65a2ea8f": 84, + "export_to_word_enhanced_formatting_fca6a315": 69, + "智能信息图_e04a48ff": 33, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 20, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 15, + "闪记卡生成插件_4a31eac3": 12, + "异步上下文压缩_5c0617cb": 5 + } + }, + { + "date": "2026-01-08", + "total_downloads": 972, + "total_views": 10200, + "total_upvotes": 60, + "total_saves": 53, + "followers": 54, + "points": 68, + "contributions": 20, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 308, + "export_mulit_table_to_excel_244b8f9d": 179, + "async_context_compression_b1655bc8": 121, + "smart_infographic_ad6f0c7f": 98, + "flash_card_65a2ea8f": 91, + "export_to_word_enhanced_formatting_fca6a315": 76, + "智能信息图_e04a48ff": 34, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 26, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 16, + "闪记卡生成插件_4a31eac3": 12, + "deep_dive_c0b846e4": 5, + "异步上下文压缩_5c0617cb": 5, + "精读_99830b0f": 1 + } + }, + { + "date": "2026-01-09", + "total_downloads": 1016, + "total_views": 10831, + "total_upvotes": 62, + "total_saves": 56, + "followers": 59, + "points": 70, + "contributions": 20, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 323, + "export_mulit_table_to_excel_244b8f9d": 180, + "async_context_compression_b1655bc8": 121, + "smart_infographic_ad6f0c7f": 106, + "flash_card_65a2ea8f": 91, + "export_to_word_enhanced_formatting_fca6a315": 80, + "智能信息图_e04a48ff": 35, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 30, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 17, + "deep_dive_c0b846e4": 14, + "闪记卡生成插件_4a31eac3": 12, + "异步上下文压缩_5c0617cb": 6, + "精读_99830b0f": 1 + } + }, + { + "date": "2026-01-10", + "total_downloads": 1087, + "total_views": 11853, + "total_upvotes": 68, + "total_saves": 67, + "followers": 75, + "points": 77, + "contributions": 22, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 348, + "export_mulit_table_to_excel_244b8f9d": 181, + "async_context_compression_b1655bc8": 128, + "smart_infographic_ad6f0c7f": 120, + "flash_card_65a2ea8f": 94, + "export_to_word_enhanced_formatting_fca6a315": 87, + "智能信息图_e04a48ff": 35, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 33, + "deep_dive_c0b846e4": 24, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 17, + "闪记卡生成插件_4a31eac3": 12, + "异步上下文压缩_5c0617cb": 7, + "精读_99830b0f": 1, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-11", + "total_downloads": 1182, + "total_views": 13045, + "total_upvotes": 79, + "total_saves": 77, + "followers": 82, + "points": 90, + "contributions": 22, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 375, + "export_mulit_table_to_excel_244b8f9d": 186, + "smart_infographic_ad6f0c7f": 141, + "async_context_compression_b1655bc8": 138, + "export_to_word_enhanced_formatting_fca6a315": 100, + "flash_card_65a2ea8f": 100, + "智能信息图_e04a48ff": 35, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 35, + "deep_dive_c0b846e4": 31, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 18, + "闪记卡生成插件_4a31eac3": 12, + "异步上下文压缩_5c0617cb": 8, + "精读_99830b0f": 3, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-12", + "total_downloads": 1256, + "total_views": 13998, + "total_upvotes": 87, + "total_saves": 85, + "followers": 91, + "points": 98, + "contributions": 23, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 400, + "export_mulit_table_to_excel_244b8f9d": 189, + "smart_infographic_ad6f0c7f": 151, + "async_context_compression_b1655bc8": 144, + "export_to_word_enhanced_formatting_fca6a315": 106, + "flash_card_65a2ea8f": 105, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 40, + "智能信息图_e04a48ff": 35, + "deep_dive_c0b846e4": 35, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 19, + "异步上下文压缩_5c0617cb": 12, + "闪记卡生成插件_4a31eac3": 12, + "精读_99830b0f": 5, + "markdown_normalizer_baaa8732": 3, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-13", + "total_downloads": 1343, + "total_views": 15618, + "total_upvotes": 88, + "total_saves": 96, + "followers": 99, + "points": 100, + "contributions": 23, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 425, + "export_mulit_table_to_excel_244b8f9d": 190, + "smart_infographic_ad6f0c7f": 167, + "async_context_compression_b1655bc8": 151, + "export_to_word_enhanced_formatting_fca6a315": 111, + "flash_card_65a2ea8f": 107, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 46, + "deep_dive_c0b846e4": 41, + "智能信息图_e04a48ff": 37, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 20, + "markdown_normalizer_baaa8732": 18, + "异步上下文压缩_5c0617cb": 13, + "闪记卡生成插件_4a31eac3": 12, + "精读_99830b0f": 5, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-14", + "total_downloads": 1460, + "total_views": 17211, + "total_upvotes": 93, + "total_saves": 109, + "followers": 104, + "points": 106, + "contributions": 25, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 453, + "export_mulit_table_to_excel_244b8f9d": 194, + "smart_infographic_ad6f0c7f": 186, + "async_context_compression_b1655bc8": 156, + "export_to_word_enhanced_formatting_fca6a315": 123, + "flash_card_65a2ea8f": 119, + "deep_dive_c0b846e4": 55, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 49, + "智能信息图_e04a48ff": 41, + "markdown_normalizer_baaa8732": 31, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 21, + "异步上下文压缩_5c0617cb": 14, + "闪记卡生成插件_4a31eac3": 12, + "精读_99830b0f": 6, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-15", + "total_downloads": 1527, + "total_views": 18153, + "total_upvotes": 93, + "total_saves": 109, + "followers": 108, + "points": 106, + "contributions": 25, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 474, + "smart_infographic_ad6f0c7f": 202, + "export_mulit_table_to_excel_244b8f9d": 197, + "async_context_compression_b1655bc8": 162, + "export_to_word_enhanced_formatting_fca6a315": 124, + "flash_card_65a2ea8f": 124, + "deep_dive_c0b846e4": 56, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 50, + "markdown_normalizer_baaa8732": 42, + "智能信息图_e04a48ff": 41, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 22, + "异步上下文压缩_5c0617cb": 14, + "闪记卡生成插件_4a31eac3": 13, + "精读_99830b0f": 6, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-16", + "total_downloads": 1598, + "total_views": 19406, + "total_upvotes": 94, + "total_saves": 121, + "followers": 114, + "points": 108, + "contributions": 25, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 498, + "smart_infographic_ad6f0c7f": 212, + "export_mulit_table_to_excel_244b8f9d": 201, + "async_context_compression_b1655bc8": 171, + "export_to_word_enhanced_formatting_fca6a315": 128, + "flash_card_65a2ea8f": 128, + "deep_dive_c0b846e4": 57, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 56, + "markdown_normalizer_baaa8732": 51, + "智能信息图_e04a48ff": 41, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 22, + "异步上下文压缩_5c0617cb": 14, + "闪记卡生成插件_4a31eac3": 13, + "精读_99830b0f": 6, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-17", + "total_downloads": 1668, + "total_views": 20118, + "total_upvotes": 99, + "total_saves": 127, + "followers": 120, + "points": 113, + "contributions": 25, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 510, + "smart_infographic_ad6f0c7f": 229, + "export_mulit_table_to_excel_244b8f9d": 202, + "async_context_compression_b1655bc8": 174, + "export_to_word_enhanced_formatting_fca6a315": 137, + "flash_card_65a2ea8f": 133, + "markdown_normalizer_baaa8732": 64, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 62, + "deep_dive_c0b846e4": 58, + "智能信息图_e04a48ff": 41, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 22, + "闪记卡生成插件_4a31eac3": 16, + "异步上下文压缩_5c0617cb": 14, + "精读_99830b0f": 6, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-18", + "total_downloads": 1766, + "total_views": 20931, + "total_upvotes": 119, + "total_saves": 131, + "followers": 129, + "points": 133, + "contributions": 25, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 529, + "smart_infographic_ad6f0c7f": 252, + "export_mulit_table_to_excel_244b8f9d": 208, + "async_context_compression_b1655bc8": 178, + "export_to_word_enhanced_formatting_fca6a315": 155, + "flash_card_65a2ea8f": 135, + "markdown_normalizer_baaa8732": 81, + "deep_dive_c0b846e4": 65, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 63, + "智能信息图_e04a48ff": 42, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 22, + "闪记卡生成插件_4a31eac3": 16, + "异步上下文压缩_5c0617cb": 14, + "精读_99830b0f": 6, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-19", + "total_downloads": 1834, + "total_views": 21730, + "total_upvotes": 120, + "total_saves": 143, + "followers": 135, + "points": 134, + "contributions": 25, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 540, + "smart_infographic_ad6f0c7f": 272, + "export_mulit_table_to_excel_244b8f9d": 211, + "async_context_compression_b1655bc8": 185, + "export_to_word_enhanced_formatting_fca6a315": 162, + "flash_card_65a2ea8f": 140, + "markdown_normalizer_baaa8732": 90, + "deep_dive_c0b846e4": 69, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 65, + "智能信息图_e04a48ff": 42, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 22, + "闪记卡生成插件_4a31eac3": 16, + "异步上下文压缩_5c0617cb": 14, + "精读_99830b0f": 6, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-20", + "total_downloads": 1922, + "total_views": 22431, + "total_upvotes": 121, + "total_saves": 150, + "followers": 140, + "points": 135, + "contributions": 26, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 557, + "smart_infographic_ad6f0c7f": 287, + "export_mulit_table_to_excel_244b8f9d": 220, + "async_context_compression_b1655bc8": 193, + "export_to_word_enhanced_formatting_fca6a315": 174, + "flash_card_65a2ea8f": 146, + "markdown_normalizer_baaa8732": 97, + "deep_dive_c0b846e4": 75, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 66, + "智能信息图_e04a48ff": 44, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 24, + "闪记卡生成插件_4a31eac3": 16, + "异步上下文压缩_5c0617cb": 14, + "精读_99830b0f": 6, + "folder_memory_auto_evolving_project_context_4a9875b2": 3, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-21", + "total_downloads": 1998, + "total_views": 23327, + "total_upvotes": 121, + "total_saves": 154, + "followers": 146, + "points": 135, + "contributions": 26, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 566, + "smart_infographic_ad6f0c7f": 305, + "export_mulit_table_to_excel_244b8f9d": 231, + "async_context_compression_b1655bc8": 199, + "export_to_word_enhanced_formatting_fca6a315": 181, + "flash_card_65a2ea8f": 149, + "markdown_normalizer_baaa8732": 101, + "deep_dive_c0b846e4": 76, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 69, + "智能信息图_e04a48ff": 45, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 27, + "闪记卡生成插件_4a31eac3": 19, + "异步上下文压缩_5c0617cb": 15, + "精读_99830b0f": 8, + "folder_memory_auto_evolving_project_context_4a9875b2": 7, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-22", + "total_downloads": 2066, + "total_views": 24204, + "total_upvotes": 129, + "total_saves": 164, + "followers": 152, + "points": 143, + "contributions": 26, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 576, + "smart_infographic_ad6f0c7f": 322, + "export_mulit_table_to_excel_244b8f9d": 238, + "async_context_compression_b1655bc8": 202, + "export_to_word_enhanced_formatting_fca6a315": 191, + "flash_card_65a2ea8f": 155, + "markdown_normalizer_baaa8732": 110, + "deep_dive_c0b846e4": 77, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 72, + "智能信息图_e04a48ff": 45, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 27, + "闪记卡生成插件_4a31eac3": 19, + "异步上下文压缩_5c0617cb": 15, + "folder_memory_auto_evolving_project_context_4a9875b2": 9, + "精读_99830b0f": 8, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-23", + "total_downloads": 2182, + "total_views": 25156, + "total_upvotes": 129, + "total_saves": 165, + "followers": 154, + "points": 143, + "contributions": 26, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 593, + "smart_infographic_ad6f0c7f": 347, + "export_mulit_table_to_excel_244b8f9d": 245, + "async_context_compression_b1655bc8": 210, + "export_to_word_enhanced_formatting_fca6a315": 207, + "flash_card_65a2ea8f": 158, + "markdown_normalizer_baaa8732": 127, + "deep_dive_c0b846e4": 84, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 80, + "智能信息图_e04a48ff": 45, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 27, + "闪记卡生成插件_4a31eac3": 19, + "folder_memory_auto_evolving_project_context_4a9875b2": 16, + "异步上下文压缩_5c0617cb": 15, + "精读_99830b0f": 9, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-24", + "total_downloads": 2257, + "total_views": 25853, + "total_upvotes": 129, + "total_saves": 173, + "followers": 156, + "points": 143, + "contributions": 26, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 605, + "smart_infographic_ad6f0c7f": 366, + "export_mulit_table_to_excel_244b8f9d": 248, + "async_context_compression_b1655bc8": 218, + "export_to_word_enhanced_formatting_fca6a315": 217, + "flash_card_65a2ea8f": 159, + "markdown_normalizer_baaa8732": 136, + "deep_dive_c0b846e4": 87, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 82, + "智能信息图_e04a48ff": 45, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 27, + "folder_memory_auto_evolving_project_context_4a9875b2": 21, + "闪记卡生成插件_4a31eac3": 19, + "异步上下文压缩_5c0617cb": 18, + "精读_99830b0f": 9, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-25", + "total_downloads": 2334, + "total_views": 26665, + "total_upvotes": 133, + "total_saves": 176, + "followers": 157, + "points": 147, + "contributions": 28, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 618, + "smart_infographic_ad6f0c7f": 396, + "export_mulit_table_to_excel_244b8f9d": 249, + "async_context_compression_b1655bc8": 222, + "export_to_word_enhanced_formatting_fca6a315": 219, + "flash_card_65a2ea8f": 164, + "markdown_normalizer_baaa8732": 144, + "deep_dive_c0b846e4": 91, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 86, + "智能信息图_e04a48ff": 46, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 27, + "folder_memory_auto_evolving_project_context_4a9875b2": 26, + "闪记卡生成插件_4a31eac3": 19, + "异步上下文压缩_5c0617cb": 18, + "精读_99830b0f": 9, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-26", + "total_downloads": 2448, + "total_views": 28274, + "total_upvotes": 141, + "total_saves": 188, + "followers": 163, + "points": 157, + "contributions": 33, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 642, + "smart_infographic_ad6f0c7f": 418, + "export_mulit_table_to_excel_244b8f9d": 262, + "export_to_word_enhanced_formatting_fca6a315": 235, + "async_context_compression_b1655bc8": 233, + "flash_card_65a2ea8f": 171, + "markdown_normalizer_baaa8732": 153, + "deep_dive_c0b846e4": 93, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 87, + "智能信息图_e04a48ff": 47, + "folder_memory_auto_evolving_project_context_4a9875b2": 27, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 27, + "异步上下文压缩_5c0617cb": 22, + "闪记卡生成插件_4a31eac3": 19, + "精读_99830b0f": 9, + "github_copilot_official_sdk_pipe_ce96f7b4": 3, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-27", + "total_downloads": 2538, + "total_views": 29641, + "total_upvotes": 150, + "total_saves": 197, + "followers": 165, + "points": 166, + "contributions": 35, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 663, + "smart_infographic_ad6f0c7f": 439, + "export_mulit_table_to_excel_244b8f9d": 264, + "async_context_compression_b1655bc8": 239, + "export_to_word_enhanced_formatting_fca6a315": 239, + "flash_card_65a2ea8f": 179, + "markdown_normalizer_baaa8732": 164, + "deep_dive_c0b846e4": 95, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 89, + "智能信息图_e04a48ff": 48, + "folder_memory_auto_evolving_project_context_4a9875b2": 29, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 28, + "异步上下文压缩_5c0617cb": 23, + "闪记卡生成插件_4a31eac3": 20, + "精读_99830b0f": 10, + "github_copilot_official_sdk_pipe_ce96f7b4": 9, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-28", + "total_downloads": 2629, + "total_views": 30952, + "total_upvotes": 153, + "total_saves": 202, + "followers": 167, + "points": 170, + "contributions": 36, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 685, + "smart_infographic_ad6f0c7f": 461, + "export_mulit_table_to_excel_244b8f9d": 267, + "export_to_word_enhanced_formatting_fca6a315": 247, + "async_context_compression_b1655bc8": 244, + "flash_card_65a2ea8f": 181, + "markdown_normalizer_baaa8732": 167, + "deep_dive_c0b846e4": 100, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 96, + "智能信息图_e04a48ff": 48, + "folder_memory_auto_evolving_project_context_4a9875b2": 29, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 28, + "异步上下文压缩_5c0617cb": 23, + "闪记卡生成插件_4a31eac3": 20, + "github_copilot_official_sdk_pipe_ce96f7b4": 15, + "精读_99830b0f": 10, + "ai_task_instruction_generator_9bab8b37": 8, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-29", + "total_downloads": 2780, + "total_views": 32888, + "total_upvotes": 165, + "total_saves": 213, + "followers": 171, + "points": 186, + "contributions": 38, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 709, + "smart_infographic_ad6f0c7f": 494, + "export_mulit_table_to_excel_244b8f9d": 278, + "export_to_word_enhanced_formatting_fca6a315": 269, + "async_context_compression_b1655bc8": 257, + "flash_card_65a2ea8f": 188, + "markdown_normalizer_baaa8732": 184, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 100, + "deep_dive_c0b846e4": 100, + "智能信息图_e04a48ff": 49, + "folder_memory_auto_evolving_project_context_4a9875b2": 29, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 28, + "异步上下文压缩_5c0617cb": 24, + "ai_task_instruction_generator_9bab8b37": 24, + "闪记卡生成插件_4a31eac3": 20, + "github_copilot_official_sdk_pipe_ce96f7b4": 17, + "精读_99830b0f": 10, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-30", + "total_downloads": 2877, + "total_views": 34134, + "total_upvotes": 167, + "total_saves": 219, + "followers": 175, + "points": 194, + "contributions": 40, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 722, + "smart_infographic_ad6f0c7f": 502, + "export_mulit_table_to_excel_244b8f9d": 285, + "export_to_word_enhanced_formatting_fca6a315": 274, + "async_context_compression_b1655bc8": 262, + "markdown_normalizer_baaa8732": 201, + "flash_card_65a2ea8f": 192, + "deep_dive_c0b846e4": 103, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 101, + "智能信息图_e04a48ff": 49, + "ai_task_instruction_generator_9bab8b37": 45, + "folder_memory_auto_evolving_project_context_4a9875b2": 33, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 29, + "github_copilot_official_sdk_pipe_ce96f7b4": 25, + "异步上下文压缩_5c0617cb": 24, + "闪记卡生成插件_4a31eac3": 20, + "精读_99830b0f": 10, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-01-31", + "total_downloads": 2979, + "total_views": 35248, + "total_upvotes": 167, + "total_saves": 221, + "followers": 176, + "points": 197, + "contributions": 40, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 738, + "smart_infographic_ad6f0c7f": 521, + "export_mulit_table_to_excel_244b8f9d": 291, + "export_to_word_enhanced_formatting_fca6a315": 282, + "async_context_compression_b1655bc8": 274, + "markdown_normalizer_baaa8732": 215, + "flash_card_65a2ea8f": 192, + "deep_dive_c0b846e4": 106, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 101, + "ai_task_instruction_generator_9bab8b37": 62, + "智能信息图_e04a48ff": 49, + "folder_memory_auto_evolving_project_context_4a9875b2": 36, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 29, + "github_copilot_official_sdk_pipe_ce96f7b4": 28, + "异步上下文压缩_5c0617cb": 25, + "闪记卡生成插件_4a31eac3": 20, + "精读_99830b0f": 10, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-02-01", + "total_downloads": 3030, + "total_views": 35805, + "total_upvotes": 167, + "total_saves": 222, + "followers": 177, + "points": 197, + "contributions": 40, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 744, + "smart_infographic_ad6f0c7f": 535, + "export_mulit_table_to_excel_244b8f9d": 293, + "export_to_word_enhanced_formatting_fca6a315": 282, + "async_context_compression_b1655bc8": 278, + "markdown_normalizer_baaa8732": 222, + "flash_card_65a2ea8f": 193, + "deep_dive_c0b846e4": 108, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 101, + "ai_task_instruction_generator_9bab8b37": 72, + "智能信息图_e04a48ff": 49, + "folder_memory_auto_evolving_project_context_4a9875b2": 39, + "github_copilot_official_sdk_pipe_ce96f7b4": 30, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 29, + "异步上下文压缩_5c0617cb": 25, + "闪记卡生成插件_4a31eac3": 20, + "精读_99830b0f": 10, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-02-02", + "total_downloads": 3168, + "total_views": 37424, + "total_upvotes": 169, + "total_saves": 235, + "followers": 181, + "points": 200, + "contributions": 40, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 767, + "smart_infographic_ad6f0c7f": 550, + "export_to_word_enhanced_formatting_fca6a315": 304, + "export_mulit_table_to_excel_244b8f9d": 300, + "async_context_compression_b1655bc8": 289, + "markdown_normalizer_baaa8732": 239, + "flash_card_65a2ea8f": 198, + "deep_dive_c0b846e4": 113, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 108, + "ai_task_instruction_generator_9bab8b37": 82, + "智能信息图_e04a48ff": 50, + "folder_memory_auto_evolving_project_context_4a9875b2": 41, + "github_copilot_official_sdk_pipe_ce96f7b4": 39, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 31, + "异步上下文压缩_5c0617cb": 25, + "闪记卡生成插件_4a31eac3": 21, + "精读_99830b0f": 11, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-02-03", + "total_downloads": 3236, + "total_views": 38133, + "total_upvotes": 169, + "total_saves": 235, + "followers": 183, + "points": 202, + "contributions": 40, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 781, + "smart_infographic_ad6f0c7f": 558, + "export_to_word_enhanced_formatting_fca6a315": 308, + "export_mulit_table_to_excel_244b8f9d": 305, + "async_context_compression_b1655bc8": 294, + "markdown_normalizer_baaa8732": 247, + "flash_card_65a2ea8f": 200, + "deep_dive_c0b846e4": 114, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 111, + "ai_task_instruction_generator_9bab8b37": 97, + "智能信息图_e04a48ff": 50, + "folder_memory_auto_evolving_project_context_4a9875b2": 43, + "github_copilot_official_sdk_pipe_ce96f7b4": 40, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 31, + "异步上下文压缩_5c0617cb": 25, + "闪记卡生成插件_4a31eac3": 21, + "精读_99830b0f": 11, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-02-04", + "total_downloads": 3374, + "total_views": 39440, + "total_upvotes": 210, + "total_saves": 239, + "followers": 188, + "points": 243, + "contributions": 40, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 804, + "smart_infographic_ad6f0c7f": 576, + "export_to_word_enhanced_formatting_fca6a315": 319, + "export_mulit_table_to_excel_244b8f9d": 317, + "async_context_compression_b1655bc8": 310, + "markdown_normalizer_baaa8732": 259, + "flash_card_65a2ea8f": 206, + "deep_dive_c0b846e4": 118, + "ai_task_instruction_generator_9bab8b37": 116, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 113, + "智能信息图_e04a48ff": 53, + "folder_memory_auto_evolving_project_context_4a9875b2": 45, + "github_copilot_official_sdk_pipe_ce96f7b4": 41, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 32, + "异步上下文压缩_5c0617cb": 27, + "闪记卡生成插件_4a31eac3": 23, + "精读_99830b0f": 15, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-02-05", + "total_downloads": 3522, + "total_views": 40964, + "total_upvotes": 211, + "total_saves": 248, + "followers": 196, + "points": 244, + "contributions": 40, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 845, + "smart_infographic_ad6f0c7f": 599, + "export_to_word_enhanced_formatting_fca6a315": 330, + "export_mulit_table_to_excel_244b8f9d": 323, + "async_context_compression_b1655bc8": 317, + "markdown_normalizer_baaa8732": 271, + "flash_card_65a2ea8f": 209, + "ai_task_instruction_generator_9bab8b37": 127, + "deep_dive_c0b846e4": 127, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 116, + "智能信息图_e04a48ff": 56, + "folder_memory_auto_evolving_project_context_4a9875b2": 50, + "github_copilot_official_sdk_pipe_ce96f7b4": 44, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 35, + "异步上下文压缩_5c0617cb": 30, + "闪记卡生成插件_4a31eac3": 26, + "精读_99830b0f": 17, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-02-06", + "total_downloads": 3663, + "total_views": 43171, + "total_upvotes": 213, + "total_saves": 253, + "followers": 202, + "points": 246, + "contributions": 40, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 876, + "smart_infographic_ad6f0c7f": 627, + "export_to_word_enhanced_formatting_fca6a315": 343, + "export_mulit_table_to_excel_244b8f9d": 327, + "async_context_compression_b1655bc8": 326, + "markdown_normalizer_baaa8732": 291, + "flash_card_65a2ea8f": 213, + "ai_task_instruction_generator_9bab8b37": 138, + "deep_dive_c0b846e4": 131, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 119, + "智能信息图_e04a48ff": 56, + "folder_memory_auto_evolving_project_context_4a9875b2": 55, + "github_copilot_official_sdk_pipe_ce96f7b4": 49, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 37, + "异步上下文压缩_5c0617cb": 31, + "闪记卡生成插件_4a31eac3": 27, + "精读_99830b0f": 17, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-02-07", + "total_downloads": 3779, + "total_views": 44354, + "total_upvotes": 221, + "total_saves": 258, + "followers": 205, + "points": 258, + "contributions": 42, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 890, + "smart_infographic_ad6f0c7f": 645, + "export_to_word_enhanced_formatting_fca6a315": 358, + "async_context_compression_b1655bc8": 336, + "export_mulit_table_to_excel_244b8f9d": 330, + "markdown_normalizer_baaa8732": 298, + "flash_card_65a2ea8f": 214, + "ai_task_instruction_generator_9bab8b37": 157, + "deep_dive_c0b846e4": 137, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 119, + "github_copilot_official_sdk_pipe_ce96f7b4": 65, + "智能信息图_e04a48ff": 58, + "folder_memory_auto_evolving_project_context_4a9875b2": 57, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 37, + "异步上下文压缩_5c0617cb": 32, + "闪记卡生成插件_4a31eac3": 27, + "精读_99830b0f": 19, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, + { + "date": "2026-02-08", + "total_downloads": 3872, + "total_views": 45255, + "total_upvotes": 221, + "total_saves": 263, + "followers": 207, + "points": 259, + "contributions": 43, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 909, + "smart_infographic_ad6f0c7f": 661, + "export_to_word_enhanced_formatting_fca6a315": 361, + "async_context_compression_b1655bc8": 347, + "export_mulit_table_to_excel_244b8f9d": 333, + "markdown_normalizer_baaa8732": 308, + "flash_card_65a2ea8f": 215, + "ai_task_instruction_generator_9bab8b37": 172, + "deep_dive_c0b846e4": 143, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 122, + "github_copilot_official_sdk_pipe_ce96f7b4": 70, + "智能信息图_e04a48ff": 58, + "folder_memory_auto_evolving_project_context_4a9875b2": 57, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 37, + "异步上下文压缩_5c0617cb": 33, + "闪记卡生成插件_4a31eac3": 27, + "精读_99830b0f": 19, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } + }, { "date": "2026-02-09", - "total_posts": 20, - "total_downloads": 3800, - "total_views": 42000, - "total_upvotes": 200, - "followers": 215, - "points": 48000 + "total_downloads": 3996, + "total_views": 46645, + "total_upvotes": 224, + "total_saves": 267, + "followers": 214, + "points": 262, + "contributions": 44, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 929, + "smart_infographic_ad6f0c7f": 672, + "export_to_word_enhanced_formatting_fca6a315": 373, + "async_context_compression_b1655bc8": 359, + "export_mulit_table_to_excel_244b8f9d": 340, + "markdown_normalizer_baaa8732": 317, + "flash_card_65a2ea8f": 220, + "ai_task_instruction_generator_9bab8b37": 183, + "deep_dive_c0b846e4": 146, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 124, + "github_copilot_official_sdk_pipe_ce96f7b4": 90, + "folder_memory_auto_evolving_project_context_4a9875b2": 59, + "智能信息图_e04a48ff": 58, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 37, + "异步上下文压缩_5c0617cb": 33, + "闪记卡生成插件_4a31eac3": 27, + "精读_99830b0f": 24, + "github_copilot_sdk_files_filter_403a62ee": 5, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } }, { "date": "2026-02-10", - "total_posts": 21, - "total_downloads": 4000, - "total_views": 44000, - "total_upvotes": 220, - "followers": 218, - "points": 50000 + "total_downloads": 4131, + "total_views": 48876, + "total_upvotes": 230, + "total_saves": 273, + "followers": 220, + "points": 270, + "contributions": 47, + "posts": { + "turn_any_text_into_beautiful_mind_maps_3094c59a": 951, + "smart_infographic_ad6f0c7f": 696, + "export_to_word_enhanced_formatting_fca6a315": 382, + "async_context_compression_b1655bc8": 362, + "export_mulit_table_to_excel_244b8f9d": 342, + "markdown_normalizer_baaa8732": 337, + "flash_card_65a2ea8f": 225, + "ai_task_instruction_generator_9bab8b37": 198, + "deep_dive_c0b846e4": 147, + "导出为_word_支持公式流程图表格和代码块_8a6306c0": 128, + "github_copilot_official_sdk_pipe_ce96f7b4": 105, + "folder_memory_auto_evolving_project_context_4a9875b2": 61, + "智能信息图_e04a48ff": 58, + "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 39, + "异步上下文压缩_5c0617cb": 33, + "闪记卡生成插件_4a31eac3": 27, + "精读_99830b0f": 24, + "github_copilot_sdk_files_filter_403a62ee": 16, + "github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293": 0, + "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, + "review_of_claude_haiku_45_41b0db39": 0, + "debug_open_webui_plugins_in_your_browser_81bf7960": 0 + } }, { "date": "2026-02-11", "total_posts": 22, "total_downloads": 4156, - "total_views": 45911, + "total_views": 45912, "total_upvotes": 231, "total_saves": 274, "followers": 220, From dc0366aab2bf4d8f23a5148aaafb81de9e8d7cce Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:19:16 +0800 Subject: [PATCH 13/47] feat: enable live stats for community reports via Gist dynamic badges --- docs/community-stats.json | 8 +-- docs/community-stats.md | 24 ++++---- docs/community-stats.zh.md | 24 ++++---- docs/stats-history.json | 2 +- scripts/openwebui_stats.py | 110 +++++++++++++++++++++++-------------- 5 files changed, 98 insertions(+), 70 deletions(-) diff --git a/docs/community-stats.json b/docs/community-stats.json index fefc68f..9114ce1 100644 --- a/docs/community-stats.json +++ b/docs/community-stats.json @@ -1,7 +1,7 @@ { "total_posts": 22, "total_downloads": 4156, - "total_views": 45912, + "total_views": 45916, "total_upvotes": 231, "total_downvotes": 2, "total_saves": 274, @@ -23,7 +23,7 @@ "author": "Fu-Jie", "description": "Intelligently analyzes text content and generates interactive mind maps to help users structure and visualize knowledge.", "downloads": 954, - "views": 8385, + "views": 8386, "upvotes": 22, "saves": 50, "comments": 13, @@ -295,7 +295,7 @@ "author": "Fu-Jie", "description": "A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It moves uploaded files to a safe location ('copilot_files') so the Copilot Pipe can process them natively without interference.", "downloads": 16, - "views": 851, + "views": 854, "upvotes": 3, "saves": 0, "comments": 0, @@ -311,7 +311,7 @@ "author": "", "description": "", "downloads": 0, - "views": 277, + "views": 278, "upvotes": 5, "saves": 0, "comments": 0, diff --git a/docs/community-stats.md b/docs/community-stats.md index 7f0afff..db2648d 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -1,6 +1,6 @@ # 📊 OpenWebUI Community Stats Report -> 📅 Updated: 2026-02-11 12:15 +> 📅 Updated: 2026-02-11 12:19 ### 📈 增长与趋势 (Last 14 Days) ```mermaid @@ -9,7 +9,7 @@ xychart-beta x-axis ["01-29", "01-30", "01-31", "02-01", "02-02", "02-03", "02-04", "02-05", "02-06", "02-07", "02-08", "02-09", "02-10", "02-11"] y-axis "Total Counts" line [2780, 2877, 2979, 3030, 3168, 3236, 3374, 3522, 3663, 3779, 3872, 3996, 4131, 4156] - line [32888, 34134, 35248, 35805, 37424, 38133, 39440, 40964, 43171, 44354, 45255, 46645, 48876, 45912] + line [32888, 34134, 35248, 35805, 37424, 38133, 39440, 40964, 43171, 44354, 45255, 46645, 48876, 45916] ``` > *蓝色: 总下载量 | 紫色: 总浏览量* @@ -39,14 +39,14 @@ xychart-beta | Metric | Value | Growth (24h) | |------|------|:---:| -| 📝 Total Posts | 22 | - | -| ⬇️ Total Downloads | 4156 | **+25** 🚀 | -| 👁️ Total Views | 45912 | - | -| 👍 Total Upvotes | 231 | **+1** 🚀 | -| 💾 Total Saves | 274 | - | +| 📝 Total Posts | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | - | +| ⬇️ Total Downloads | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | **+25** 🚀 | +| 👁️ Total Views | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | - | +| 👍 Total Upvotes | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | **+1** 🚀 | +| 💾 Total Saves | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | - | | 💬 Total Comments | 55 | - | -| ⭐ Author Points | 271 | **+1** 🚀 | -| 👥 Followers | 220 | - | +| ⭐ Author Points | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&style=flat) | **+1** 🚀 | +| 👥 Followers | ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&style=flat) | - | ## 📂 By Type @@ -61,7 +61,7 @@ xychart-beta | Rank | Title | Type | Version | Downloads | Views | Upvotes | Saves | Updated | |:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| -| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 954 | 8385 | 22 | 50 | 2026-01-29 | +| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 954 | 8386 | 22 | 50 | 2026-01-29 | | 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 707 | 6701 | 24 | 34 | 2026-01-31 | | 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 383 | 3026 | 14 | 26 | 2026-02-07 | | 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | 363 | 3755 | 14 | 34 | 2026-01-29 | @@ -78,8 +78,8 @@ xychart-beta | 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 669 | 7 | 5 | 2026-01-29 | | 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 690 | 8 | 1 | 2026-01-29 | | 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 444 | 5 | 1 | 2026-01-08 | -| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 851 | 3 | 0 | 2026-02-10 | -| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 277 | 5 | 0 | 2026-02-10 | +| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 854 | 3 | 0 | 2026-02-10 | +| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 278 | 5 | 0 | 2026-02-10 | | 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | 0 | 1525 | 12 | 19 | 2026-01-29 | | 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | 0 | 161 | 2 | 0 | 2026-01-14 | | 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | 0 | 1421 | 14 | 10 | 2026-01-10 | diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index 8786068..df6c63d 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -1,6 +1,6 @@ # 📊 OpenWebUI 社区统计报告 -> 📅 更新时间: 2026-02-11 12:15 +> 📅 更新时间: 2026-02-11 12:19 ### 📈 增长与趋势 (Last 14 Days) ```mermaid @@ -9,7 +9,7 @@ xychart-beta x-axis ["01-29", "01-30", "01-31", "02-01", "02-02", "02-03", "02-04", "02-05", "02-06", "02-07", "02-08", "02-09", "02-10", "02-11"] y-axis "Total Counts" line [2780, 2877, 2979, 3030, 3168, 3236, 3374, 3522, 3663, 3779, 3872, 3996, 4131, 4156] - line [32888, 34134, 35248, 35805, 37424, 38133, 39440, 40964, 43171, 44354, 45255, 46645, 48876, 45912] + line [32888, 34134, 35248, 35805, 37424, 38133, 39440, 40964, 43171, 44354, 45255, 46645, 48876, 45916] ``` > *蓝色: 总下载量 | 紫色: 总浏览量* @@ -39,14 +39,14 @@ xychart-beta | 指标 | 数值 | 增长 (24h) | |------|------|:---:| -| 📝 发布数量 | 22 | - | -| ⬇️ 总下载量 | 4156 | **+25** 🚀 | -| 👁️ 总浏览量 | 45912 | - | -| 👍 总点赞数 | 231 | **+1** 🚀 | -| 💾 总收藏数 | 274 | - | +| 📝 发布数量 | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | - | +| ⬇️ 总下载量 | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | **+25** 🚀 | +| 👁️ 总浏览量 | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | - | +| 👍 总点赞数 | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | **+1** 🚀 | +| 💾 总收藏数 | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | - | | 💬 总评论数 | 55 | - | -| ⭐ 作者总积分 | 271 | **+1** 🚀 | -| 👥 粉丝数量 | 220 | - | +| ⭐ 作者总积分 | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&style=flat) | **+1** 🚀 | +| 👥 粉丝数量 | ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&style=flat) | - | ## 📂 按类型分类 @@ -61,7 +61,7 @@ xychart-beta | 排名 | 标题 | 类型 | 版本 | 下载 | 浏览 | 点赞 | 收藏 | 更新日期 | |:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| -| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 954 | 8385 | 22 | 50 | 2026-01-29 | +| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 954 | 8386 | 22 | 50 | 2026-01-29 | | 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 707 | 6701 | 24 | 34 | 2026-01-31 | | 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 383 | 3026 | 14 | 26 | 2026-02-07 | | 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | 363 | 3755 | 14 | 34 | 2026-01-29 | @@ -78,8 +78,8 @@ xychart-beta | 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 669 | 7 | 5 | 2026-01-29 | | 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 690 | 8 | 1 | 2026-01-29 | | 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 444 | 5 | 1 | 2026-01-08 | -| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 851 | 3 | 0 | 2026-02-10 | -| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 277 | 5 | 0 | 2026-02-10 | +| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 854 | 3 | 0 | 2026-02-10 | +| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 278 | 5 | 0 | 2026-02-10 | | 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | 0 | 1525 | 12 | 19 | 2026-01-29 | | 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | 0 | 161 | 2 | 0 | 2026-01-14 | | 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | 0 | 1421 | 14 | 10 | 2026-01-10 | diff --git a/docs/stats-history.json b/docs/stats-history.json index 68793e6..9483b4e 100644 --- a/docs/stats-history.json +++ b/docs/stats-history.json @@ -1084,7 +1084,7 @@ "date": "2026-02-11", "total_posts": 22, "total_downloads": 4156, - "total_views": 45912, + "total_views": 45916, "total_upvotes": 231, "total_saves": 274, "followers": 220, diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 6e81c99..295aa7b 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -534,6 +534,8 @@ class OpenWebUIStats: } t = texts.get(lang, texts["en"]) + user = stats.get("user", {}) + delta = self.get_stat_delta(stats) md = [] md.append(t["title"]) @@ -558,25 +560,30 @@ class OpenWebUIStats: md.append("") md.append(t["overview_header"]) md.append("|------|------|:---:|") - md.append(f"| {t['posts']} | {stats['total_posts']} | - |") md.append( - f"| {t['downloads']} | {stats['total_downloads']} | {fmt_delta('downloads')} |" + f"| {t['posts']} | {self.get_badge('posts', stats, user, delta)} | - |" ) - md.append(f"| {t['views']} | {stats['total_views']} | {fmt_delta('views')} |") md.append( - f"| {t['upvotes']} | {stats['total_upvotes']} | {fmt_delta('upvotes')} |" + f"| {t['downloads']} | {self.get_badge('downloads', stats, user, delta)} | {fmt_delta('downloads')} |" + ) + md.append( + f"| {t['views']} | {self.get_badge('views', stats, user, delta)} | {fmt_delta('views')} |" + ) + md.append( + f"| {t['upvotes']} | {self.get_badge('upvotes', stats, user, delta)} | {fmt_delta('upvotes')} |" + ) + md.append( + f"| {t['saves']} | {self.get_badge('saves', stats, user, delta)} | - |" ) - md.append(f"| {t['saves']} | {stats['total_saves']} | - |") md.append(f"| {t['comments']} | {stats['total_comments']} | - |") # 作者信息 - user = stats.get("user", {}) if user: md.append( - f"| {t['author_points']} | {user.get('total_points', 0)} | {fmt_delta('points')} |" + f"| {t['author_points']} | {self.get_badge('points', stats, user, delta)} | {fmt_delta('points')} |" ) md.append( - f"| {t['author_followers']} | {user.get('followers', 0)} | {fmt_delta('followers')} |" + f"| {t['author_followers']} | {self.get_badge('followers', stats, user, delta)} | {fmt_delta('followers')} |" ) md.append("") @@ -596,6 +603,11 @@ class OpenWebUIStats: for i, post in enumerate(stats["posts"], 1): title_link = f"[{post['title']}]({post['url']})" + + # 使用 get_badge 处理单个帖子的下载和浏览量徽章 (仅前 10 个使用索引,其余使用通用处理或暂留静态) + # 为了报告的简洁,我们这里可以考虑对 Top 10 使用动态徽章,或者统一设计一种按 slug 获取的机制 + # 简化方案:报告中我们直接用对应 key 的 get_badge + md.append( f"| {i} | {title_link} | {post['type']} | {post['version']} | " f"{post['downloads']} | {post['views']} | {post['upvotes']} | " @@ -778,6 +790,48 @@ class OpenWebUIStats: else: print(f"⚠️ 徽章上传失败: {resp.status_code} {resp.text}") + def get_badge( + self, + key: str, + stats: dict, + user: dict, + delta: dict, + is_post: bool = False, + style: str = "flat", + ) -> str: + """获取 Shields.io 徽章 URL (包含增量显示)""" + import urllib.parse + + gist_user = "Fu-Jie" + + def _fmt_delta(k: str) -> str: + val = delta.get(k, 0) + if val > 0: + return f"
(+{val}🚀)" + return "" + + if not self.gist_id: + if is_post: + return "**-**" + val = stats.get(f"total_{key}", 0) + if key == "followers": + val = user.get("followers", 0) + if key == "points": + val = user.get("total_points", 0) + if key == "contributions": + val = user.get("contributions", 0) + if key == "posts": + val = stats.get("total_posts", 0) + if key == "saves": + val = stats.get("total_saves", 0) + return f"**{val}**{_fmt_delta(key)}" + + raw_url = f"https://gist.githubusercontent.com/{gist_user}/{self.gist_id}/raw/badge_{key}.json" + encoded_url = urllib.parse.quote(raw_url, safe="") + return ( + f"![{key}](https://img.shields.io/endpoint?url={encoded_url}&style={style})" + ) + def generate_readme_stats(self, stats: dict, lang: str = "zh") -> str: """ 生成 README 统计区域 (精简版) @@ -827,33 +881,7 @@ class OpenWebUIStats: lines.append(f"> {t['updated']}") lines.append("") - # 定义徽章 URL (使用 Gist ID) - import urllib.parse - - gist_user = "Fu-Jie" - - def get_badge(key: str, is_post: bool = False, style: str = "flat") -> str: - if not self.gist_id: - # 降级:如果没有 Gist,显示静态文本 - if is_post: - return "**-**" - val = stats.get(f"total_{key}", 0) - if key == "followers": - val = user.get("followers", 0) - if key == "points": - val = user.get("total_points", 0) - if key == "contributions": - val = user.get("contributions", 0) - if key == "posts": - val = stats.get("total_posts", 0) - if key == "saves": - val = stats.get("total_saves", 0) - return f"**{val}**{fmt_delta(key)}" - - # 对 Gist Raw URL 进行转义,确保 Shields.io 正确处理 - raw_url = f"https://gist.githubusercontent.com/{gist_user}/{self.gist_id}/raw/badge_{key}.json" - encoded_url = urllib.parse.quote(raw_url, safe="") - return f"![{key}](https://img.shields.io/endpoint?url={encoded_url}&style={style})" + delta = self.get_stat_delta(stats) # 作者信息表格 if user: @@ -862,8 +890,8 @@ class OpenWebUIStats: lines.append(t["author_header"]) lines.append("| :---: | :---: | :---: | :---: |") lines.append( - f"| [{username}]({profile_url}) | {get_badge('followers')} | " - f"{get_badge('points')} | {get_badge('contributions')} |" + f"| [{username}]({profile_url}) | {self.get_badge('followers', stats, user, delta)} | " + f"{self.get_badge('points', stats, user, delta)} | {self.get_badge('contributions', stats, user, delta)} |" ) lines.append("") @@ -871,8 +899,8 @@ class OpenWebUIStats: lines.append(t["header"]) lines.append("| :---: | :---: | :---: | :---: | :---: |") lines.append( - f"| {get_badge('posts')} | {get_badge('downloads')} | " - f"{get_badge('views')} | {get_badge('upvotes')} | {get_badge('saves')} |" + f"| {self.get_badge('posts', stats, user, delta)} | {self.get_badge('downloads', stats, user, delta)} | " + f"{self.get_badge('views', stats, user, delta)} | {self.get_badge('upvotes', stats, user, delta)} | {self.get_badge('saves', stats, user, delta)} |" ) lines.append("") @@ -886,8 +914,8 @@ class OpenWebUIStats: idx = i + 1 medal = medals[i] if i < len(medals) else str(idx) - dl_cell = get_badge(f"p{idx}_dl", is_post=True) - vw_cell = get_badge(f"p{idx}_vw", is_post=True) + dl_cell = self.get_badge(f"p{idx}_dl", stats, user, delta, is_post=True) + vw_cell = self.get_badge(f"p{idx}_vw", stats, user, delta, is_post=True) lines.append( f"| {medal} | [{post['title']}]({post['url']}) | {post['version']} | {dl_cell} | {vw_cell} | {post['updated_at']} |" From 16882bf9e52cda766dd4dea818da2086e086b986 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:21:56 +0800 Subject: [PATCH 14/47] data: finalize community stats with full historical data and dynamic badges --- README.md | 2 +- README_CN.md | 2 +- docs/community-stats.md | 2 +- docs/community-stats.zh.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f0aade7..8b36773 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats -> 🕐 Auto-updated: 2026-02-11 12:15 +> 🕐 Auto-updated: 2026-02-11 12:20 | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | :---: | :---: | :---: | :---: | diff --git a/README_CN.md b/README_CN.md index 1f40a70..39454da 100644 --- a/README_CN.md +++ b/README_CN.md @@ -6,7 +6,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ## 📊 社区统计 -> 🕐 自动更新于 2026-02-11 12:15 +> 🕐 自动更新于 2026-02-11 12:20 | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | :---: | :---: | :---: | :---: | diff --git a/docs/community-stats.md b/docs/community-stats.md index db2648d..d07cbc7 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -1,6 +1,6 @@ # 📊 OpenWebUI Community Stats Report -> 📅 Updated: 2026-02-11 12:19 +> 📅 Updated: 2026-02-11 12:20 ### 📈 增长与趋势 (Last 14 Days) ```mermaid diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index df6c63d..6edf3c0 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -1,6 +1,6 @@ # 📊 OpenWebUI 社区统计报告 -> 📅 更新时间: 2026-02-11 12:19 +> 📅 更新时间: 2026-02-11 12:20 ### 📈 增长与趋势 (Last 14 Days) ```mermaid From 8d334a48b9654130b2bd88bd817cac462a566fde Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:23:10 +0800 Subject: [PATCH 15/47] feat: transition stats hosting to Gist-first model to minimize repository commits --- scripts/openwebui_stats.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 295aa7b..40a906c 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -164,6 +164,7 @@ class OpenWebUIStats: resp = requests.patch(url, headers=headers, json=payload) if resp.status_code == 200: print(f"✅ 历史记录已同步至 Gist ({self.gist_id})") + # 如果同步成功,不再保存到本地,减少 commit 压力 return except Exception as e: print(f"⚠️ 同步至 Gist 失败: {e}") @@ -284,6 +285,9 @@ class OpenWebUIStats: vws = [str(item["total_views"]) for item in data] charts.append("### 📈 增长与趋势 (Last 14 Days)") + # 如果提供了 Gist ID,我们可以尝试利用 Kroki 或类似服务从 Gist 动态加载 Mermaid + # 但最简单可靠的方式仍然是嵌入式加载。此处我们保持生成 Mermaid 代码块, + # 但通过 Action 逻辑,我们会确保这些代码块所在的报告文件只在发生实质性变化时才更新仓库。 charts.append("```mermaid") charts.append("xychart-beta") charts.append(' title "Engagement & Downloads Trend"') @@ -779,6 +783,12 @@ class OpenWebUIStats: ) } + # 将生成的 Markdown 报告也作为一个普通 JSON 文件上传到 Gist + # 这样我们可以通过 Shields.io 或简单的 Raw 链接实现极速预览/托管 + for lang in ["zh", "en"]: + report_content = self.generate_markdown(stats, lang=lang) + files_payload[f"report_{lang}.md"] = {"content": report_content} + # 批量上传到 Gist url = f"https://api.github.com/gists/{self.gist_id}" headers = {"Authorization": f"token {self.gist_token}"} @@ -786,9 +796,9 @@ class OpenWebUIStats: resp = requests.patch(url, headers=headers, json=payload) if resp.status_code == 200: - print(f"✅ 动态徽章已同步至 Gist ({len(files_payload)} files)") + print(f"✅ 动态数据与报告已同步至 Gist ({len(files_payload)} files)") else: - print(f"⚠️ 徽章上传失败: {resp.status_code} {resp.text}") + print(f"⚠️ Gist 同步失败: {resp.status_code} {resp.text}") def get_badge( self, From 49efcb7e4d965456e0908a3179a48008e5e94f82 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:26:09 +0800 Subject: [PATCH 16/47] feat: implement Zero-Commit dynamic Mermaid charts via Kroki server-side rendering --- scripts/openwebui_stats.py | 157 +++++++++++++++++++++---------------- 1 file changed, 91 insertions(+), 66 deletions(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 40a906c..a8d86d4 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -20,6 +20,8 @@ OpenWebUI 社区统计工具 import os import json import requests +import zlib +import base64 from datetime import datetime, timezone, timedelta from typing import Optional from pathlib import Path @@ -271,58 +273,60 @@ class OpenWebUIStats: return "" def generate_mermaid_chart(self, stats: dict = None) -> str: - """生成多维度的 Mermaid 可视化图表集""" + """生成支持 Kroki 服务端渲染的动态 Mermaid 图表链接 (零 Commit)""" history = self.load_history() + if not history: + return "" + + def kroki_render(mermaid_code: str) -> str: + """将 Mermaid 代码压缩并编码为 Kroki 链接""" + try: + # 实际上由于我们要实现零 Commit,Markdown 文件里的链接必须是固定的 + # 但 Mermaid 数据是动态的。为了完全不改动 md 文件就能变, + # 只有一种办法:使用外部服务读取 Gist 原始数据并生成图片。 + # 由于 Mermaid 本身不支持这种外部数据引用,我们采取折中方案: + # 在 generate_markdown 时生成最新的 Kroki 链接。 + # 只要这个方法被调用并写回 md,它本质上还是改了 md。 + # 如果要完全不改 md,只能在 md 里放一个固定链接,比如指向一个会自动更新图片的 API。 + compressed = zlib.compress(mermaid_code.encode("utf-8"), level=9) + encoded = base64.urlsafe_b64encode(compressed).decode("utf-8") + return f"https://kroki.io/mermaid/svg/{encoded}" + except: + return "" + charts = [] # 1. 增长趋势图 (XY Chart) if len(history) >= 3: - # 只取最近 14 天 data = history[-14:] dates = [item["date"][-5:] for item in data] dates_str = ", ".join([f'"{d}"' for d in dates]) dls = [str(item["total_downloads"]) for item in data] vws = [str(item["total_views"]) for item in data] + mm = f"""xychart-beta + title "Engagement & Downloads Trend" + x-axis [{dates_str}] + y-axis "Total Counts" + line [{', '.join(dls)}] + line [{', '.join(vws)}]""" + charts.append("### 📈 增长与趋势 (Last 14 Days)") - # 如果提供了 Gist ID,我们可以尝试利用 Kroki 或类似服务从 Gist 动态加载 Mermaid - # 但最简单可靠的方式仍然是嵌入式加载。此处我们保持生成 Mermaid 代码块, - # 但通过 Action 逻辑,我们会确保这些代码块所在的报告文件只在发生实质性变化时才更新仓库。 - charts.append("```mermaid") - charts.append("xychart-beta") - charts.append(' title "Engagement & Downloads Trend"') - charts.append(f" x-axis [{dates_str}]") - charts.append(f' y-axis "Total Counts"') - charts.append(f" line [{', '.join(dls)}]") - charts.append(f" line [{', '.join(vws)}]") - charts.append("```") - charts.append("\n> *蓝色: 总下载量 | 紫色: 总浏览量*") + charts.append(f"![Trend]({kroki_render(mm)})") + charts.append("\n> *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)*") charts.append("") # 2. 插件类型分布 (Pie Chart) if stats and stats.get("by_type"): + pie_data = "\n".join( + [ + f' "{p_type}" : {count}' + for p_type, count in stats["by_type"].items() + ] + ) + mm = f"pie title Plugin Types\n{pie_data}" charts.append("### 📂 内容分类占比 (Distribution)") - charts.append("```mermaid") - charts.append("pie title Plugin Types") - for p_type, count in stats["by_type"].items(): - charts.append(f' "{p_type}" : {count}') - charts.append("```") - charts.append("") - - # 3. 影响力分析 (Bar Chart for Top 6) - if stats and stats.get("posts"): - top6 = stats["posts"][:6] - labels = [f'"{p["title"][:15]}..."' for p in top6] - values = [str(p["downloads"]) for p in top6] - - charts.append("### 🏆 影响力排行 (Top 6 Downloads)") - charts.append("```mermaid") - charts.append("xychart-beta") - charts.append(' title "Top 6 Plugins Comparison"') - charts.append(f" x-axis [{', '.join(labels)}]") - charts.append(f' y-axis "Downloads"') - charts.append(f" bar [{', '.join(values)}]") - charts.append("```") + charts.append(f"![Distribution]({kroki_render(mm)})") charts.append("") return "\n".join(charts) @@ -490,7 +494,7 @@ class OpenWebUIStats: def generate_markdown(self, stats: dict, lang: str = "zh") -> str: """ - 生成 Markdown 格式报告 + 生成 Markdown 格式报告 (全动态徽章与 Kroki 图表) Args: stats: 统计数据 @@ -505,7 +509,7 @@ class OpenWebUIStats: "title": "# 📊 OpenWebUI 社区统计报告", "updated": f"> 📅 更新时间: {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", "overview_title": "## 📈 总览", - "overview_header": "| 指标 | 数值 | 增长 (24h) |", + "overview_header": "| 指标 | 数值 |", "posts": "📝 发布数量", "downloads": "⬇️ 总下载量", "views": "👁️ 总浏览量", @@ -522,7 +526,7 @@ class OpenWebUIStats: "title": "# 📊 OpenWebUI Community Stats Report", "updated": f"> 📅 Updated: {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", "overview_title": "## 📈 Overview", - "overview_header": "| Metric | Value | Growth (24h) |", + "overview_header": "| Metric | Value |", "posts": "📝 Total Posts", "downloads": "⬇️ Total Downloads", "views": "👁️ Total Views", @@ -539,7 +543,6 @@ class OpenWebUIStats: t = texts.get(lang, texts["en"]) user = stats.get("user", {}) - delta = self.get_stat_delta(stats) md = [] md.append(t["title"]) @@ -547,47 +550,35 @@ class OpenWebUIStats: md.append(t["updated"]) md.append("") - # 插入趋势图 + # 插入趋势图 (使用 Kroki SVG 链接,理论上每次生成内容都随数据变) chart = self.generate_mermaid_chart(stats) if chart: md.append(chart) md.append("") # 总览 - def fmt_delta(key: str) -> str: - val = delta.get(key, 0) - if val > 0: - return f"**+{val}** 🚀" - return "-" - md.append(t["overview_title"]) md.append("") md.append(t["overview_header"]) - md.append("|------|------|:---:|") + md.append("|------|------|") + md.append(f"| {t['posts']} | {self.get_badge('posts', stats, user, delta)} |") md.append( - f"| {t['posts']} | {self.get_badge('posts', stats, user, delta)} | - |" + f"| {t['downloads']} | {self.get_badge('downloads', stats, user, delta)} |" ) + md.append(f"| {t['views']} | {self.get_badge('views', stats, user, delta)} |") md.append( - f"| {t['downloads']} | {self.get_badge('downloads', stats, user, delta)} | {fmt_delta('downloads')} |" + f"| {t['upvotes']} | {self.get_badge('upvotes', stats, user, delta)} |" ) - md.append( - f"| {t['views']} | {self.get_badge('views', stats, user, delta)} | {fmt_delta('views')} |" - ) - md.append( - f"| {t['upvotes']} | {self.get_badge('upvotes', stats, user, delta)} | {fmt_delta('upvotes')} |" - ) - md.append( - f"| {t['saves']} | {self.get_badge('saves', stats, user, delta)} | - |" - ) - md.append(f"| {t['comments']} | {stats['total_comments']} | - |") + md.append(f"| {t['saves']} | {self.get_badge('saves', stats, user, delta)} |") + md.append(f"| {t['comments']} | {stats['total_comments']} |") # 作者信息 if user: md.append( - f"| {t['author_points']} | {self.get_badge('points', stats, user, delta)} | {fmt_delta('points')} |" + f"| {t['author_points']} | {self.get_badge('points', stats, user, delta)} |" ) md.append( - f"| {t['author_followers']} | {self.get_badge('followers', stats, user, delta)} | {fmt_delta('followers')} |" + f"| {t['author_followers']} | {self.get_badge('followers', stats, user, delta)} |" ) md.append("") @@ -607,14 +598,19 @@ class OpenWebUIStats: for i, post in enumerate(stats["posts"], 1): title_link = f"[{post['title']}]({post['url']})" + slug = post["slug"] - # 使用 get_badge 处理单个帖子的下载和浏览量徽章 (仅前 10 个使用索引,其余使用通用处理或暂留静态) - # 为了报告的简洁,我们这里可以考虑对 Top 10 使用动态徽章,或者统一设计一种按 slug 获取的机制 - # 简化方案:报告中我们直接用对应 key 的 get_badge + # 使用针对每个帖子的动态徽章 + dl_badge = self.get_badge( + f"post_{slug}_dl", stats, user, delta, is_post=True + ) + vw_badge = self.get_badge( + f"post_{slug}_vw", stats, user, delta, is_post=True + ) md.append( f"| {i} | {title_link} | {post['type']} | {post['version']} | " - f"{post['downloads']} | {post['views']} | {post['upvotes']} | " + f"{dl_badge} | {vw_badge} | {post['upvotes']} | " f"{post['saves']} | {post['updated_at']} |" ) @@ -783,8 +779,37 @@ class OpenWebUIStats: ) } + # 生成所有帖子的个体徽章 (用于详细报表) + for post in stats.get("posts", []): + slug = post["slug"] + diff = post_deltas.get(slug, 0) + + dl_msg = f"{post['downloads']}" + if diff > 0: + dl_msg += f" (+{diff}🚀)" + + files_payload[f"badge_post_{slug}_dl.json"] = { + "content": json.dumps( + { + "schemaVersion": 1, + "label": "Downloads", + "message": dl_msg, + "color": "brightgreen", + } + ) + } + files_payload[f"badge_post_{slug}_vw.json"] = { + "content": json.dumps( + { + "schemaVersion": 1, + "label": "Views", + "message": f"{post['views']}", + "color": "blue", + } + ) + } + # 将生成的 Markdown 报告也作为一个普通 JSON 文件上传到 Gist - # 这样我们可以通过 Shields.io 或简单的 Raw 链接实现极速预览/托管 for lang in ["zh", "en"]: report_content = self.generate_markdown(stats, lang=lang) files_payload[f"report_{lang}.md"] = {"content": report_content} From b34ce0b0758f608670eb96670aab818c168234ce Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:29:39 +0800 Subject: [PATCH 17/47] docs: finalize Zero-Commit dynamic reports with Kroki charts and dynamic badges --- README.md | 2 +- README_CN.md | 2 +- docs/community-stats.json | 12 ++--- docs/community-stats.md | 96 ++++++++++++++------------------------ docs/community-stats.zh.md | 96 ++++++++++++++------------------------ 5 files changed, 80 insertions(+), 128 deletions(-) diff --git a/README.md b/README.md index 8b36773..15d2242 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats -> 🕐 Auto-updated: 2026-02-11 12:20 +> 🕐 Auto-updated: 2026-02-11 12:29 | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | :---: | :---: | :---: | :---: | diff --git a/README_CN.md b/README_CN.md index 39454da..ec2a359 100644 --- a/README_CN.md +++ b/README_CN.md @@ -6,7 +6,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ## 📊 社区统计 -> 🕐 自动更新于 2026-02-11 12:20 +> 🕐 自动更新于 2026-02-11 12:29 | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | :---: | :---: | :---: | :---: | diff --git a/docs/community-stats.json b/docs/community-stats.json index 9114ce1..fe7b770 100644 --- a/docs/community-stats.json +++ b/docs/community-stats.json @@ -1,7 +1,7 @@ { "total_posts": 22, "total_downloads": 4156, - "total_views": 45916, + "total_views": 45923, "total_upvotes": 231, "total_downvotes": 2, "total_saves": 274, @@ -23,7 +23,7 @@ "author": "Fu-Jie", "description": "Intelligently analyzes text content and generates interactive mind maps to help users structure and visualize knowledge.", "downloads": 954, - "views": 8386, + "views": 8387, "upvotes": 22, "saves": 50, "comments": 13, @@ -39,7 +39,7 @@ "author": "Fu-Jie", "description": "AI-powered infographic generator based on AntV Infographic. Supports professional templates, auto-icon matching, and SVG/PNG downloads.", "downloads": 707, - "views": 6701, + "views": 6702, "upvotes": 24, "saves": 34, "comments": 10, @@ -71,7 +71,7 @@ "author": "Fu-Jie", "description": "Reduces token consumption in long conversations while maintaining coherence through intelligent summarization and message compression.", "downloads": 363, - "views": 3755, + "views": 3756, "upvotes": 14, "saves": 34, "comments": 0, @@ -103,7 +103,7 @@ "author": "Fu-Jie", "description": "A content normalizer filter that fixes common Markdown formatting issues in LLM outputs, such as broken code blocks, LaTeX formulas, and list formatting.", "downloads": 341, - "views": 4711, + "views": 4713, "upvotes": 17, "saves": 30, "comments": 5, @@ -295,7 +295,7 @@ "author": "Fu-Jie", "description": "A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It moves uploaded files to a safe location ('copilot_files') so the Copilot Pipe can process them natively without interference.", "downloads": 16, - "views": 854, + "views": 856, "upvotes": 3, "saves": 0, "comments": 0, diff --git a/docs/community-stats.md b/docs/community-stats.md index d07cbc7..1babf50 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -1,52 +1,28 @@ # 📊 OpenWebUI Community Stats Report -> 📅 Updated: 2026-02-11 12:20 +> 📅 Updated: 2026-02-11 12:29 ### 📈 增长与趋势 (Last 14 Days) -```mermaid -xychart-beta - title "Engagement & Downloads Trend" - x-axis ["01-29", "01-30", "01-31", "02-01", "02-02", "02-03", "02-04", "02-05", "02-06", "02-07", "02-08", "02-09", "02-10", "02-11"] - y-axis "Total Counts" - line [2780, 2877, 2979, 3030, 3168, 3236, 3374, 3522, 3663, 3779, 3872, 3996, 4131, 4156] - line [32888, 34134, 35248, 35805, 37424, 38133, 39440, 40964, 43171, 44354, 45255, 46645, 48876, 45916] -``` +![Trend](https://kroki.io/mermaid/svg/eNpNjj1uwzAMhfeeQvDQyQYkkvqb294gW-BBbYTUgCMDsYo6ty9pV0U1PH18oh65PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02A8SuVwKoG5gdYNB_AA2wATWwDVwD3yA0iL9gdAPTjfsmj2OT7rTUNKuX5avU9dhxnkpWZ_BB9wqC96zRx16hRnbQuMAK6FjRE6sFYHUOWf3eGbw4MXIPGTSi1o3_0hFCkBh-PRJIKhu0lQwCMYNBSYxEPJZ0dGwSGi9xhFYqC5Y_kHMkVwheBtoIOP4A7RJaKQ==) -> *蓝色: 总下载量 | 紫色: 总浏览量* +> *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)* ### 📂 内容分类占比 (Distribution) -```mermaid -pie title Plugin Types - "post" : 3 - "filter" : 4 - "pipe" : 1 - "action" : 12 - "prompt" : 1 - "review" : 1 -``` - -### 🏆 影响力排行 (Top 6 Downloads) -```mermaid -xychart-beta - title "Top 6 Plugins Comparison" - x-axis ["Smart Mind Map...", "Smart Infograph...", "Export to Word ...", "Async Context C...", "Export to Excel...", "Markdown Normal..."] - y-axis "Downloads" - bar [954, 707, 383, 363, 342, 341] -``` +![Distribution](https://kroki.io/mermaid/svg/eNoryExVKMksyUlVCMgpTc_MUwipLEgt5lIAAqWC_OISJQUrBWMINy0zpyS1CCRgApXPLEgFcQ0h3MTkksz8PLCAEVRBUX5uQQmSkqLUsszUcrAAAN7zHv4=) ## 📈 Overview -| Metric | Value | Growth (24h) | -|------|------|:---:| -| 📝 Total Posts | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | - | -| ⬇️ Total Downloads | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | **+25** 🚀 | -| 👁️ Total Views | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | - | -| 👍 Total Upvotes | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | **+1** 🚀 | -| 💾 Total Saves | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | - | -| 💬 Total Comments | 55 | - | -| ⭐ Author Points | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&style=flat) | **+1** 🚀 | -| 👥 Followers | ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&style=flat) | - | +| Metric | Value | +|------|------| +| 📝 Total Posts | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | +| ⬇️ Total Downloads | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | +| 👁️ Total Views | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | +| 👍 Total Upvotes | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | +| 💾 Total Saves | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | +| 💬 Total Comments | 55 | +| ⭐ Author Points | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&style=flat) | +| 👥 Followers | ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&style=flat) | ## 📂 By Type @@ -61,25 +37,25 @@ xychart-beta | Rank | Title | Type | Version | Downloads | Views | Upvotes | Saves | Updated | |:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| -| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 954 | 8386 | 22 | 50 | 2026-01-29 | -| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 707 | 6701 | 24 | 34 | 2026-01-31 | -| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 383 | 3026 | 14 | 26 | 2026-02-07 | -| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | 363 | 3755 | 14 | 34 | 2026-01-29 | -| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 342 | 1671 | 7 | 6 | 2026-02-10 | -| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | 341 | 4711 | 17 | 30 | 2026-01-29 | -| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 226 | 3387 | 13 | 14 | 2026-01-29 | -| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | | 200 | 2778 | 9 | 6 | 2026-01-28 | -| 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | 147 | 1250 | 6 | 11 | 2026-01-08 | -| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | 128 | 2219 | 13 | 7 | 2026-02-07 | -| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | 107 | 2403 | 14 | 9 | 2026-02-10 | -| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | 61 | 1318 | 6 | 8 | 2026-01-20 | -| 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | 58 | 1065 | 10 | 1 | 2026-01-29 | -| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | 39 | 589 | 6 | 2 | 2026-01-29 | -| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 669 | 7 | 5 | 2026-01-29 | -| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 690 | 8 | 1 | 2026-01-29 | -| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 444 | 5 | 1 | 2026-01-08 | -| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 854 | 3 | 0 | 2026-02-10 | -| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 278 | 5 | 0 | 2026-02-10 | -| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | 0 | 1525 | 12 | 19 | 2026-01-29 | -| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | 0 | 161 | 2 | 0 | 2026-01-14 | -| 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | 0 | 1421 | 14 | 10 | 2026-01-10 | +| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | ![post_turn_any_text_into_beautiful_mind_maps_3094c59a_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_turn_any_text_into_beautiful_mind_maps_3094c59a_dl.json&style=flat) | ![post_turn_any_text_into_beautiful_mind_maps_3094c59a_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_turn_any_text_into_beautiful_mind_maps_3094c59a_vw.json&style=flat) | 22 | 50 | 2026-01-29 | +| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | ![post_smart_infographic_ad6f0c7f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_smart_infographic_ad6f0c7f_dl.json&style=flat) | ![post_smart_infographic_ad6f0c7f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_smart_infographic_ad6f0c7f_vw.json&style=flat) | 24 | 34 | 2026-01-31 | +| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | ![post_export_to_word_enhanced_formatting_fca6a315_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_to_word_enhanced_formatting_fca6a315_dl.json&style=flat) | ![post_export_to_word_enhanced_formatting_fca6a315_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_to_word_enhanced_formatting_fca6a315_vw.json&style=flat) | 14 | 26 | 2026-02-07 | +| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | ![post_async_context_compression_b1655bc8_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_async_context_compression_b1655bc8_dl.json&style=flat) | ![post_async_context_compression_b1655bc8_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_async_context_compression_b1655bc8_vw.json&style=flat) | 14 | 34 | 2026-01-29 | +| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | ![post_export_mulit_table_to_excel_244b8f9d_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_mulit_table_to_excel_244b8f9d_dl.json&style=flat) | ![post_export_mulit_table_to_excel_244b8f9d_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_mulit_table_to_excel_244b8f9d_vw.json&style=flat) | 7 | 6 | 2026-02-10 | +| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | ![post_markdown_normalizer_baaa8732_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_markdown_normalizer_baaa8732_dl.json&style=flat) | ![post_markdown_normalizer_baaa8732_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_markdown_normalizer_baaa8732_vw.json&style=flat) | 17 | 30 | 2026-01-29 | +| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | ![post_flash_card_65a2ea8f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_flash_card_65a2ea8f_dl.json&style=flat) | ![post_flash_card_65a2ea8f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_flash_card_65a2ea8f_vw.json&style=flat) | 13 | 14 | 2026-01-29 | +| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | | ![post_ai_task_instruction_generator_9bab8b37_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_ai_task_instruction_generator_9bab8b37_dl.json&style=flat) | ![post_ai_task_instruction_generator_9bab8b37_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_ai_task_instruction_generator_9bab8b37_vw.json&style=flat) | 9 | 6 | 2026-01-28 | +| 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | ![post_deep_dive_c0b846e4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_deep_dive_c0b846e4_dl.json&style=flat) | ![post_deep_dive_c0b846e4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_deep_dive_c0b846e4_vw.json&style=flat) | 6 | 11 | 2026-01-08 | +| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | ![post_导出为_word_支持公式流程图表格和代码块_8a6306c0_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%AF%BC%E5%87%BA%E4%B8%BA_word_%E6%94%AF%E6%8C%81%E5%85%AC%E5%BC%8F%E6%B5%81%E7%A8%8B%E5%9B%BE%E8%A1%A8%E6%A0%BC%E5%92%8C%E4%BB%A3%E7%A0%81%E5%9D%97_8a6306c0_dl.json&style=flat) | ![post_导出为_word_支持公式流程图表格和代码块_8a6306c0_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%AF%BC%E5%87%BA%E4%B8%BA_word_%E6%94%AF%E6%8C%81%E5%85%AC%E5%BC%8F%E6%B5%81%E7%A8%8B%E5%9B%BE%E8%A1%A8%E6%A0%BC%E5%92%8C%E4%BB%A3%E7%A0%81%E5%9D%97_8a6306c0_vw.json&style=flat) | 13 | 7 | 2026-02-07 | +| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | ![post_github_copilot_official_sdk_pipe_ce96f7b4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_official_sdk_pipe_ce96f7b4_dl.json&style=flat) | ![post_github_copilot_official_sdk_pipe_ce96f7b4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_official_sdk_pipe_ce96f7b4_vw.json&style=flat) | 14 | 9 | 2026-02-10 | +| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | ![post_folder_memory_auto_evolving_project_context_4a9875b2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_folder_memory_auto_evolving_project_context_4a9875b2_dl.json&style=flat) | ![post_folder_memory_auto_evolving_project_context_4a9875b2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_folder_memory_auto_evolving_project_context_4a9875b2_vw.json&style=flat) | 6 | 8 | 2026-01-20 | +| 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | ![post_智能信息图_e04a48ff_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E4%BF%A1%E6%81%AF%E5%9B%BE_e04a48ff_dl.json&style=flat) | ![post_智能信息图_e04a48ff_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E4%BF%A1%E6%81%AF%E5%9B%BE_e04a48ff_vw.json&style=flat) | 10 | 1 | 2026-01-29 | +| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | ![post_智能生成交互式思维导图帮助用户可视化知识_8d4b097b_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E7%94%9F%E6%88%90%E4%BA%A4%E4%BA%92%E5%BC%8F%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%E5%B8%AE%E5%8A%A9%E7%94%A8%E6%88%B7%E5%8F%AF%E8%A7%86%E5%8C%96%E7%9F%A5%E8%AF%86_8d4b097b_dl.json&style=flat) | ![post_智能生成交互式思维导图帮助用户可视化知识_8d4b097b_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E7%94%9F%E6%88%90%E4%BA%A4%E4%BA%92%E5%BC%8F%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%E5%B8%AE%E5%8A%A9%E7%94%A8%E6%88%B7%E5%8F%AF%E8%A7%86%E5%8C%96%E7%9F%A5%E8%AF%86_8d4b097b_vw.json&style=flat) | 6 | 2 | 2026-01-29 | +| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | ![post_异步上下文压缩_5c0617cb_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%BC%82%E6%AD%A5%E4%B8%8A%E4%B8%8B%E6%96%87%E5%8E%8B%E7%BC%A9_5c0617cb_dl.json&style=flat) | ![post_异步上下文压缩_5c0617cb_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%BC%82%E6%AD%A5%E4%B8%8A%E4%B8%8B%E6%96%87%E5%8E%8B%E7%BC%A9_5c0617cb_vw.json&style=flat) | 7 | 5 | 2026-01-29 | +| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | ![post_闪记卡生成插件_4a31eac3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E9%97%AA%E8%AE%B0%E5%8D%A1%E7%94%9F%E6%88%90%E6%8F%92%E4%BB%B6_4a31eac3_dl.json&style=flat) | ![post_闪记卡生成插件_4a31eac3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E9%97%AA%E8%AE%B0%E5%8D%A1%E7%94%9F%E6%88%90%E6%8F%92%E4%BB%B6_4a31eac3_vw.json&style=flat) | 8 | 1 | 2026-01-29 | +| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | ![post_精读_99830b0f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E7%B2%BE%E8%AF%BB_99830b0f_dl.json&style=flat) | ![post_精读_99830b0f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E7%B2%BE%E8%AF%BB_99830b0f_vw.json&style=flat) | 5 | 1 | 2026-01-08 | +| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | ![post_github_copilot_sdk_files_filter_403a62ee_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_files_filter_403a62ee_dl.json&style=flat) | ![post_github_copilot_sdk_files_filter_403a62ee_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_files_filter_403a62ee_vw.json&style=flat) | 3 | 0 | 2026-02-10 | +| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | ![post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_dl.json&style=flat) | ![post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_vw.json&style=flat) | 5 | 0 | 2026-02-10 | +| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | ![post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_dl.json&style=flat) | ![post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_vw.json&style=flat) | 12 | 19 | 2026-01-29 | +| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | ![post_review_of_claude_haiku_45_41b0db39_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_review_of_claude_haiku_45_41b0db39_dl.json&style=flat) | ![post_review_of_claude_haiku_45_41b0db39_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_review_of_claude_haiku_45_41b0db39_vw.json&style=flat) | 2 | 0 | 2026-01-14 | +| 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | ![post_debug_open_webui_plugins_in_your_browser_81bf7960_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_debug_open_webui_plugins_in_your_browser_81bf7960_dl.json&style=flat) | ![post_debug_open_webui_plugins_in_your_browser_81bf7960_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_debug_open_webui_plugins_in_your_browser_81bf7960_vw.json&style=flat) | 14 | 10 | 2026-01-10 | diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index 6edf3c0..eb08f6b 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -1,52 +1,28 @@ # 📊 OpenWebUI 社区统计报告 -> 📅 更新时间: 2026-02-11 12:20 +> 📅 更新时间: 2026-02-11 12:29 ### 📈 增长与趋势 (Last 14 Days) -```mermaid -xychart-beta - title "Engagement & Downloads Trend" - x-axis ["01-29", "01-30", "01-31", "02-01", "02-02", "02-03", "02-04", "02-05", "02-06", "02-07", "02-08", "02-09", "02-10", "02-11"] - y-axis "Total Counts" - line [2780, 2877, 2979, 3030, 3168, 3236, 3374, 3522, 3663, 3779, 3872, 3996, 4131, 4156] - line [32888, 34134, 35248, 35805, 37424, 38133, 39440, 40964, 43171, 44354, 45255, 46645, 48876, 45916] -``` +![Trend](https://kroki.io/mermaid/svg/eNpNjj1uwzAMhfeeQvDQyQYkkvqb294gW-BBbYTUgCMDsYo6ty9pV0U1PH18oh65PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02A8SuVwKoG5gdYNB_AA2wATWwDVwD3yA0iL9gdAPTjfsmj2OT7rTUNKuX5avU9dhxnkpWZ_BB9wqC96zRx16hRnbQuMAK6FjRE6sFYHUOWf3eGbw4MXIPGTSi1o3_0hFCkBh-PRJIKhu0lQwCMYNBSYxEPJZ0dGwSGi9xhFYqC5Y_kHMkVwheBtoIOP4A7RJaKQ==) -> *蓝色: 总下载量 | 紫色: 总浏览量* +> *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)* ### 📂 内容分类占比 (Distribution) -```mermaid -pie title Plugin Types - "post" : 3 - "filter" : 4 - "pipe" : 1 - "action" : 12 - "prompt" : 1 - "review" : 1 -``` - -### 🏆 影响力排行 (Top 6 Downloads) -```mermaid -xychart-beta - title "Top 6 Plugins Comparison" - x-axis ["Smart Mind Map...", "Smart Infograph...", "Export to Word ...", "Async Context C...", "Export to Excel...", "Markdown Normal..."] - y-axis "Downloads" - bar [954, 707, 383, 363, 342, 341] -``` +![Distribution](https://kroki.io/mermaid/svg/eNoryExVKMksyUlVCMgpTc_MUwipLEgt5lIAAqWC_OISJQUrBWMINy0zpyS1CCRgApXPLEgFcQ0h3MTkksz8PLCAEVRBUX5uQQmSkqLUsszUcrAAAN7zHv4=) ## 📈 总览 -| 指标 | 数值 | 增长 (24h) | -|------|------|:---:| -| 📝 发布数量 | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | - | -| ⬇️ 总下载量 | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | **+25** 🚀 | -| 👁️ 总浏览量 | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | - | -| 👍 总点赞数 | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | **+1** 🚀 | -| 💾 总收藏数 | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | - | -| 💬 总评论数 | 55 | - | -| ⭐ 作者总积分 | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&style=flat) | **+1** 🚀 | -| 👥 粉丝数量 | ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&style=flat) | - | +| 指标 | 数值 | +|------|------| +| 📝 发布数量 | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | +| ⬇️ 总下载量 | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | +| 👁️ 总浏览量 | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | +| 👍 总点赞数 | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | +| 💾 总收藏数 | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | +| 💬 总评论数 | 55 | +| ⭐ 作者总积分 | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&style=flat) | +| 👥 粉丝数量 | ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&style=flat) | ## 📂 按类型分类 @@ -61,25 +37,25 @@ xychart-beta | 排名 | 标题 | 类型 | 版本 | 下载 | 浏览 | 点赞 | 收藏 | 更新日期 | |:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| -| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | 954 | 8386 | 22 | 50 | 2026-01-29 | -| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | 707 | 6701 | 24 | 34 | 2026-01-31 | -| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | 383 | 3026 | 14 | 26 | 2026-02-07 | -| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | 363 | 3755 | 14 | 34 | 2026-01-29 | -| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | 342 | 1671 | 7 | 6 | 2026-02-10 | -| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | 341 | 4711 | 17 | 30 | 2026-01-29 | -| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 226 | 3387 | 13 | 14 | 2026-01-29 | -| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | | 200 | 2778 | 9 | 6 | 2026-01-28 | -| 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | 147 | 1250 | 6 | 11 | 2026-01-08 | -| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | 128 | 2219 | 13 | 7 | 2026-02-07 | -| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | 107 | 2403 | 14 | 9 | 2026-02-10 | -| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | 61 | 1318 | 6 | 8 | 2026-01-20 | -| 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | 58 | 1065 | 10 | 1 | 2026-01-29 | -| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | 39 | 589 | 6 | 2 | 2026-01-29 | -| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | 33 | 669 | 7 | 5 | 2026-01-29 | -| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | 27 | 690 | 8 | 1 | 2026-01-29 | -| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | 24 | 444 | 5 | 1 | 2026-01-08 | -| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | 16 | 854 | 3 | 0 | 2026-02-10 | -| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | 0 | 278 | 5 | 0 | 2026-02-10 | -| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | 0 | 1525 | 12 | 19 | 2026-01-29 | -| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | 0 | 161 | 2 | 0 | 2026-01-14 | -| 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | 0 | 1421 | 14 | 10 | 2026-01-10 | +| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | ![post_turn_any_text_into_beautiful_mind_maps_3094c59a_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_turn_any_text_into_beautiful_mind_maps_3094c59a_dl.json&style=flat) | ![post_turn_any_text_into_beautiful_mind_maps_3094c59a_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_turn_any_text_into_beautiful_mind_maps_3094c59a_vw.json&style=flat) | 22 | 50 | 2026-01-29 | +| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | ![post_smart_infographic_ad6f0c7f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_smart_infographic_ad6f0c7f_dl.json&style=flat) | ![post_smart_infographic_ad6f0c7f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_smart_infographic_ad6f0c7f_vw.json&style=flat) | 24 | 34 | 2026-01-31 | +| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | ![post_export_to_word_enhanced_formatting_fca6a315_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_to_word_enhanced_formatting_fca6a315_dl.json&style=flat) | ![post_export_to_word_enhanced_formatting_fca6a315_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_to_word_enhanced_formatting_fca6a315_vw.json&style=flat) | 14 | 26 | 2026-02-07 | +| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | ![post_async_context_compression_b1655bc8_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_async_context_compression_b1655bc8_dl.json&style=flat) | ![post_async_context_compression_b1655bc8_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_async_context_compression_b1655bc8_vw.json&style=flat) | 14 | 34 | 2026-01-29 | +| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | ![post_export_mulit_table_to_excel_244b8f9d_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_mulit_table_to_excel_244b8f9d_dl.json&style=flat) | ![post_export_mulit_table_to_excel_244b8f9d_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_mulit_table_to_excel_244b8f9d_vw.json&style=flat) | 7 | 6 | 2026-02-10 | +| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | ![post_markdown_normalizer_baaa8732_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_markdown_normalizer_baaa8732_dl.json&style=flat) | ![post_markdown_normalizer_baaa8732_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_markdown_normalizer_baaa8732_vw.json&style=flat) | 17 | 30 | 2026-01-29 | +| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | ![post_flash_card_65a2ea8f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_flash_card_65a2ea8f_dl.json&style=flat) | ![post_flash_card_65a2ea8f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_flash_card_65a2ea8f_vw.json&style=flat) | 13 | 14 | 2026-01-29 | +| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | | ![post_ai_task_instruction_generator_9bab8b37_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_ai_task_instruction_generator_9bab8b37_dl.json&style=flat) | ![post_ai_task_instruction_generator_9bab8b37_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_ai_task_instruction_generator_9bab8b37_vw.json&style=flat) | 9 | 6 | 2026-01-28 | +| 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | ![post_deep_dive_c0b846e4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_deep_dive_c0b846e4_dl.json&style=flat) | ![post_deep_dive_c0b846e4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_deep_dive_c0b846e4_vw.json&style=flat) | 6 | 11 | 2026-01-08 | +| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | ![post_导出为_word_支持公式流程图表格和代码块_8a6306c0_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%AF%BC%E5%87%BA%E4%B8%BA_word_%E6%94%AF%E6%8C%81%E5%85%AC%E5%BC%8F%E6%B5%81%E7%A8%8B%E5%9B%BE%E8%A1%A8%E6%A0%BC%E5%92%8C%E4%BB%A3%E7%A0%81%E5%9D%97_8a6306c0_dl.json&style=flat) | ![post_导出为_word_支持公式流程图表格和代码块_8a6306c0_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%AF%BC%E5%87%BA%E4%B8%BA_word_%E6%94%AF%E6%8C%81%E5%85%AC%E5%BC%8F%E6%B5%81%E7%A8%8B%E5%9B%BE%E8%A1%A8%E6%A0%BC%E5%92%8C%E4%BB%A3%E7%A0%81%E5%9D%97_8a6306c0_vw.json&style=flat) | 13 | 7 | 2026-02-07 | +| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | ![post_github_copilot_official_sdk_pipe_ce96f7b4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_official_sdk_pipe_ce96f7b4_dl.json&style=flat) | ![post_github_copilot_official_sdk_pipe_ce96f7b4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_official_sdk_pipe_ce96f7b4_vw.json&style=flat) | 14 | 9 | 2026-02-10 | +| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | ![post_folder_memory_auto_evolving_project_context_4a9875b2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_folder_memory_auto_evolving_project_context_4a9875b2_dl.json&style=flat) | ![post_folder_memory_auto_evolving_project_context_4a9875b2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_folder_memory_auto_evolving_project_context_4a9875b2_vw.json&style=flat) | 6 | 8 | 2026-01-20 | +| 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | ![post_智能信息图_e04a48ff_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E4%BF%A1%E6%81%AF%E5%9B%BE_e04a48ff_dl.json&style=flat) | ![post_智能信息图_e04a48ff_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E4%BF%A1%E6%81%AF%E5%9B%BE_e04a48ff_vw.json&style=flat) | 10 | 1 | 2026-01-29 | +| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | ![post_智能生成交互式思维导图帮助用户可视化知识_8d4b097b_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E7%94%9F%E6%88%90%E4%BA%A4%E4%BA%92%E5%BC%8F%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%E5%B8%AE%E5%8A%A9%E7%94%A8%E6%88%B7%E5%8F%AF%E8%A7%86%E5%8C%96%E7%9F%A5%E8%AF%86_8d4b097b_dl.json&style=flat) | ![post_智能生成交互式思维导图帮助用户可视化知识_8d4b097b_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E7%94%9F%E6%88%90%E4%BA%A4%E4%BA%92%E5%BC%8F%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%E5%B8%AE%E5%8A%A9%E7%94%A8%E6%88%B7%E5%8F%AF%E8%A7%86%E5%8C%96%E7%9F%A5%E8%AF%86_8d4b097b_vw.json&style=flat) | 6 | 2 | 2026-01-29 | +| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | ![post_异步上下文压缩_5c0617cb_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%BC%82%E6%AD%A5%E4%B8%8A%E4%B8%8B%E6%96%87%E5%8E%8B%E7%BC%A9_5c0617cb_dl.json&style=flat) | ![post_异步上下文压缩_5c0617cb_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%BC%82%E6%AD%A5%E4%B8%8A%E4%B8%8B%E6%96%87%E5%8E%8B%E7%BC%A9_5c0617cb_vw.json&style=flat) | 7 | 5 | 2026-01-29 | +| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | ![post_闪记卡生成插件_4a31eac3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E9%97%AA%E8%AE%B0%E5%8D%A1%E7%94%9F%E6%88%90%E6%8F%92%E4%BB%B6_4a31eac3_dl.json&style=flat) | ![post_闪记卡生成插件_4a31eac3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E9%97%AA%E8%AE%B0%E5%8D%A1%E7%94%9F%E6%88%90%E6%8F%92%E4%BB%B6_4a31eac3_vw.json&style=flat) | 8 | 1 | 2026-01-29 | +| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | ![post_精读_99830b0f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E7%B2%BE%E8%AF%BB_99830b0f_dl.json&style=flat) | ![post_精读_99830b0f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E7%B2%BE%E8%AF%BB_99830b0f_vw.json&style=flat) | 5 | 1 | 2026-01-08 | +| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | ![post_github_copilot_sdk_files_filter_403a62ee_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_files_filter_403a62ee_dl.json&style=flat) | ![post_github_copilot_sdk_files_filter_403a62ee_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_files_filter_403a62ee_vw.json&style=flat) | 3 | 0 | 2026-02-10 | +| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | ![post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_dl.json&style=flat) | ![post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_vw.json&style=flat) | 5 | 0 | 2026-02-10 | +| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | ![post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_dl.json&style=flat) | ![post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_vw.json&style=flat) | 12 | 19 | 2026-01-29 | +| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | ![post_review_of_claude_haiku_45_41b0db39_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_review_of_claude_haiku_45_41b0db39_dl.json&style=flat) | ![post_review_of_claude_haiku_45_41b0db39_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_review_of_claude_haiku_45_41b0db39_vw.json&style=flat) | 2 | 0 | 2026-01-14 | +| 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | ![post_debug_open_webui_plugins_in_your_browser_81bf7960_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_debug_open_webui_plugins_in_your_browser_81bf7960_dl.json&style=flat) | ![post_debug_open_webui_plugins_in_your_browser_81bf7960_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_debug_open_webui_plugins_in_your_browser_81bf7960_vw.json&style=flat) | 14 | 10 | 2026-01-10 | From 1fb2cccd585e321aefcfa648490e15d89b5d3be3 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:35:45 +0800 Subject: [PATCH 18/47] fix: resolve type error in gist sync and implement full English localization for charts --- README.md | 2 +- README_CN.md | 2 +- docs/community-stats.json | 16 +++++++------- docs/community-stats.md | 12 +++++------ docs/community-stats.zh.md | 6 +++--- scripts/openwebui_stats.py | 44 +++++++++++++++++++++++++------------- 6 files changed, 48 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 15d2242..7f2ec86 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats -> 🕐 Auto-updated: 2026-02-11 12:29 +> 🕐 Auto-updated: 2026-02-11 12:35 | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | :---: | :---: | :---: | :---: | diff --git a/README_CN.md b/README_CN.md index ec2a359..52099a5 100644 --- a/README_CN.md +++ b/README_CN.md @@ -6,7 +6,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ## 📊 社区统计 -> 🕐 自动更新于 2026-02-11 12:29 +> 🕐 自动更新于 2026-02-11 12:35 | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | :---: | :---: | :---: | :---: | diff --git a/docs/community-stats.json b/docs/community-stats.json index fe7b770..fd721a0 100644 --- a/docs/community-stats.json +++ b/docs/community-stats.json @@ -1,7 +1,7 @@ { "total_posts": 22, - "total_downloads": 4156, - "total_views": 45923, + "total_downloads": 4160, + "total_views": 45940, "total_upvotes": 231, "total_downvotes": 2, "total_saves": 274, @@ -23,7 +23,7 @@ "author": "Fu-Jie", "description": "Intelligently analyzes text content and generates interactive mind maps to help users structure and visualize knowledge.", "downloads": 954, - "views": 8387, + "views": 8389, "upvotes": 22, "saves": 50, "comments": 13, @@ -38,8 +38,8 @@ "version": "1.5.0", "author": "Fu-Jie", "description": "AI-powered infographic generator based on AntV Infographic. Supports professional templates, auto-icon matching, and SVG/PNG downloads.", - "downloads": 707, - "views": 6702, + "downloads": 710, + "views": 6712, "upvotes": 24, "saves": 34, "comments": 10, @@ -134,8 +134,8 @@ "version": "", "author": "", "description": "", - "downloads": 200, - "views": 2778, + "downloads": 201, + "views": 2781, "upvotes": 9, "saves": 6, "comments": 0, @@ -295,7 +295,7 @@ "author": "Fu-Jie", "description": "A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It moves uploaded files to a safe location ('copilot_files') so the Copilot Pipe can process them natively without interference.", "downloads": 16, - "views": 856, + "views": 858, "upvotes": 3, "saves": 0, "comments": 0, diff --git a/docs/community-stats.md b/docs/community-stats.md index 1babf50..273fb24 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -1,14 +1,14 @@ # 📊 OpenWebUI Community Stats Report -> 📅 Updated: 2026-02-11 12:29 +> 📅 Updated: 2026-02-11 12:35 -### 📈 增长与趋势 (Last 14 Days) -![Trend](https://kroki.io/mermaid/svg/eNpNjj1uwzAMhfeeQvDQyQYkkvqb294gW-BBbYTUgCMDsYo6ty9pV0U1PH18oh65PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02A8SuVwKoG5gdYNB_AA2wATWwDVwD3yA0iL9gdAPTjfsmj2OT7rTUNKuX5avU9dhxnkpWZ_BB9wqC96zRx16hRnbQuMAK6FjRE6sFYHUOWf3eGbw4MXIPGTSi1o3_0hFCkBh-PRJIKhu0lQwCMYNBSYxEPJZ0dGwSGi9xhFYqC5Y_kHMkVwheBtoIOP4A7RJaKQ==) +### 📈 Growth & Trends (Last 14 Days) +![Trend](https://kroki.io/mermaid/svg/eNpNjj1uwzAMhfeegvDQyQYkkfqb294gW-BBbYTUgCMDsYo6ty9pV0U1PH18oh65PT4-070O77mmJ-BTpzpn6N7KNV3zLZcKz_C6fJd5SZcVTvdcLt3euA1pm1Y4d0oPJnY9CKBqoHcwg_oD0wAbUAPbwDXwDUKD-AtaNdDduG_yODbpTktNM7wsX6Wux47zVDKcjQ-qBxO8Z40-9oAK2UHtAqtBx4qeWK0xrM4hq987gxcnRu4hjVrUqfFfOpoQJIZfjwSSygZlJYOMmEGjJEYiHksqOjYJtZc4QiuVNZY_kHMkVwheBtpIavwB6u1aIw==) -> *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)* +> *Blue: Downloads | Purple: Views (Real-time dynamic)* -### 📂 内容分类占比 (Distribution) -![Distribution](https://kroki.io/mermaid/svg/eNoryExVKMksyUlVCMgpTc_MUwipLEgt5lIAAqWC_OISJQUrBWMINy0zpyS1CCRgApXPLEgFcQ0h3MTkksz8PLCAEVRBUX5uQQmSkqLUsszUcrAAAN7zHv4=) +### 📂 Content Distribution +![Distribution](https://kroki.io/mermaid/svg/eNpNi7sNgDAQQ3umOGUDPhU1A1CwAKADWQrklFxAbA-BFLh7z7aASaGWyfQ2rthpuIQDdQjqMUWF201BT4y4oIZaqj9cYJV9Ek3uIZyw_HCc328SVR54t4n-Jp4P8PmKG5ZLJGI=) ## 📈 Overview diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index eb08f6b..f22db02 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -1,14 +1,14 @@ # 📊 OpenWebUI 社区统计报告 -> 📅 更新时间: 2026-02-11 12:29 +> 📅 更新时间: 2026-02-11 12:35 ### 📈 增长与趋势 (Last 14 Days) -![Trend](https://kroki.io/mermaid/svg/eNpNjj1uwzAMhfeeQvDQyQYkkvqb294gW-BBbYTUgCMDsYo6ty9pV0U1PH18oh65PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02A8SuVwKoG5gdYNB_AA2wATWwDVwD3yA0iL9gdAPTjfsmj2OT7rTUNKuX5avU9dhxnkpWZ_BB9wqC96zRx16hRnbQuMAK6FjRE6sFYHUOWf3eGbw4MXIPGTSi1o3_0hFCkBh-PRJIKhu0lQwCMYNBSYxEPJZ0dGwSGi9xhFYqC5Y_kHMkVwheBtoIOP4A7RJaKQ==) +![Trend](https://kroki.io/mermaid/svg/eNpNjj1uwzAMhfeegvDQyQYkkfqb294gW-BBbYTUgCMDsYo6ty9pV0U1PH18oh65PT4-070O77mmJ-BTpzpn6N7KNV3zLZcKz_C6fJd5SZcVTvdcLt3euA1pm1Y4d0oPJnY9CKBqoHcwg_oD0wAbUAPbwDXwDUKD-AtaNdDduG_yODbpTktNM7wsX6Wux47zVDKcjQ-qBxO8Z40-9oAK2UHtAqtBx4qeWK0xrM4hq987gxcnRu4hjVrUqfFfOpoQJIZfjwSSygZlJYOMmEGjJEYiHksqOjYJtZc4QiuVNZY_kHMkVwheBtpIavwB6u1aIw==) > *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)* ### 📂 内容分类占比 (Distribution) -![Distribution](https://kroki.io/mermaid/svg/eNoryExVKMksyUlVCMgpTc_MUwipLEgt5lIAAqWC_OISJQUrBWMINy0zpyS1CCRgApXPLEgFcQ0h3MTkksz8PLCAEVRBUX5uQQmSkqLUsszUcrAAAN7zHv4=) +![Distribution](https://kroki.io/mermaid/svg/eNpNi7sNgDAQQ3umOGUDPhU1A1CwAKADWQrklFxAbA-BFLh7z7aASaGWyfQ2rthpuIQDdQjqMUWF201BT4y4oIZaqj9cYJV9Ek3uIZyw_HCc328SVR54t4n-Jp4P8PmKG5ZLJGI=) ## 📈 总览 diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index a8d86d4..838301b 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -272,22 +272,34 @@ class OpenWebUIStats: print(f"⚠️ 无法从 Token 解析用户 ID: {e}") return "" - def generate_mermaid_chart(self, stats: dict = None) -> str: + def generate_mermaid_chart(self, stats: dict = None, lang: str = "zh") -> str: """生成支持 Kroki 服务端渲染的动态 Mermaid 图表链接 (零 Commit)""" history = self.load_history() if not history: return "" + # 多语言标签 + labels = { + "zh": { + "trend_title": "增长与趋势 (Last 14 Days)", + "trend_subtitle": "Engagement & Downloads Trend", + "legend": "蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)", + "dist_title": "内容分类占比 (Distribution)", + "dist_subtitle": "Plugin Types Distribution", + }, + "en": { + "trend_title": "Growth & Trends (Last 14 Days)", + "trend_subtitle": "Engagement & Downloads Trend", + "legend": "Blue: Downloads | Purple: Views (Real-time dynamic)", + "dist_title": "Content Distribution", + "dist_subtitle": "Plugin Types Distribution", + }, + } + l = labels.get(lang, labels["en"]) + def kroki_render(mermaid_code: str) -> str: """将 Mermaid 代码压缩并编码为 Kroki 链接""" try: - # 实际上由于我们要实现零 Commit,Markdown 文件里的链接必须是固定的 - # 但 Mermaid 数据是动态的。为了完全不改动 md 文件就能变, - # 只有一种办法:使用外部服务读取 Gist 原始数据并生成图片。 - # 由于 Mermaid 本身不支持这种外部数据引用,我们采取折中方案: - # 在 generate_markdown 时生成最新的 Kroki 链接。 - # 只要这个方法被调用并写回 md,它本质上还是改了 md。 - # 如果要完全不改 md,只能在 md 里放一个固定链接,比如指向一个会自动更新图片的 API。 compressed = zlib.compress(mermaid_code.encode("utf-8"), level=9) encoded = base64.urlsafe_b64encode(compressed).decode("utf-8") return f"https://kroki.io/mermaid/svg/{encoded}" @@ -305,15 +317,15 @@ class OpenWebUIStats: vws = [str(item["total_views"]) for item in data] mm = f"""xychart-beta - title "Engagement & Downloads Trend" + title "{l['trend_subtitle']}" x-axis [{dates_str}] y-axis "Total Counts" line [{', '.join(dls)}] line [{', '.join(vws)}]""" - charts.append("### 📈 增长与趋势 (Last 14 Days)") + charts.append(f"### 📈 {l['trend_title']}") charts.append(f"![Trend]({kroki_render(mm)})") - charts.append("\n> *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)*") + charts.append(f"\n> *{l['legend']}*") charts.append("") # 2. 插件类型分布 (Pie Chart) @@ -324,8 +336,8 @@ class OpenWebUIStats: for p_type, count in stats["by_type"].items() ] ) - mm = f"pie title Plugin Types\n{pie_data}" - charts.append("### 📂 内容分类占比 (Distribution)") + mm = f"pie title \"{l['dist_subtitle']}\"\n{pie_data}" + charts.append(f"### 📂 {l['dist_title']}") charts.append(f"![Distribution]({kroki_render(mm)})") charts.append("") @@ -550,8 +562,8 @@ class OpenWebUIStats: md.append(t["updated"]) md.append("") - # 插入趋势图 (使用 Kroki SVG 链接,理论上每次生成内容都随数据变) - chart = self.generate_mermaid_chart(stats) + # 插入趋势图 (使用 Kroki SVG 链接) + chart = self.generate_mermaid_chart(stats, lang=lang) if chart: md.append(chart) md.append("") @@ -725,6 +737,8 @@ class OpenWebUIStats: files_payload = {} for key, (label, val, color) in badges_config.items(): diff = delta.get(key, 0) + if isinstance(diff, dict): + diff = 0 # 避免 'posts' key 导致的 dict vs int 比较错误 message = f"{val}" if diff > 0: From 93e8e3bee21561baffb6f012f0e2ad3d0c13c734 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:37:51 +0800 Subject: [PATCH 19/47] fix: remove duplicate saves entry and restore comments entry formatting --- scripts/openwebui_stats.py | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 838301b..a42f74f 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -582,7 +582,7 @@ class OpenWebUIStats: f"| {t['upvotes']} | {self.get_badge('upvotes', stats, user, delta)} |" ) md.append(f"| {t['saves']} | {self.get_badge('saves', stats, user, delta)} |") - md.append(f"| {t['comments']} | {stats['total_comments']} |") + md.append(f"| {t['saves']} | {self.get_badge('saves', stats, user, delta)} |") # 作者信息 if user: @@ -953,6 +953,39 @@ class OpenWebUIStats: ) lines.append("") + # 插入总下载量趋势图 (仅 README 使用) + history = self.load_history() + if len(history) >= 3: + # 辅助函数:Kroki 渲染 + def kroki_render(mermaid_code: str) -> str: + try: + compressed = zlib.compress(mermaid_code.encode("utf-8"), level=9) + encoded = base64.urlsafe_b64encode(compressed).decode("utf-8") + return f"https://kroki.io/mermaid/svg/{encoded}" + except: + return "" + + data = history[-14:] # 取最近14天 + dates = [item["date"][-5:] for item in data] + dates_str = ", ".join([f'"{d}"' for d in dates]) + dls = [str(item["total_downloads"]) for item in data] + + # 多语言标题 + chart_titles = { + "zh": "总下载量累计趋势 (14天)", + "en": "Total Downloads Trend (14 Days)", + } + c_title = chart_titles.get(lang, chart_titles["en"]) + + mm = f"""xychart-beta + title "{c_title}" + x-axis [{dates_str}] + y-axis "Total Downloads" + line [{', '.join(dls)}]""" + + lines.append(f"![Downloads Trend]({kroki_render(mm)})") + lines.append("") + # Top 6 热门插件 lines.append(t["top6_title"]) lines.append(t["top6_header"]) From e1c22615377ec020b831627141be61d38d4b58b3 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:41:16 +0800 Subject: [PATCH 20/47] fix: implement safe badge keys and add dynamic upvote/save badges --- README.md | 4 ++- README_CN.md | 4 ++- docs/community-stats.json | 10 +++--- docs/community-stats.md | 49 +++++++++++++------------- docs/community-stats.zh.md | 49 +++++++++++++------------- scripts/openwebui_stats.py | 70 +++++++++++++++++++++++++++++++------- 6 files changed, 117 insertions(+), 69 deletions(-) diff --git a/README.md b/README.md index 7f2ec86..8788292 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats -> 🕐 Auto-updated: 2026-02-11 12:35 +> 🕐 Auto-updated: 2026-02-11 12:41 | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | :---: | :---: | :---: | :---: | @@ -17,6 +17,8 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | :---: | :---: | :---: | :---: | :---: | | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | +![Downloads Trend](https://kroki.io/mermaid/svg/eNpdzr8KgzAQx_G9T3FkakEhydn82X0EN3FIa6BCUNBA9e17aq9DM3z5EG74rdvzFeZcPmIOF6CXh5wiiGbKIUE9vcc0hX6BZo5jD1dVQR225SaO27UM67BAK6QqtRcF7EDJUAd0KX_QDGRUjDvDMCzDMfwXSjKU6I4l27nkf_Y5Mw1jhFZbJwvQzlqqt74AlEg_qIyjajRUtBX1rjXVGKTa49LZ_cd7uqkUqr1Gdh_PIkZl) + ### 🔥 Top 6 Popular Plugins | Rank | Plugin | Version | Downloads | Views | Updated | | :---: | :--- | :---: | :---: | :---: | :---: | diff --git a/README_CN.md b/README_CN.md index 52099a5..2e47788 100644 --- a/README_CN.md +++ b/README_CN.md @@ -6,7 +6,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ## 📊 社区统计 -> 🕐 自动更新于 2026-02-11 12:35 +> 🕐 自动更新于 2026-02-11 12:41 | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | :---: | :---: | :---: | :---: | @@ -16,6 +16,8 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 | :---: | :---: | :---: | :---: | :---: | | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | +![Downloads Trend](https://kroki.io/mermaid/svg/eNo9zr1qAkEQwPHepxi2SuAOdnfO_eh9hHRisTEHOTg80AXPLl1AC59BsLExTZBAkLxMNJe3cO50nOLPj2GKqRfj1zCN6XMeQw9oYhHLHMT57fv3a9Ucj__v67_Pj2a_aQ6r0_IHHlR22u4eRXdcp6EuZjAUUqXaiwRaoGSoDjqVd2gGMjJGn2EYluEY_gYlGUqMuk8W10_EUxVDCYNqPimr8DK7vlkWkxyG2jqZgHbWUr31CaBE2qAyjqrRUNFm1L7WVGOQartLZ9uN93STKVRtjRxdAOxIUHs=) + ### 🔥 热门插件 Top 6 | 排名 | 插件 | 版本 | 下载 | 浏览 | 更新日期 | | :---: | :--- | :---: | :---: | :---: | :---: | diff --git a/docs/community-stats.json b/docs/community-stats.json index fd721a0..b7ecf65 100644 --- a/docs/community-stats.json +++ b/docs/community-stats.json @@ -1,7 +1,7 @@ { "total_posts": 22, "total_downloads": 4160, - "total_views": 45940, + "total_views": 45948, "total_upvotes": 231, "total_downvotes": 2, "total_saves": 274, @@ -23,7 +23,7 @@ "author": "Fu-Jie", "description": "Intelligently analyzes text content and generates interactive mind maps to help users structure and visualize knowledge.", "downloads": 954, - "views": 8389, + "views": 8390, "upvotes": 22, "saves": 50, "comments": 13, @@ -87,7 +87,7 @@ "author": "Fu-Jie", "description": "Extracts tables from chat messages and exports them to Excel (.xlsx) files with smart formatting.", "downloads": 342, - "views": 1671, + "views": 1675, "upvotes": 7, "saves": 6, "comments": 0, @@ -295,7 +295,7 @@ "author": "Fu-Jie", "description": "A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It moves uploaded files to a safe location ('copilot_files') so the Copilot Pipe can process them natively without interference.", "downloads": 16, - "views": 858, + "views": 861, "upvotes": 3, "saves": 0, "comments": 0, @@ -311,7 +311,7 @@ "author": "", "description": "", "downloads": 0, - "views": 278, + "views": 281, "upvotes": 5, "saves": 0, "comments": 0, diff --git a/docs/community-stats.md b/docs/community-stats.md index 273fb24..023ad9c 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -1,9 +1,9 @@ # 📊 OpenWebUI Community Stats Report -> 📅 Updated: 2026-02-11 12:35 +> 📅 Updated: 2026-02-11 12:40 ### 📈 Growth & Trends (Last 14 Days) -![Trend](https://kroki.io/mermaid/svg/eNpNjj1uwzAMhfeegvDQyQYkkfqb294gW-BBbYTUgCMDsYo6ty9pV0U1PH18oh65PT4-070O77mmJ-BTpzpn6N7KNV3zLZcKz_C6fJd5SZcVTvdcLt3euA1pm1Y4d0oPJnY9CKBqoHcwg_oD0wAbUAPbwDXwDUKD-AtaNdDduG_yODbpTktNM7wsX6Wux47zVDKcjQ-qBxO8Z40-9oAK2UHtAqtBx4qeWK0xrM4hq987gxcnRu4hjVrUqfFfOpoQJIZfjwSSygZlJYOMmEGjJEYiHksqOjYJtZc4QiuVNZY_kHMkVwheBtpIavwB6u1aIw==) +![Trend](https://kroki.io/mermaid/svg/eNpNjkFuxCAMRfc9Bcqiq0QCbMCs295gdqMsaAdNI2WINKFq5va1k1KVxef5Y769PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02g41drwRANzA72EH_gW0ADbCBa-AbhAbUIP6C0Q1MN-6bPI5NutNS06xelq9S12PHeSpZnW0g3StLIbDGEHsFGtgB44nVgmeFgKzOWlbvgTXsnRTEiZF70IAR9Xr8lw6WSGL49UhAqRxpJxloxSQDkhgReSzq6NlEMEHiEJxUzjr-gN6jXERBBrqINP4A6v1aKw==) > *Blue: Downloads | Purple: Views (Real-time dynamic)* @@ -20,7 +20,6 @@ | 👁️ Total Views | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | | 👍 Total Upvotes | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | | 💾 Total Saves | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | -| 💬 Total Comments | 55 | | ⭐ Author Points | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&style=flat) | | 👥 Followers | ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&style=flat) | @@ -37,25 +36,25 @@ | Rank | Title | Type | Version | Downloads | Views | Upvotes | Saves | Updated | |:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| -| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | ![post_turn_any_text_into_beautiful_mind_maps_3094c59a_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_turn_any_text_into_beautiful_mind_maps_3094c59a_dl.json&style=flat) | ![post_turn_any_text_into_beautiful_mind_maps_3094c59a_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_turn_any_text_into_beautiful_mind_maps_3094c59a_vw.json&style=flat) | 22 | 50 | 2026-01-29 | -| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | ![post_smart_infographic_ad6f0c7f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_smart_infographic_ad6f0c7f_dl.json&style=flat) | ![post_smart_infographic_ad6f0c7f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_smart_infographic_ad6f0c7f_vw.json&style=flat) | 24 | 34 | 2026-01-31 | -| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | ![post_export_to_word_enhanced_formatting_fca6a315_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_to_word_enhanced_formatting_fca6a315_dl.json&style=flat) | ![post_export_to_word_enhanced_formatting_fca6a315_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_to_word_enhanced_formatting_fca6a315_vw.json&style=flat) | 14 | 26 | 2026-02-07 | -| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | ![post_async_context_compression_b1655bc8_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_async_context_compression_b1655bc8_dl.json&style=flat) | ![post_async_context_compression_b1655bc8_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_async_context_compression_b1655bc8_vw.json&style=flat) | 14 | 34 | 2026-01-29 | -| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | ![post_export_mulit_table_to_excel_244b8f9d_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_mulit_table_to_excel_244b8f9d_dl.json&style=flat) | ![post_export_mulit_table_to_excel_244b8f9d_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_mulit_table_to_excel_244b8f9d_vw.json&style=flat) | 7 | 6 | 2026-02-10 | -| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | ![post_markdown_normalizer_baaa8732_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_markdown_normalizer_baaa8732_dl.json&style=flat) | ![post_markdown_normalizer_baaa8732_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_markdown_normalizer_baaa8732_vw.json&style=flat) | 17 | 30 | 2026-01-29 | -| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | ![post_flash_card_65a2ea8f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_flash_card_65a2ea8f_dl.json&style=flat) | ![post_flash_card_65a2ea8f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_flash_card_65a2ea8f_vw.json&style=flat) | 13 | 14 | 2026-01-29 | -| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | | ![post_ai_task_instruction_generator_9bab8b37_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_ai_task_instruction_generator_9bab8b37_dl.json&style=flat) | ![post_ai_task_instruction_generator_9bab8b37_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_ai_task_instruction_generator_9bab8b37_vw.json&style=flat) | 9 | 6 | 2026-01-28 | -| 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | ![post_deep_dive_c0b846e4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_deep_dive_c0b846e4_dl.json&style=flat) | ![post_deep_dive_c0b846e4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_deep_dive_c0b846e4_vw.json&style=flat) | 6 | 11 | 2026-01-08 | -| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | ![post_导出为_word_支持公式流程图表格和代码块_8a6306c0_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%AF%BC%E5%87%BA%E4%B8%BA_word_%E6%94%AF%E6%8C%81%E5%85%AC%E5%BC%8F%E6%B5%81%E7%A8%8B%E5%9B%BE%E8%A1%A8%E6%A0%BC%E5%92%8C%E4%BB%A3%E7%A0%81%E5%9D%97_8a6306c0_dl.json&style=flat) | ![post_导出为_word_支持公式流程图表格和代码块_8a6306c0_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%AF%BC%E5%87%BA%E4%B8%BA_word_%E6%94%AF%E6%8C%81%E5%85%AC%E5%BC%8F%E6%B5%81%E7%A8%8B%E5%9B%BE%E8%A1%A8%E6%A0%BC%E5%92%8C%E4%BB%A3%E7%A0%81%E5%9D%97_8a6306c0_vw.json&style=flat) | 13 | 7 | 2026-02-07 | -| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | ![post_github_copilot_official_sdk_pipe_ce96f7b4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_official_sdk_pipe_ce96f7b4_dl.json&style=flat) | ![post_github_copilot_official_sdk_pipe_ce96f7b4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_official_sdk_pipe_ce96f7b4_vw.json&style=flat) | 14 | 9 | 2026-02-10 | -| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | ![post_folder_memory_auto_evolving_project_context_4a9875b2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_folder_memory_auto_evolving_project_context_4a9875b2_dl.json&style=flat) | ![post_folder_memory_auto_evolving_project_context_4a9875b2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_folder_memory_auto_evolving_project_context_4a9875b2_vw.json&style=flat) | 6 | 8 | 2026-01-20 | -| 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | ![post_智能信息图_e04a48ff_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E4%BF%A1%E6%81%AF%E5%9B%BE_e04a48ff_dl.json&style=flat) | ![post_智能信息图_e04a48ff_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E4%BF%A1%E6%81%AF%E5%9B%BE_e04a48ff_vw.json&style=flat) | 10 | 1 | 2026-01-29 | -| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | ![post_智能生成交互式思维导图帮助用户可视化知识_8d4b097b_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E7%94%9F%E6%88%90%E4%BA%A4%E4%BA%92%E5%BC%8F%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%E5%B8%AE%E5%8A%A9%E7%94%A8%E6%88%B7%E5%8F%AF%E8%A7%86%E5%8C%96%E7%9F%A5%E8%AF%86_8d4b097b_dl.json&style=flat) | ![post_智能生成交互式思维导图帮助用户可视化知识_8d4b097b_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E7%94%9F%E6%88%90%E4%BA%A4%E4%BA%92%E5%BC%8F%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%E5%B8%AE%E5%8A%A9%E7%94%A8%E6%88%B7%E5%8F%AF%E8%A7%86%E5%8C%96%E7%9F%A5%E8%AF%86_8d4b097b_vw.json&style=flat) | 6 | 2 | 2026-01-29 | -| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | ![post_异步上下文压缩_5c0617cb_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%BC%82%E6%AD%A5%E4%B8%8A%E4%B8%8B%E6%96%87%E5%8E%8B%E7%BC%A9_5c0617cb_dl.json&style=flat) | ![post_异步上下文压缩_5c0617cb_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%BC%82%E6%AD%A5%E4%B8%8A%E4%B8%8B%E6%96%87%E5%8E%8B%E7%BC%A9_5c0617cb_vw.json&style=flat) | 7 | 5 | 2026-01-29 | -| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | ![post_闪记卡生成插件_4a31eac3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E9%97%AA%E8%AE%B0%E5%8D%A1%E7%94%9F%E6%88%90%E6%8F%92%E4%BB%B6_4a31eac3_dl.json&style=flat) | ![post_闪记卡生成插件_4a31eac3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E9%97%AA%E8%AE%B0%E5%8D%A1%E7%94%9F%E6%88%90%E6%8F%92%E4%BB%B6_4a31eac3_vw.json&style=flat) | 8 | 1 | 2026-01-29 | -| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | ![post_精读_99830b0f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E7%B2%BE%E8%AF%BB_99830b0f_dl.json&style=flat) | ![post_精读_99830b0f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E7%B2%BE%E8%AF%BB_99830b0f_vw.json&style=flat) | 5 | 1 | 2026-01-08 | -| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | ![post_github_copilot_sdk_files_filter_403a62ee_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_files_filter_403a62ee_dl.json&style=flat) | ![post_github_copilot_sdk_files_filter_403a62ee_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_files_filter_403a62ee_vw.json&style=flat) | 3 | 0 | 2026-02-10 | -| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | ![post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_dl.json&style=flat) | ![post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_vw.json&style=flat) | 5 | 0 | 2026-02-10 | -| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | ![post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_dl.json&style=flat) | ![post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_vw.json&style=flat) | 12 | 19 | 2026-01-29 | -| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | ![post_review_of_claude_haiku_45_41b0db39_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_review_of_claude_haiku_45_41b0db39_dl.json&style=flat) | ![post_review_of_claude_haiku_45_41b0db39_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_review_of_claude_haiku_45_41b0db39_vw.json&style=flat) | 2 | 0 | 2026-01-14 | -| 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | ![post_debug_open_webui_plugins_in_your_browser_81bf7960_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_debug_open_webui_plugins_in_your_browser_81bf7960_dl.json&style=flat) | ![post_debug_open_webui_plugins_in_your_browser_81bf7960_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_debug_open_webui_plugins_in_your_browser_81bf7960_vw.json&style=flat) | 14 | 10 | 2026-01-10 | +| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![post_207cd433d27fdd853ccbfa941e6fa67f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_207cd433d27fdd853ccbfa941e6fa67f_dl.json&style=flat) | ![post_207cd433d27fdd853ccbfa941e6fa67f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_207cd433d27fdd853ccbfa941e6fa67f_vw.json&style=flat) | ![post_207cd433d27fdd853ccbfa941e6fa67f_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_207cd433d27fdd853ccbfa941e6fa67f_up.json&style=flat) | ![post_207cd433d27fdd853ccbfa941e6fa67f_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_207cd433d27fdd853ccbfa941e6fa67f_sv.json&style=flat) | 2026-01-29 | +| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | ![v](https://img.shields.io/badge/v-1.5.0-blue?style=flat) | ![post_376135b87514e63570283b2057459b1f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_376135b87514e63570283b2057459b1f_dl.json&style=flat) | ![post_376135b87514e63570283b2057459b1f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_376135b87514e63570283b2057459b1f_vw.json&style=flat) | ![post_376135b87514e63570283b2057459b1f_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_376135b87514e63570283b2057459b1f_up.json&style=flat) | ![post_376135b87514e63570283b2057459b1f_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_376135b87514e63570283b2057459b1f_sv.json&style=flat) | 2026-01-31 | +| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | ![v](https://img.shields.io/badge/v-0.4.4-blue?style=flat) | ![post_dc072f01690dc8293384153dc0231d05_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_dc072f01690dc8293384153dc0231d05_dl.json&style=flat) | ![post_dc072f01690dc8293384153dc0231d05_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_dc072f01690dc8293384153dc0231d05_vw.json&style=flat) | ![post_dc072f01690dc8293384153dc0231d05_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_dc072f01690dc8293384153dc0231d05_up.json&style=flat) | ![post_dc072f01690dc8293384153dc0231d05_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_dc072f01690dc8293384153dc0231d05_sv.json&style=flat) | 2026-02-07 | +| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | ![v](https://img.shields.io/badge/v-1.2.2-blue?style=flat) | ![post_0640a7ef0970872217cb939f2ba9c12c_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0640a7ef0970872217cb939f2ba9c12c_dl.json&style=flat) | ![post_0640a7ef0970872217cb939f2ba9c12c_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0640a7ef0970872217cb939f2ba9c12c_vw.json&style=flat) | ![post_0640a7ef0970872217cb939f2ba9c12c_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0640a7ef0970872217cb939f2ba9c12c_up.json&style=flat) | ![post_0640a7ef0970872217cb939f2ba9c12c_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0640a7ef0970872217cb939f2ba9c12c_sv.json&style=flat) | 2026-01-29 | +| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | ![v](https://img.shields.io/badge/v-0.3.7-blue?style=flat) | ![post_c5ae05d46c7b999a1e36ca1457f1926b_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5ae05d46c7b999a1e36ca1457f1926b_dl.json&style=flat) | ![post_c5ae05d46c7b999a1e36ca1457f1926b_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5ae05d46c7b999a1e36ca1457f1926b_vw.json&style=flat) | ![post_c5ae05d46c7b999a1e36ca1457f1926b_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5ae05d46c7b999a1e36ca1457f1926b_up.json&style=flat) | ![post_c5ae05d46c7b999a1e36ca1457f1926b_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5ae05d46c7b999a1e36ca1457f1926b_sv.json&style=flat) | 2026-02-10 | +| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![post_a963da7c5d914310e7026b8c8a6635b0_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a963da7c5d914310e7026b8c8a6635b0_dl.json&style=flat) | ![post_a963da7c5d914310e7026b8c8a6635b0_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a963da7c5d914310e7026b8c8a6635b0_vw.json&style=flat) | ![post_a963da7c5d914310e7026b8c8a6635b0_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a963da7c5d914310e7026b8c8a6635b0_up.json&style=flat) | ![post_a963da7c5d914310e7026b8c8a6635b0_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a963da7c5d914310e7026b8c8a6635b0_sv.json&style=flat) | 2026-01-29 | +| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | ![v](https://img.shields.io/badge/v-0.2.4-blue?style=flat) | ![post_5cf7a5dad74ef15ee4ffc6fe10da8213_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_5cf7a5dad74ef15ee4ffc6fe10da8213_dl.json&style=flat) | ![post_5cf7a5dad74ef15ee4ffc6fe10da8213_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_5cf7a5dad74ef15ee4ffc6fe10da8213_vw.json&style=flat) | ![post_5cf7a5dad74ef15ee4ffc6fe10da8213_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_5cf7a5dad74ef15ee4ffc6fe10da8213_up.json&style=flat) | ![post_5cf7a5dad74ef15ee4ffc6fe10da8213_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_5cf7a5dad74ef15ee4ffc6fe10da8213_sv.json&style=flat) | 2026-01-29 | +| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | ![v](https://img.shields.io/badge/v-N/A-gray?style=flat) | ![post_19f469a02b32d21f86b16d1395a81317_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_19f469a02b32d21f86b16d1395a81317_dl.json&style=flat) | ![post_19f469a02b32d21f86b16d1395a81317_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_19f469a02b32d21f86b16d1395a81317_vw.json&style=flat) | ![post_19f469a02b32d21f86b16d1395a81317_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_19f469a02b32d21f86b16d1395a81317_up.json&style=flat) | ![post_19f469a02b32d21f86b16d1395a81317_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_19f469a02b32d21f86b16d1395a81317_sv.json&style=flat) | 2026-01-28 | +| 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | ![v](https://img.shields.io/badge/v-1.0.0-blue?style=flat) | ![post_78e3480de4e6bd4615498495c5d15979_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_78e3480de4e6bd4615498495c5d15979_dl.json&style=flat) | ![post_78e3480de4e6bd4615498495c5d15979_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_78e3480de4e6bd4615498495c5d15979_vw.json&style=flat) | ![post_78e3480de4e6bd4615498495c5d15979_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_78e3480de4e6bd4615498495c5d15979_up.json&style=flat) | ![post_78e3480de4e6bd4615498495c5d15979_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_78e3480de4e6bd4615498495c5d15979_sv.json&style=flat) | 2026-01-08 | +| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | ![v](https://img.shields.io/badge/v-0.4.4-blue?style=flat) | ![post_fc4cbdf0eb78bd98c2ed7650d459b59e_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fc4cbdf0eb78bd98c2ed7650d459b59e_dl.json&style=flat) | ![post_fc4cbdf0eb78bd98c2ed7650d459b59e_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fc4cbdf0eb78bd98c2ed7650d459b59e_vw.json&style=flat) | ![post_fc4cbdf0eb78bd98c2ed7650d459b59e_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fc4cbdf0eb78bd98c2ed7650d459b59e_up.json&style=flat) | ![post_fc4cbdf0eb78bd98c2ed7650d459b59e_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fc4cbdf0eb78bd98c2ed7650d459b59e_sv.json&style=flat) | 2026-02-07 | +| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | ![v](https://img.shields.io/badge/v-0.6.2-blue?style=flat) | ![post_aef940e01073e811a311c3a443d9c149_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_aef940e01073e811a311c3a443d9c149_dl.json&style=flat) | ![post_aef940e01073e811a311c3a443d9c149_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_aef940e01073e811a311c3a443d9c149_vw.json&style=flat) | ![post_aef940e01073e811a311c3a443d9c149_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_aef940e01073e811a311c3a443d9c149_up.json&style=flat) | ![post_aef940e01073e811a311c3a443d9c149_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_aef940e01073e811a311c3a443d9c149_sv.json&style=flat) | 2026-02-10 | +| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | ![v](https://img.shields.io/badge/v-0.1.0-blue?style=flat) | ![post_a125b3a3702a07c86c77668dcede2149_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a125b3a3702a07c86c77668dcede2149_dl.json&style=flat) | ![post_a125b3a3702a07c86c77668dcede2149_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a125b3a3702a07c86c77668dcede2149_vw.json&style=flat) | ![post_a125b3a3702a07c86c77668dcede2149_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a125b3a3702a07c86c77668dcede2149_up.json&style=flat) | ![post_a125b3a3702a07c86c77668dcede2149_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a125b3a3702a07c86c77668dcede2149_sv.json&style=flat) | 2026-01-20 | +| 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | ![v](https://img.shields.io/badge/v-1.5.0-blue?style=flat) | ![post_0c3f8621f77a9d5875d3c26ee38a3954_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0c3f8621f77a9d5875d3c26ee38a3954_dl.json&style=flat) | ![post_0c3f8621f77a9d5875d3c26ee38a3954_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0c3f8621f77a9d5875d3c26ee38a3954_vw.json&style=flat) | ![post_0c3f8621f77a9d5875d3c26ee38a3954_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0c3f8621f77a9d5875d3c26ee38a3954_up.json&style=flat) | ![post_0c3f8621f77a9d5875d3c26ee38a3954_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0c3f8621f77a9d5875d3c26ee38a3954_sv.json&style=flat) | 2026-01-29 | +| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![post_c5bfbfd0d29694a04c597e26202b824f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5bfbfd0d29694a04c597e26202b824f_dl.json&style=flat) | ![post_c5bfbfd0d29694a04c597e26202b824f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5bfbfd0d29694a04c597e26202b824f_vw.json&style=flat) | ![post_c5bfbfd0d29694a04c597e26202b824f_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5bfbfd0d29694a04c597e26202b824f_up.json&style=flat) | ![post_c5bfbfd0d29694a04c597e26202b824f_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5bfbfd0d29694a04c597e26202b824f_sv.json&style=flat) | 2026-01-29 | +| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | ![v](https://img.shields.io/badge/v-1.2.2-blue?style=flat) | ![post_fa447e583483020bc1bf35e74302c75c_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fa447e583483020bc1bf35e74302c75c_dl.json&style=flat) | ![post_fa447e583483020bc1bf35e74302c75c_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fa447e583483020bc1bf35e74302c75c_vw.json&style=flat) | ![post_fa447e583483020bc1bf35e74302c75c_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fa447e583483020bc1bf35e74302c75c_up.json&style=flat) | ![post_fa447e583483020bc1bf35e74302c75c_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fa447e583483020bc1bf35e74302c75c_sv.json&style=flat) | 2026-01-29 | +| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | ![v](https://img.shields.io/badge/v-0.2.4-blue?style=flat) | ![post_c68a2593e76ec324361358575b6501de_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c68a2593e76ec324361358575b6501de_dl.json&style=flat) | ![post_c68a2593e76ec324361358575b6501de_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c68a2593e76ec324361358575b6501de_vw.json&style=flat) | ![post_c68a2593e76ec324361358575b6501de_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c68a2593e76ec324361358575b6501de_up.json&style=flat) | ![post_c68a2593e76ec324361358575b6501de_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c68a2593e76ec324361358575b6501de_sv.json&style=flat) | 2026-01-29 | +| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | ![v](https://img.shields.io/badge/v-1.0.0-blue?style=flat) | ![post_14a3b01bc6559558b48a61a56dd3635d_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_14a3b01bc6559558b48a61a56dd3635d_dl.json&style=flat) | ![post_14a3b01bc6559558b48a61a56dd3635d_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_14a3b01bc6559558b48a61a56dd3635d_vw.json&style=flat) | ![post_14a3b01bc6559558b48a61a56dd3635d_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_14a3b01bc6559558b48a61a56dd3635d_up.json&style=flat) | ![post_14a3b01bc6559558b48a61a56dd3635d_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_14a3b01bc6559558b48a61a56dd3635d_sv.json&style=flat) | 2026-01-08 | +| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | ![v](https://img.shields.io/badge/v-0.1.2-blue?style=flat) | ![post_68081377a06a5746efe798136a72c6b6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_68081377a06a5746efe798136a72c6b6_dl.json&style=flat) | ![post_68081377a06a5746efe798136a72c6b6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_68081377a06a5746efe798136a72c6b6_vw.json&style=flat) | ![post_68081377a06a5746efe798136a72c6b6_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_68081377a06a5746efe798136a72c6b6_up.json&style=flat) | ![post_68081377a06a5746efe798136a72c6b6_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_68081377a06a5746efe798136a72c6b6_sv.json&style=flat) | 2026-02-10 | +| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | ![v](https://img.shields.io/badge/v-N/A-gray?style=flat) | ![post_42a11f4f094a0fa757bfefece51b1180_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_42a11f4f094a0fa757bfefece51b1180_dl.json&style=flat) | ![post_42a11f4f094a0fa757bfefece51b1180_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_42a11f4f094a0fa757bfefece51b1180_vw.json&style=flat) | ![post_42a11f4f094a0fa757bfefece51b1180_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_42a11f4f094a0fa757bfefece51b1180_up.json&style=flat) | ![post_42a11f4f094a0fa757bfefece51b1180_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_42a11f4f094a0fa757bfefece51b1180_sv.json&style=flat) | 2026-02-10 | +| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | ![v](https://img.shields.io/badge/v-N/A-gray?style=flat) | ![post_858cb162732370288ce024b4f7944f69_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_858cb162732370288ce024b4f7944f69_dl.json&style=flat) | ![post_858cb162732370288ce024b4f7944f69_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_858cb162732370288ce024b4f7944f69_vw.json&style=flat) | ![post_858cb162732370288ce024b4f7944f69_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_858cb162732370288ce024b4f7944f69_up.json&style=flat) | ![post_858cb162732370288ce024b4f7944f69_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_858cb162732370288ce024b4f7944f69_sv.json&style=flat) | 2026-01-29 | +| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | ![v](https://img.shields.io/badge/v-N/A-gray?style=flat) | ![post_8db923aec1f58d282a2334db388aa5c2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_8db923aec1f58d282a2334db388aa5c2_dl.json&style=flat) | ![post_8db923aec1f58d282a2334db388aa5c2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_8db923aec1f58d282a2334db388aa5c2_vw.json&style=flat) | ![post_8db923aec1f58d282a2334db388aa5c2_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_8db923aec1f58d282a2334db388aa5c2_up.json&style=flat) | ![post_8db923aec1f58d282a2334db388aa5c2_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_8db923aec1f58d282a2334db388aa5c2_sv.json&style=flat) | 2026-01-14 | +| 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | ![v](https://img.shields.io/badge/v-N/A-gray?style=flat) | ![post_e38b91e43262d29106345acfcd9dffba_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_e38b91e43262d29106345acfcd9dffba_dl.json&style=flat) | ![post_e38b91e43262d29106345acfcd9dffba_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_e38b91e43262d29106345acfcd9dffba_vw.json&style=flat) | ![post_e38b91e43262d29106345acfcd9dffba_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_e38b91e43262d29106345acfcd9dffba_up.json&style=flat) | ![post_e38b91e43262d29106345acfcd9dffba_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_e38b91e43262d29106345acfcd9dffba_sv.json&style=flat) | 2026-01-10 | diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index f22db02..a9704d0 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -1,9 +1,9 @@ # 📊 OpenWebUI 社区统计报告 -> 📅 更新时间: 2026-02-11 12:35 +> 📅 更新时间: 2026-02-11 12:40 ### 📈 增长与趋势 (Last 14 Days) -![Trend](https://kroki.io/mermaid/svg/eNpNjj1uwzAMhfeegvDQyQYkkfqb294gW-BBbYTUgCMDsYo6ty9pV0U1PH18oh65PT4-070O77mmJ-BTpzpn6N7KNV3zLZcKz_C6fJd5SZcVTvdcLt3euA1pm1Y4d0oPJnY9CKBqoHcwg_oD0wAbUAPbwDXwDUKD-AtaNdDduG_yODbpTktNM7wsX6Wux47zVDKcjQ-qBxO8Z40-9oAK2UHtAqtBx4qeWK0xrM4hq987gxcnRu4hjVrUqfFfOpoQJIZfjwSSygZlJYOMmEGjJEYiHksqOjYJtZc4QiuVNZY_kHMkVwheBtpIavwB6u1aIw==) +![Trend](https://kroki.io/mermaid/svg/eNpNjkFuxCAMRfc9Bcqiq0QCbMCs295gdqMsaAdNI2WINKFq5va1k1KVxef5Y769PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02g41drwRANzA72EH_gW0ADbCBa-AbhAbUIP6C0Q1MN-6bPI5NutNS06xelq9S12PHeSpZnW0g3StLIbDGEHsFGtgB44nVgmeFgKzOWlbvgTXsnRTEiZF70IAR9Xr8lw6WSGL49UhAqRxpJxloxSQDkhgReSzq6NlEMEHiEJxUzjr-gN6jXERBBrqINP4A6v1aKw==) > *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)* @@ -20,7 +20,6 @@ | 👁️ 总浏览量 | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | | 👍 总点赞数 | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | | 💾 总收藏数 | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | -| 💬 总评论数 | 55 | | ⭐ 作者总积分 | ![points](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_points.json&style=flat) | | 👥 粉丝数量 | ![followers](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_followers.json&style=flat) | @@ -37,25 +36,25 @@ | 排名 | 标题 | 类型 | 版本 | 下载 | 浏览 | 点赞 | 收藏 | 更新日期 | |:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| -| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.9.2 | ![post_turn_any_text_into_beautiful_mind_maps_3094c59a_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_turn_any_text_into_beautiful_mind_maps_3094c59a_dl.json&style=flat) | ![post_turn_any_text_into_beautiful_mind_maps_3094c59a_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_turn_any_text_into_beautiful_mind_maps_3094c59a_vw.json&style=flat) | 22 | 50 | 2026-01-29 | -| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.5.0 | ![post_smart_infographic_ad6f0c7f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_smart_infographic_ad6f0c7f_dl.json&style=flat) | ![post_smart_infographic_ad6f0c7f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_smart_infographic_ad6f0c7f_vw.json&style=flat) | 24 | 34 | 2026-01-31 | -| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.4 | ![post_export_to_word_enhanced_formatting_fca6a315_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_to_word_enhanced_formatting_fca6a315_dl.json&style=flat) | ![post_export_to_word_enhanced_formatting_fca6a315_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_to_word_enhanced_formatting_fca6a315_vw.json&style=flat) | 14 | 26 | 2026-02-07 | -| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.2.2 | ![post_async_context_compression_b1655bc8_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_async_context_compression_b1655bc8_dl.json&style=flat) | ![post_async_context_compression_b1655bc8_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_async_context_compression_b1655bc8_vw.json&style=flat) | 14 | 34 | 2026-01-29 | -| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.7 | ![post_export_mulit_table_to_excel_244b8f9d_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_mulit_table_to_excel_244b8f9d_dl.json&style=flat) | ![post_export_mulit_table_to_excel_244b8f9d_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_export_mulit_table_to_excel_244b8f9d_vw.json&style=flat) | 7 | 6 | 2026-02-10 | -| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | 1.2.4 | ![post_markdown_normalizer_baaa8732_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_markdown_normalizer_baaa8732_dl.json&style=flat) | ![post_markdown_normalizer_baaa8732_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_markdown_normalizer_baaa8732_vw.json&style=flat) | 17 | 30 | 2026-01-29 | -| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | ![post_flash_card_65a2ea8f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_flash_card_65a2ea8f_dl.json&style=flat) | ![post_flash_card_65a2ea8f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_flash_card_65a2ea8f_vw.json&style=flat) | 13 | 14 | 2026-01-29 | -| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | | ![post_ai_task_instruction_generator_9bab8b37_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_ai_task_instruction_generator_9bab8b37_dl.json&style=flat) | ![post_ai_task_instruction_generator_9bab8b37_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_ai_task_instruction_generator_9bab8b37_vw.json&style=flat) | 9 | 6 | 2026-01-28 | -| 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | 1.0.0 | ![post_deep_dive_c0b846e4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_deep_dive_c0b846e4_dl.json&style=flat) | ![post_deep_dive_c0b846e4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_deep_dive_c0b846e4_vw.json&style=flat) | 6 | 11 | 2026-01-08 | -| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.4 | ![post_导出为_word_支持公式流程图表格和代码块_8a6306c0_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%AF%BC%E5%87%BA%E4%B8%BA_word_%E6%94%AF%E6%8C%81%E5%85%AC%E5%BC%8F%E6%B5%81%E7%A8%8B%E5%9B%BE%E8%A1%A8%E6%A0%BC%E5%92%8C%E4%BB%A3%E7%A0%81%E5%9D%97_8a6306c0_dl.json&style=flat) | ![post_导出为_word_支持公式流程图表格和代码块_8a6306c0_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%AF%BC%E5%87%BA%E4%B8%BA_word_%E6%94%AF%E6%8C%81%E5%85%AC%E5%BC%8F%E6%B5%81%E7%A8%8B%E5%9B%BE%E8%A1%A8%E6%A0%BC%E5%92%8C%E4%BB%A3%E7%A0%81%E5%9D%97_8a6306c0_vw.json&style=flat) | 13 | 7 | 2026-02-07 | -| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | 0.6.2 | ![post_github_copilot_official_sdk_pipe_ce96f7b4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_official_sdk_pipe_ce96f7b4_dl.json&style=flat) | ![post_github_copilot_official_sdk_pipe_ce96f7b4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_official_sdk_pipe_ce96f7b4_vw.json&style=flat) | 14 | 9 | 2026-02-10 | -| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | 0.1.0 | ![post_folder_memory_auto_evolving_project_context_4a9875b2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_folder_memory_auto_evolving_project_context_4a9875b2_dl.json&style=flat) | ![post_folder_memory_auto_evolving_project_context_4a9875b2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_folder_memory_auto_evolving_project_context_4a9875b2_vw.json&style=flat) | 6 | 8 | 2026-01-20 | -| 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.5.0 | ![post_智能信息图_e04a48ff_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E4%BF%A1%E6%81%AF%E5%9B%BE_e04a48ff_dl.json&style=flat) | ![post_智能信息图_e04a48ff_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E4%BF%A1%E6%81%AF%E5%9B%BE_e04a48ff_vw.json&style=flat) | 10 | 1 | 2026-01-29 | -| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.9.2 | ![post_智能生成交互式思维导图帮助用户可视化知识_8d4b097b_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E7%94%9F%E6%88%90%E4%BA%A4%E4%BA%92%E5%BC%8F%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%E5%B8%AE%E5%8A%A9%E7%94%A8%E6%88%B7%E5%8F%AF%E8%A7%86%E5%8C%96%E7%9F%A5%E8%AF%86_8d4b097b_dl.json&style=flat) | ![post_智能生成交互式思维导图帮助用户可视化知识_8d4b097b_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E6%99%BA%E8%83%BD%E7%94%9F%E6%88%90%E4%BA%A4%E4%BA%92%E5%BC%8F%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%E5%B8%AE%E5%8A%A9%E7%94%A8%E6%88%B7%E5%8F%AF%E8%A7%86%E5%8C%96%E7%9F%A5%E8%AF%86_8d4b097b_vw.json&style=flat) | 6 | 2 | 2026-01-29 | -| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | 1.2.2 | ![post_异步上下文压缩_5c0617cb_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%BC%82%E6%AD%A5%E4%B8%8A%E4%B8%8B%E6%96%87%E5%8E%8B%E7%BC%A9_5c0617cb_dl.json&style=flat) | ![post_异步上下文压缩_5c0617cb_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E5%BC%82%E6%AD%A5%E4%B8%8A%E4%B8%8B%E6%96%87%E5%8E%8B%E7%BC%A9_5c0617cb_vw.json&style=flat) | 7 | 5 | 2026-01-29 | -| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.4 | ![post_闪记卡生成插件_4a31eac3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E9%97%AA%E8%AE%B0%E5%8D%A1%E7%94%9F%E6%88%90%E6%8F%92%E4%BB%B6_4a31eac3_dl.json&style=flat) | ![post_闪记卡生成插件_4a31eac3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E9%97%AA%E8%AE%B0%E5%8D%A1%E7%94%9F%E6%88%90%E6%8F%92%E4%BB%B6_4a31eac3_vw.json&style=flat) | 8 | 1 | 2026-01-29 | -| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | 1.0.0 | ![post_精读_99830b0f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E7%B2%BE%E8%AF%BB_99830b0f_dl.json&style=flat) | ![post_精读_99830b0f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_%E7%B2%BE%E8%AF%BB_99830b0f_vw.json&style=flat) | 5 | 1 | 2026-01-08 | -| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | 0.1.2 | ![post_github_copilot_sdk_files_filter_403a62ee_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_files_filter_403a62ee_dl.json&style=flat) | ![post_github_copilot_sdk_files_filter_403a62ee_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_files_filter_403a62ee_vw.json&style=flat) | 3 | 0 | 2026-02-10 | -| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | | ![post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_dl.json&style=flat) | ![post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293_vw.json&style=flat) | 5 | 0 | 2026-02-10 | -| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | | ![post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_dl.json&style=flat) | ![post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e_vw.json&style=flat) | 12 | 19 | 2026-01-29 | -| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | | ![post_review_of_claude_haiku_45_41b0db39_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_review_of_claude_haiku_45_41b0db39_dl.json&style=flat) | ![post_review_of_claude_haiku_45_41b0db39_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_review_of_claude_haiku_45_41b0db39_vw.json&style=flat) | 2 | 0 | 2026-01-14 | -| 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | | ![post_debug_open_webui_plugins_in_your_browser_81bf7960_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_debug_open_webui_plugins_in_your_browser_81bf7960_dl.json&style=flat) | ![post_debug_open_webui_plugins_in_your_browser_81bf7960_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_debug_open_webui_plugins_in_your_browser_81bf7960_vw.json&style=flat) | 14 | 10 | 2026-01-10 | +| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![post_207cd433d27fdd853ccbfa941e6fa67f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_207cd433d27fdd853ccbfa941e6fa67f_dl.json&style=flat) | ![post_207cd433d27fdd853ccbfa941e6fa67f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_207cd433d27fdd853ccbfa941e6fa67f_vw.json&style=flat) | ![post_207cd433d27fdd853ccbfa941e6fa67f_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_207cd433d27fdd853ccbfa941e6fa67f_up.json&style=flat) | ![post_207cd433d27fdd853ccbfa941e6fa67f_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_207cd433d27fdd853ccbfa941e6fa67f_sv.json&style=flat) | 2026-01-29 | +| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | ![v](https://img.shields.io/badge/v-1.5.0-blue?style=flat) | ![post_376135b87514e63570283b2057459b1f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_376135b87514e63570283b2057459b1f_dl.json&style=flat) | ![post_376135b87514e63570283b2057459b1f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_376135b87514e63570283b2057459b1f_vw.json&style=flat) | ![post_376135b87514e63570283b2057459b1f_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_376135b87514e63570283b2057459b1f_up.json&style=flat) | ![post_376135b87514e63570283b2057459b1f_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_376135b87514e63570283b2057459b1f_sv.json&style=flat) | 2026-01-31 | +| 3 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | ![v](https://img.shields.io/badge/v-0.4.4-blue?style=flat) | ![post_dc072f01690dc8293384153dc0231d05_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_dc072f01690dc8293384153dc0231d05_dl.json&style=flat) | ![post_dc072f01690dc8293384153dc0231d05_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_dc072f01690dc8293384153dc0231d05_vw.json&style=flat) | ![post_dc072f01690dc8293384153dc0231d05_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_dc072f01690dc8293384153dc0231d05_up.json&style=flat) | ![post_dc072f01690dc8293384153dc0231d05_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_dc072f01690dc8293384153dc0231d05_sv.json&style=flat) | 2026-02-07 | +| 4 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | ![v](https://img.shields.io/badge/v-1.2.2-blue?style=flat) | ![post_0640a7ef0970872217cb939f2ba9c12c_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0640a7ef0970872217cb939f2ba9c12c_dl.json&style=flat) | ![post_0640a7ef0970872217cb939f2ba9c12c_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0640a7ef0970872217cb939f2ba9c12c_vw.json&style=flat) | ![post_0640a7ef0970872217cb939f2ba9c12c_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0640a7ef0970872217cb939f2ba9c12c_up.json&style=flat) | ![post_0640a7ef0970872217cb939f2ba9c12c_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0640a7ef0970872217cb939f2ba9c12c_sv.json&style=flat) | 2026-01-29 | +| 5 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | ![v](https://img.shields.io/badge/v-0.3.7-blue?style=flat) | ![post_c5ae05d46c7b999a1e36ca1457f1926b_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5ae05d46c7b999a1e36ca1457f1926b_dl.json&style=flat) | ![post_c5ae05d46c7b999a1e36ca1457f1926b_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5ae05d46c7b999a1e36ca1457f1926b_vw.json&style=flat) | ![post_c5ae05d46c7b999a1e36ca1457f1926b_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5ae05d46c7b999a1e36ca1457f1926b_up.json&style=flat) | ![post_c5ae05d46c7b999a1e36ca1457f1926b_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5ae05d46c7b999a1e36ca1457f1926b_sv.json&style=flat) | 2026-02-10 | +| 6 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![post_a963da7c5d914310e7026b8c8a6635b0_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a963da7c5d914310e7026b8c8a6635b0_dl.json&style=flat) | ![post_a963da7c5d914310e7026b8c8a6635b0_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a963da7c5d914310e7026b8c8a6635b0_vw.json&style=flat) | ![post_a963da7c5d914310e7026b8c8a6635b0_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a963da7c5d914310e7026b8c8a6635b0_up.json&style=flat) | ![post_a963da7c5d914310e7026b8c8a6635b0_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a963da7c5d914310e7026b8c8a6635b0_sv.json&style=flat) | 2026-01-29 | +| 7 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action | ![v](https://img.shields.io/badge/v-0.2.4-blue?style=flat) | ![post_5cf7a5dad74ef15ee4ffc6fe10da8213_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_5cf7a5dad74ef15ee4ffc6fe10da8213_dl.json&style=flat) | ![post_5cf7a5dad74ef15ee4ffc6fe10da8213_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_5cf7a5dad74ef15ee4ffc6fe10da8213_vw.json&style=flat) | ![post_5cf7a5dad74ef15ee4ffc6fe10da8213_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_5cf7a5dad74ef15ee4ffc6fe10da8213_up.json&style=flat) | ![post_5cf7a5dad74ef15ee4ffc6fe10da8213_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_5cf7a5dad74ef15ee4ffc6fe10da8213_sv.json&style=flat) | 2026-01-29 | +| 8 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt | ![v](https://img.shields.io/badge/v-N/A-gray?style=flat) | ![post_19f469a02b32d21f86b16d1395a81317_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_19f469a02b32d21f86b16d1395a81317_dl.json&style=flat) | ![post_19f469a02b32d21f86b16d1395a81317_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_19f469a02b32d21f86b16d1395a81317_vw.json&style=flat) | ![post_19f469a02b32d21f86b16d1395a81317_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_19f469a02b32d21f86b16d1395a81317_up.json&style=flat) | ![post_19f469a02b32d21f86b16d1395a81317_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_19f469a02b32d21f86b16d1395a81317_sv.json&style=flat) | 2026-01-28 | +| 9 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action | ![v](https://img.shields.io/badge/v-1.0.0-blue?style=flat) | ![post_78e3480de4e6bd4615498495c5d15979_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_78e3480de4e6bd4615498495c5d15979_dl.json&style=flat) | ![post_78e3480de4e6bd4615498495c5d15979_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_78e3480de4e6bd4615498495c5d15979_vw.json&style=flat) | ![post_78e3480de4e6bd4615498495c5d15979_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_78e3480de4e6bd4615498495c5d15979_up.json&style=flat) | ![post_78e3480de4e6bd4615498495c5d15979_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_78e3480de4e6bd4615498495c5d15979_sv.json&style=flat) | 2026-01-08 | +| 10 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | ![v](https://img.shields.io/badge/v-0.4.4-blue?style=flat) | ![post_fc4cbdf0eb78bd98c2ed7650d459b59e_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fc4cbdf0eb78bd98c2ed7650d459b59e_dl.json&style=flat) | ![post_fc4cbdf0eb78bd98c2ed7650d459b59e_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fc4cbdf0eb78bd98c2ed7650d459b59e_vw.json&style=flat) | ![post_fc4cbdf0eb78bd98c2ed7650d459b59e_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fc4cbdf0eb78bd98c2ed7650d459b59e_up.json&style=flat) | ![post_fc4cbdf0eb78bd98c2ed7650d459b59e_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fc4cbdf0eb78bd98c2ed7650d459b59e_sv.json&style=flat) | 2026-02-07 | +| 11 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe | ![v](https://img.shields.io/badge/v-0.6.2-blue?style=flat) | ![post_aef940e01073e811a311c3a443d9c149_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_aef940e01073e811a311c3a443d9c149_dl.json&style=flat) | ![post_aef940e01073e811a311c3a443d9c149_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_aef940e01073e811a311c3a443d9c149_vw.json&style=flat) | ![post_aef940e01073e811a311c3a443d9c149_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_aef940e01073e811a311c3a443d9c149_up.json&style=flat) | ![post_aef940e01073e811a311c3a443d9c149_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_aef940e01073e811a311c3a443d9c149_sv.json&style=flat) | 2026-02-10 | +| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter | ![v](https://img.shields.io/badge/v-0.1.0-blue?style=flat) | ![post_a125b3a3702a07c86c77668dcede2149_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a125b3a3702a07c86c77668dcede2149_dl.json&style=flat) | ![post_a125b3a3702a07c86c77668dcede2149_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a125b3a3702a07c86c77668dcede2149_vw.json&style=flat) | ![post_a125b3a3702a07c86c77668dcede2149_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a125b3a3702a07c86c77668dcede2149_up.json&style=flat) | ![post_a125b3a3702a07c86c77668dcede2149_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_a125b3a3702a07c86c77668dcede2149_sv.json&style=flat) | 2026-01-20 | +| 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | ![v](https://img.shields.io/badge/v-1.5.0-blue?style=flat) | ![post_0c3f8621f77a9d5875d3c26ee38a3954_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0c3f8621f77a9d5875d3c26ee38a3954_dl.json&style=flat) | ![post_0c3f8621f77a9d5875d3c26ee38a3954_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0c3f8621f77a9d5875d3c26ee38a3954_vw.json&style=flat) | ![post_0c3f8621f77a9d5875d3c26ee38a3954_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0c3f8621f77a9d5875d3c26ee38a3954_up.json&style=flat) | ![post_0c3f8621f77a9d5875d3c26ee38a3954_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_0c3f8621f77a9d5875d3c26ee38a3954_sv.json&style=flat) | 2026-01-29 | +| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![post_c5bfbfd0d29694a04c597e26202b824f_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5bfbfd0d29694a04c597e26202b824f_dl.json&style=flat) | ![post_c5bfbfd0d29694a04c597e26202b824f_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5bfbfd0d29694a04c597e26202b824f_vw.json&style=flat) | ![post_c5bfbfd0d29694a04c597e26202b824f_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5bfbfd0d29694a04c597e26202b824f_up.json&style=flat) | ![post_c5bfbfd0d29694a04c597e26202b824f_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c5bfbfd0d29694a04c597e26202b824f_sv.json&style=flat) | 2026-01-29 | +| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action | ![v](https://img.shields.io/badge/v-1.2.2-blue?style=flat) | ![post_fa447e583483020bc1bf35e74302c75c_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fa447e583483020bc1bf35e74302c75c_dl.json&style=flat) | ![post_fa447e583483020bc1bf35e74302c75c_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fa447e583483020bc1bf35e74302c75c_vw.json&style=flat) | ![post_fa447e583483020bc1bf35e74302c75c_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fa447e583483020bc1bf35e74302c75c_up.json&style=flat) | ![post_fa447e583483020bc1bf35e74302c75c_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_fa447e583483020bc1bf35e74302c75c_sv.json&style=flat) | 2026-01-29 | +| 16 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | ![v](https://img.shields.io/badge/v-0.2.4-blue?style=flat) | ![post_c68a2593e76ec324361358575b6501de_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c68a2593e76ec324361358575b6501de_dl.json&style=flat) | ![post_c68a2593e76ec324361358575b6501de_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c68a2593e76ec324361358575b6501de_vw.json&style=flat) | ![post_c68a2593e76ec324361358575b6501de_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c68a2593e76ec324361358575b6501de_up.json&style=flat) | ![post_c68a2593e76ec324361358575b6501de_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_c68a2593e76ec324361358575b6501de_sv.json&style=flat) | 2026-01-29 | +| 17 | [精读](https://openwebui.com/posts/精读_99830b0f) | action | ![v](https://img.shields.io/badge/v-1.0.0-blue?style=flat) | ![post_14a3b01bc6559558b48a61a56dd3635d_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_14a3b01bc6559558b48a61a56dd3635d_dl.json&style=flat) | ![post_14a3b01bc6559558b48a61a56dd3635d_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_14a3b01bc6559558b48a61a56dd3635d_vw.json&style=flat) | ![post_14a3b01bc6559558b48a61a56dd3635d_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_14a3b01bc6559558b48a61a56dd3635d_up.json&style=flat) | ![post_14a3b01bc6559558b48a61a56dd3635d_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_14a3b01bc6559558b48a61a56dd3635d_sv.json&style=flat) | 2026-01-08 | +| 18 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter | ![v](https://img.shields.io/badge/v-0.1.2-blue?style=flat) | ![post_68081377a06a5746efe798136a72c6b6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_68081377a06a5746efe798136a72c6b6_dl.json&style=flat) | ![post_68081377a06a5746efe798136a72c6b6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_68081377a06a5746efe798136a72c6b6_vw.json&style=flat) | ![post_68081377a06a5746efe798136a72c6b6_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_68081377a06a5746efe798136a72c6b6_up.json&style=flat) | ![post_68081377a06a5746efe798136a72c6b6_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_68081377a06a5746efe798136a72c6b6_sv.json&style=flat) | 2026-02-10 | +| 19 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post | ![v](https://img.shields.io/badge/v-N/A-gray?style=flat) | ![post_42a11f4f094a0fa757bfefece51b1180_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_42a11f4f094a0fa757bfefece51b1180_dl.json&style=flat) | ![post_42a11f4f094a0fa757bfefece51b1180_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_42a11f4f094a0fa757bfefece51b1180_vw.json&style=flat) | ![post_42a11f4f094a0fa757bfefece51b1180_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_42a11f4f094a0fa757bfefece51b1180_up.json&style=flat) | ![post_42a11f4f094a0fa757bfefece51b1180_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_42a11f4f094a0fa757bfefece51b1180_sv.json&style=flat) | 2026-02-10 | +| 20 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post | ![v](https://img.shields.io/badge/v-N/A-gray?style=flat) | ![post_858cb162732370288ce024b4f7944f69_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_858cb162732370288ce024b4f7944f69_dl.json&style=flat) | ![post_858cb162732370288ce024b4f7944f69_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_858cb162732370288ce024b4f7944f69_vw.json&style=flat) | ![post_858cb162732370288ce024b4f7944f69_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_858cb162732370288ce024b4f7944f69_up.json&style=flat) | ![post_858cb162732370288ce024b4f7944f69_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_858cb162732370288ce024b4f7944f69_sv.json&style=flat) | 2026-01-29 | +| 21 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review | ![v](https://img.shields.io/badge/v-N/A-gray?style=flat) | ![post_8db923aec1f58d282a2334db388aa5c2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_8db923aec1f58d282a2334db388aa5c2_dl.json&style=flat) | ![post_8db923aec1f58d282a2334db388aa5c2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_8db923aec1f58d282a2334db388aa5c2_vw.json&style=flat) | ![post_8db923aec1f58d282a2334db388aa5c2_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_8db923aec1f58d282a2334db388aa5c2_up.json&style=flat) | ![post_8db923aec1f58d282a2334db388aa5c2_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_8db923aec1f58d282a2334db388aa5c2_sv.json&style=flat) | 2026-01-14 | +| 22 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post | ![v](https://img.shields.io/badge/v-N/A-gray?style=flat) | ![post_e38b91e43262d29106345acfcd9dffba_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_e38b91e43262d29106345acfcd9dffba_dl.json&style=flat) | ![post_e38b91e43262d29106345acfcd9dffba_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_e38b91e43262d29106345acfcd9dffba_vw.json&style=flat) | ![post_e38b91e43262d29106345acfcd9dffba_up](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_e38b91e43262d29106345acfcd9dffba_up.json&style=flat) | ![post_e38b91e43262d29106345acfcd9dffba_sv](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_post_e38b91e43262d29106345acfcd9dffba_sv.json&style=flat) | 2026-01-10 | diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index a42f74f..5625ede 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -504,6 +504,12 @@ class OpenWebUIStats: print("=" * 60) + def _safe_key(self, key: str) -> str: + """生成安全的文件名 Key (MD5 hash) 以避免中文字符问题""" + import hashlib + + return hashlib.md5(key.encode("utf-8")).hexdigest() + def generate_markdown(self, stats: dict, lang: str = "zh") -> str: """ 生成 Markdown 格式报告 (全动态徽章与 Kroki 图表) @@ -582,7 +588,6 @@ class OpenWebUIStats: f"| {t['upvotes']} | {self.get_badge('upvotes', stats, user, delta)} |" ) md.append(f"| {t['saves']} | {self.get_badge('saves', stats, user, delta)} |") - md.append(f"| {t['saves']} | {self.get_badge('saves', stats, user, delta)} |") # 作者信息 if user: @@ -610,20 +615,33 @@ class OpenWebUIStats: for i, post in enumerate(stats["posts"], 1): title_link = f"[{post['title']}]({post['url']})" - slug = post["slug"] + slug_hash = self._safe_key(post["slug"]) - # 使用针对每个帖子的动态徽章 + # 使用针对每个帖子的动态徽章 (使用 Hash 保证文件名安全) dl_badge = self.get_badge( - f"post_{slug}_dl", stats, user, delta, is_post=True + f"post_{slug_hash}_dl", stats, user, delta, is_post=True ) vw_badge = self.get_badge( - f"post_{slug}_vw", stats, user, delta, is_post=True + f"post_{slug_hash}_vw", stats, user, delta, is_post=True + ) + up_badge = self.get_badge( + f"post_{slug_hash}_up", stats, user, delta, is_post=True + ) + sv_badge = self.get_badge( + f"post_{slug_hash}_sv", stats, user, delta, is_post=True + ) + + # 版本号使用静态 Shields.io 徽章 + ver = post["version"] if post["version"] else "N/A" + ver_color = "blue" if post["version"] else "gray" + ver_badge = ( + f"![v](https://img.shields.io/badge/v-{ver}-{ver_color}?style=flat)" ) md.append( - f"| {i} | {title_link} | {post['type']} | {post['version']} | " - f"{dl_badge} | {vw_badge} | {post['upvotes']} | " - f"{post['saves']} | {post['updated_at']} |" + f"| {i} | {title_link} | {post['type']} | {ver_badge} | " + f"{dl_badge} | {vw_badge} | {up_badge} | " + f"{sv_badge} | {post['updated_at']} |" ) md.append("") @@ -793,16 +811,18 @@ class OpenWebUIStats: ) } + # 生成所有帖子的个体徽章 (用于详细报表) # 生成所有帖子的个体徽章 (用于详细报表) for post in stats.get("posts", []): - slug = post["slug"] - diff = post_deltas.get(slug, 0) + slug_hash = self._safe_key(post["slug"]) + diff = post_deltas.get(post["slug"], 0) + # 1. Downloads dl_msg = f"{post['downloads']}" if diff > 0: dl_msg += f" (+{diff}🚀)" - files_payload[f"badge_post_{slug}_dl.json"] = { + files_payload[f"badge_post_{slug_hash}_dl.json"] = { "content": json.dumps( { "schemaVersion": 1, @@ -812,7 +832,9 @@ class OpenWebUIStats: } ) } - files_payload[f"badge_post_{slug}_vw.json"] = { + + # 2. Views + files_payload[f"badge_post_{slug_hash}_vw.json"] = { "content": json.dumps( { "schemaVersion": 1, @@ -823,6 +845,30 @@ class OpenWebUIStats: ) } + # 3. Upvotes + files_payload[f"badge_post_{slug_hash}_up.json"] = { + "content": json.dumps( + { + "schemaVersion": 1, + "label": "Upvotes", + "message": f"{post['upvotes']}", + "color": "orange", + } + ) + } + + # 4. Saves + files_payload[f"badge_post_{slug_hash}_sv.json"] = { + "content": json.dumps( + { + "schemaVersion": 1, + "label": "Saves", + "message": f"{post['saves']}", + "color": "lightgrey", + } + ) + } + # 将生成的 Markdown 报告也作为一个普通 JSON 文件上传到 Gist for lang in ["zh", "en"]: report_content = self.generate_markdown(stats, lang=lang) From fc56ea7faa88b3f610c33f49a407fa99ce2b02a3 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:46:24 +0800 Subject: [PATCH 21/47] style: move activity chart to bottom and use vega-lite for better visuals --- README.md | 10 ++- README_CN.md | 10 ++- scripts/openwebui_stats.py | 143 +++++++++++++++++++++++++------------ 3 files changed, 111 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 8788292..b53b709 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats -> 🕐 Auto-updated: 2026-02-11 12:41 +> 🕐 Auto-updated: 2026-02-11 12:46 | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | :---: | :---: | :---: | :---: | @@ -17,8 +17,6 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | :---: | :---: | :---: | :---: | :---: | | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | -![Downloads Trend](https://kroki.io/mermaid/svg/eNpdzr8KgzAQx_G9T3FkakEhydn82X0EN3FIa6BCUNBA9e17aq9DM3z5EG74rdvzFeZcPmIOF6CXh5wiiGbKIUE9vcc0hX6BZo5jD1dVQR225SaO27UM67BAK6QqtRcF7EDJUAd0KX_QDGRUjDvDMCzDMfwXSjKU6I4l27nkf_Y5Mw1jhFZbJwvQzlqqt74AlEg_qIyjajRUtBX1rjXVGKTa49LZ_cd7uqkUqr1Gdh_PIkZl) - ### 🔥 Top 6 Popular Plugins | Rank | Plugin | Version | Downloads | Views | Updated | | :---: | :--- | :---: | :---: | :---: | :---: | @@ -156,6 +154,12 @@ If you have great prompts or plugins to share: [Contributing](./CONTRIBUTING.md) + + +### 📈 Total Downloads Trend (14 Days) +![Activity](https://kroki.io/vegalite/svg/eNqNk82O2yAQgF_FcnelVmoSgxNs59p9hL1Ve5gYbNNg8AL5U5R3L5A4SoNX6sVmhm9-mTmnL6buWA_pOkk7awezXiz2rIV5y22328y5WlyBoJ0Jbtliv5r_MUqmP5OUMlNrPljuROfhXVkQyZs6SKGAmuRdM0mT72iZvMHJ_PAWB05t59gyy5zUMd521ok4iANQymXr5JWTNlBvW612knrfVoM0AziP1vuplWy4J8_pnrNDOBir1ZY9wxdHw5GbgFDVA_e5NiAMczet5nQULx6lYOHqFsSOeavfZ68MfnGGySxDM1yF6sdCfQFFmTnzGM2zCC2LYhpFEVoV1QSKHf2M5lmeTaM4QhEpp9E8QnFOptFlhObFchpdRegK42mURCgh-TRaRGjxVbPKCC2LLxKIHjavqukOoOhhlyhH0yiKUZJdPvy89aC3Yd7saQhGbmrB44JLFi5qJZT2N9_wiuRsEyZ6VJ7TI3I_5FSn8XDEo8YfsjDlQLlfhvXVL2gfwVg13AZcNY1h9kbfAx46t-9pKOkOoEfgntFH2B0ma3VbYJdX-DacibC_oSeOGcu0rB-UBpE-rmejdA8hy9d-9koDz63wBnInhO8KbJj4dY9PCElD6NNTtHuvH0J-7kA6d2D5nv0T9n9iXC5_AX_keeA=) + + ## Contributors ✨ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): diff --git a/README_CN.md b/README_CN.md index 2e47788..a8e49cc 100644 --- a/README_CN.md +++ b/README_CN.md @@ -6,7 +6,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ## 📊 社区统计 -> 🕐 自动更新于 2026-02-11 12:41 +> 🕐 自动更新于 2026-02-11 12:46 | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | :---: | :---: | :---: | :---: | @@ -16,8 +16,6 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 | :---: | :---: | :---: | :---: | :---: | | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | -![Downloads Trend](https://kroki.io/mermaid/svg/eNo9zr1qAkEQwPHepxi2SuAOdnfO_eh9hHRisTEHOTg80AXPLl1AC59BsLExTZBAkLxMNJe3cO50nOLPj2GKqRfj1zCN6XMeQw9oYhHLHMT57fv3a9Ucj__v67_Pj2a_aQ6r0_IHHlR22u4eRXdcp6EuZjAUUqXaiwRaoGSoDjqVd2gGMjJGn2EYluEY_gYlGUqMuk8W10_EUxVDCYNqPimr8DK7vlkWkxyG2jqZgHbWUr31CaBE2qAyjqrRUNFm1L7WVGOQartLZ9uN93STKVRtjRxdAOxIUHs=) - ### 🔥 热门插件 Top 6 | 排名 | 插件 | 版本 | 下载 | 浏览 | 更新日期 | | :---: | :--- | :---: | :---: | :---: | :---: | @@ -134,3 +132,9 @@ Open WebUI 的前端增强扩展: 本项目是一个资源集合,无需安装 Python 环境。你只需要下载对应的文件并导入到你的 OpenWebUI 实例中即可。 [贡献指南](./CONTRIBUTING_CN.md) | [更新日志](./CHANGELOG.md) + + + +### 📈 总下载量累计趋势 (14天) +![Activity](https://kroki.io/vegalite/svg/eNqNlN2ymyAQx1_ljO2ZaWeaBDCi5raP0ZyLVVBpUKxiPiaTd-9CPiYNnpneILv82D8su56jr2PZyBaizVvUWNuPm9VqL2tY1so2U7FUZnUFvHehlZWrfbL8PZou-vEWCTmWg-qtQhMjbCdO4mI7rSXBMatSsZ1yWlbbKRUMx6wAiqPIcDVhRfX2ja5xlrP8u4t2UMI2GCcjBK1GqrqxaDJv9iCE6mq0E7QKKHf1YKZOOF07QDf2MMjOujil6SrlyHO0V_LgJ6MdzE6-whek4ahGjwjTgnL3qECPElfqQYm7eXGoAAvXsKAn6Xb9Ojunj8sI4wtCFyz3mTGHThsQDmJpRnB7iMYkQLM0nUdpgOZpPoMypF_RmMRkHmUBSnk2j8YBymI-j64DNE7X82gSoAlj8ygPUM7jeTQN0PSzZGUBmqWfHCB42DjP5zNAg4dd05jOozREObl8uHprYdj5erOn3m_CqgWHa9VJv1AabQa38oUlPJaFr-i78xwdKX4ouk73yZHdPW5CfJWDUK4ZNte4MDiF0Zr-VuCmqkZpb_RD8NDgvyDyV3oA9Bl4nOjD947sSnNrYDyXHyslte9fnxNk7te0su3NADp6bs_KDC34U763i3fheWW129BNWrusQCH1z4c-5zzy0qcXtUeunyT_TNBhOLBqL_-R_R-Ny-Uvk9GByw==) + \ No newline at end of file diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 5625ede..89f1c9e 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -999,39 +999,6 @@ class OpenWebUIStats: ) lines.append("") - # 插入总下载量趋势图 (仅 README 使用) - history = self.load_history() - if len(history) >= 3: - # 辅助函数:Kroki 渲染 - def kroki_render(mermaid_code: str) -> str: - try: - compressed = zlib.compress(mermaid_code.encode("utf-8"), level=9) - encoded = base64.urlsafe_b64encode(compressed).decode("utf-8") - return f"https://kroki.io/mermaid/svg/{encoded}" - except: - return "" - - data = history[-14:] # 取最近14天 - dates = [item["date"][-5:] for item in data] - dates_str = ", ".join([f'"{d}"' for d in dates]) - dls = [str(item["total_downloads"]) for item in data] - - # 多语言标题 - chart_titles = { - "zh": "总下载量累计趋势 (14天)", - "en": "Total Downloads Trend (14 Days)", - } - c_title = chart_titles.get(lang, chart_titles["en"]) - - mm = f"""xychart-beta - title "{c_title}" - x-axis [{dates_str}] - y-axis "Total Downloads" - line [{', '.join(dls)}]""" - - lines.append(f"![Downloads Trend]({kroki_render(mm)})") - lines.append("") - # Top 6 热门插件 lines.append(t["top6_title"]) lines.append(t["top6_header"]) @@ -1077,50 +1044,134 @@ class OpenWebUIStats: pattern = r".*?" if re.search(pattern, content, re.DOTALL): # 替换现有区域 - new_content = re.sub(pattern, new_stats, content, flags=re.DOTALL) + content = re.sub(pattern, new_stats, content, flags=re.DOTALL) else: # 在简介段落之后插入统计区域 - # 查找模式:标题 -> 语言切换行 -> 简介段落 -> 插入位置 lines = content.split("\n") insert_pos = 0 found_intro = False for i, line in enumerate(lines): - # 跳过标题 if line.startswith("# "): continue - # 跳过空行 if line.strip() == "": continue - # 跳过语言切换行 (如 "English | [中文]" 或 "[English] | 中文") if ("English" in line or "中文" in line) and "|" in line: continue - # 找到第一个非空、非标题、非语言切换的段落(简介) if not found_intro: found_intro = True - # 继续到这个段落结束 continue - # 简介段落后的空行或下一个标题就是插入位置 if line.strip() == "" or line.startswith("#"): insert_pos = i break - # 如果没找到合适位置,就放在第3行(标题和语言切换后) if insert_pos == 0: insert_pos = 3 - - # 在适当位置插入 lines.insert(insert_pos, "") lines.insert(insert_pos + 1, new_stats) lines.insert(insert_pos + 2, "") - new_content = "\n".join(lines) + content = "\n".join(lines) + + # 生成并插入/更新底部趋势图 (Vega-Lite) + activity_chart = self.generate_activity_chart(lang) + if activity_chart: + chart_pattern = ( + r".*?" + ) + chart_section = f"\n{activity_chart}\n" + + if re.search(chart_pattern, content, re.DOTALL): + content = re.sub(chart_pattern, chart_section, content, flags=re.DOTALL) + else: + # 尝试插入到 Contributors 之前 + contributors_pattern = r"(## .*Contributors.*)" + match = re.search(contributors_pattern, content, re.IGNORECASE) + if match: + content = ( + content[: match.start()] + + f"\n{chart_section}\n\n" + + content[match.start() :] + ) + else: + content += f"\n\n{chart_section}" # 写回文件 with open(readme_path, "w", encoding="utf-8") as f: - f.write(new_content) + f.write(content) print(f"✅ README 已更新: {readme_path}") + def generate_activity_chart(self, lang: str = "zh") -> str: + """生成 Vega-Lite 趋势图 (更美观)""" + history = self.load_history() + if len(history) < 3: + return "" + + data = history[-14:] + + # 准备数据点 + values = [] + for item in data: + values.append({"date": item["date"], "downloads": item["total_downloads"]}) + + title = ( + "Total Downloads Trend (14 Days)" + if lang == "en" + else "总下载量累计趋势 (14天)" + ) + + # Vega-Lite Spec + vl_spec = { + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "description": title, + "width": 800, + "height": 200, + "padding": 5, + "background": "transparent", + "config": { + "view": {"stroke": "transparent"}, + "axis": {"domain": False, "grid": False}, + }, + "data": {"values": values}, + "mark": { + "type": "area", + "line": {"color": "#2563eb"}, + "color": { + "x1": 1, + "y1": 1, + "x2": 1, + "y2": 0, + "gradient": "linear", + "stops": [ + {"offset": 0, "color": "white"}, + {"offset": 1, "color": "#2563eb"}, + ], + }, + }, + "encoding": { + "x": { + "field": "date", + "type": "temporal", + "axis": {"format": "%m-%d", "title": None, "labelColor": "#666"}, + }, + "y": { + "field": "downloads", + "type": "quantitative", + "axis": {"title": None, "labelColor": "#666"}, + }, + }, + } + + try: + # Kroki encoding for Vega-Lite + json_spec = json.dumps(vl_spec) + compressed = zlib.compress(json_spec.encode("utf-8"), level=9) + encoded = base64.urlsafe_b64encode(compressed).decode("utf-8") + url = f"https://kroki.io/vegalite/svg/{encoded}" + return f"### 📈 {title}\n![Activity]({url})" + except Exception: + return "" + def main(): """主函数""" From 015b0d98ecff9d08df9567c84ef92c62f296dee4 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:52:14 +0800 Subject: [PATCH 22/47] style: embed full-history activity chart into stats section and refine top 6 table --- README.md | 28 +++++++++--------- README_CN.md | 27 +++++++++--------- scripts/openwebui_stats.py | 58 +++++++++++++++++--------------------- 3 files changed, 52 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index b53b709..0293aa5 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats -> 🕐 Auto-updated: 2026-02-11 12:46 +> 🕐 Auto-updated: 2026-02-11 12:51 | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | :---: | :---: | :---: | :---: | @@ -17,15 +17,19 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | :---: | :---: | :---: | :---: | :---: | | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | + +### 📈 Total Downloads Trend +![Activity](https://kroki.io/vegalite/svg/eNqNlsFu2zAMhl8l8Nbb0liULdu9bo_Q27CDEiuxVsXybCVpEeTdR6lN0IU0sEsgSp9Iir8s5px9nTad2evsaZF1IQzT02p1NDv9uLOhO6wfrV-9A2l26Wwwq2P5-HvyffZtkbVm2ox2CBZN9PDsg3aLH_7UO6_bafE8mr6N3Mm2oUOiznO0OmN3XUATkjnotrX9Du0SrbXevOxGf8CN6DGMup8GjX5C9LPx_dZG8pwdrTmlwRRG_2Lu4QvS-tVOCWn9XtuY4Va7yeDKbrTt1bxEtNVBv7vV7mDirp_nOJn8Qg5qmYtlXqYzX4-HS1VR426GVPdkLXOerO7JRpQ8WROyAp5s7kmRC8WiIqdoXfGoIKio-QQEEBTKmQQkQWUhebQgaKH4qgqilChh5liKog2vqiBaCaVmUCKWqNRMBahatSxYFKhaDfASAFWrmTkWELUgn8kViFowdweAqAVQ8hIAUQvkXAWIWlDMfINA1IJSzqBELVDQ8ChRC6qav4SSqAV1xVdAErWgqbgEAOl7VObs24IoEVYK9r4iSoSVIBWPEmGlrAoeJcLKkr2vwLyYUinJo0RYWc0Viwgr62omASKsbBq-AvTRLIQUPCooim_Wr9hz9np8ST0nvA1pE3YuHXFne5MWNt75Ma58wedTmnXqatfJc_Yq4meNU2_XwStcZ-IgT51OtzY2xKd3v3qMEabgh48m57fbyYQP-hbw1GGnz9KRboD4DNwy-pX6p-k3_qOJY17pd2uNSz081QSZ6zGD2Q9-1C773KK3ftzrlOXDfvmQ_jQEG1zc0B-ci1XRa-O-3-IrpbIU-u0u2q3Wn0L-Oege3elgj-afsP8T43L5C23qg4U=) + ### 🔥 Top 6 Popular Plugins -| Rank | Plugin | Version | Downloads | Views | Updated | -| :---: | :--- | :---: | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | 2026-01-29 | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | 2026-01-31 | -| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | 2026-02-07 | -| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | 2026-01-29 | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | 2026-02-10 | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | 2026-01-29 | +| Rank | Plugin | Version | Downloads | Views | +| :---: | :--- | :---: | :---: | :---: | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | ![v](https://img.shields.io/badge/v-1.5.0-blue?style=flat) | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | +| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | ![v](https://img.shields.io/badge/v-0.4.4-blue?style=flat) | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | +| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | ![v](https://img.shields.io/badge/v-1.2.2-blue?style=flat) | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | ![v](https://img.shields.io/badge/v-0.3.7-blue?style=flat) | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | *See full stats and charts in [Community Stats Report](./docs/community-stats.md)* @@ -154,12 +158,6 @@ If you have great prompts or plugins to share: [Contributing](./CONTRIBUTING.md) - - -### 📈 Total Downloads Trend (14 Days) -![Activity](https://kroki.io/vegalite/svg/eNqNk82O2yAQgF_FcnelVmoSgxNs59p9hL1Ve5gYbNNg8AL5U5R3L5A4SoNX6sVmhm9-mTmnL6buWA_pOkk7awezXiz2rIV5y22328y5WlyBoJ0Jbtliv5r_MUqmP5OUMlNrPljuROfhXVkQyZs6SKGAmuRdM0mT72iZvMHJ_PAWB05t59gyy5zUMd521ok4iANQymXr5JWTNlBvW612knrfVoM0AziP1vuplWy4J8_pnrNDOBir1ZY9wxdHw5GbgFDVA_e5NiAMczet5nQULx6lYOHqFsSOeavfZ68MfnGGySxDM1yF6sdCfQFFmTnzGM2zCC2LYhpFEVoV1QSKHf2M5lmeTaM4QhEpp9E8QnFOptFlhObFchpdRegK42mURCgh-TRaRGjxVbPKCC2LLxKIHjavqukOoOhhlyhH0yiKUZJdPvy89aC3Yd7saQhGbmrB44JLFi5qJZT2N9_wiuRsEyZ6VJ7TI3I_5FSn8XDEo8YfsjDlQLlfhvXVL2gfwVg13AZcNY1h9kbfAx46t-9pKOkOoEfgntFH2B0ma3VbYJdX-DacibC_oSeOGcu0rB-UBpE-rmejdA8hy9d-9koDz63wBnInhO8KbJj4dY9PCElD6NNTtHuvH0J-7kA6d2D5nv0T9n9iXC5_AX_keeA=) - - ## Contributors ✨ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): diff --git a/README_CN.md b/README_CN.md index a8e49cc..3337fdb 100644 --- a/README_CN.md +++ b/README_CN.md @@ -6,7 +6,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ## 📊 社区统计 -> 🕐 自动更新于 2026-02-11 12:46 +> 🕐 自动更新于 2026-02-11 12:51 | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | :---: | :---: | :---: | :---: | @@ -16,15 +16,19 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 | :---: | :---: | :---: | :---: | :---: | | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | + +### 📈 总下载量累计趋势 +![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OoZFAinXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h6Lp9-zHbIfD5nSczOZ0Rlveg-7hRNW75ZcEz-WrVC7paJNu1uEAj-WtaR-VKVfLaBug4uTUa7zm0tCvNVps--cNyGao1TKDHtvF96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9AsE-IbQDSliOexp6K1UARJ56XcnSH5PloykSXFPVrRIkyUiBaTJ6p6khPIkSglGS5FGKUJpmU6AAkKhWEmAIZTlLI3mCM15uqoUKUULWDkWx2iVVpUirSjnKygSiwq-UgGsVsnyJApYrQrSEgBWq1o5FiC1gKzkCkgtWLsDgNQCKNISAFIL2FoFkFqQr_wGAakFBVtBkVrAoUqjSC0QZfoSMqQWlCJdAYbUgkqkEgBP36OMJN8WjyJhGU3eV48iYRkwnkaRsIyJPI0iYVmRvK-QeDEZ5yyNImGZWCsWEpaVYiUBJCyrqnQF8KOZU0bTKMWof7NeQs85yOk19hz3PsZNvnPJgPdm0HGhsb2dwso3_3wyXceudp08Z280_Kz91Pv14w2uM-GDxE4nlQkN8fnDr5xChNnZ8bPJ2badtfukbwFPnf8TkMUj3QD6Fbhl9BL7px4a-9nEfV5xbI3uYw-PNfHM9ZhOH0Y7yT772qJbOx1kzPLxsHlUkTeuDxuGpe9DVWSt-5-3-JzzLIZ-v4t2q_WXkH8WOXh30pmj_ifs_8S4XP4CD5SLdw==) + ### 🔥 热门插件 Top 6 -| 排名 | 插件 | 版本 | 下载 | 浏览 | 更新日期 | -| :---: | :--- | :---: | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 0.9.2 | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | 2026-01-29 | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 1.5.0 | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | 2026-01-31 | -| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | 0.4.4 | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | 2026-02-07 | -| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 1.2.2 | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | 2026-01-29 | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 0.3.7 | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | 2026-02-10 | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | 1.2.4 | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | 2026-01-29 | +| 排名 | 插件 | 版本 | 下载 | 浏览 | +| :---: | :--- | :---: | :---: | :---: | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | ![v](https://img.shields.io/badge/v-1.5.0-blue?style=flat) | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | +| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | ![v](https://img.shields.io/badge/v-0.4.4-blue?style=flat) | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | +| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | ![v](https://img.shields.io/badge/v-1.2.2-blue?style=flat) | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | ![v](https://img.shields.io/badge/v-0.3.7-blue?style=flat) | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | *完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)* @@ -133,8 +137,3 @@ Open WebUI 的前端增强扩展: [贡献指南](./CONTRIBUTING_CN.md) | [更新日志](./CHANGELOG.md) - - -### 📈 总下载量累计趋势 (14天) -![Activity](https://kroki.io/vegalite/svg/eNqNlN2ymyAQx1_ljO2ZaWeaBDCi5raP0ZyLVVBpUKxiPiaTd-9CPiYNnpneILv82D8su56jr2PZyBaizVvUWNuPm9VqL2tY1so2U7FUZnUFvHehlZWrfbL8PZou-vEWCTmWg-qtQhMjbCdO4mI7rSXBMatSsZ1yWlbbKRUMx6wAiqPIcDVhRfX2ja5xlrP8u4t2UMI2GCcjBK1GqrqxaDJv9iCE6mq0E7QKKHf1YKZOOF07QDf2MMjOujil6SrlyHO0V_LgJ6MdzE6-whek4ahGjwjTgnL3qECPElfqQYm7eXGoAAvXsKAn6Xb9Ojunj8sI4wtCFyz3mTGHThsQDmJpRnB7iMYkQLM0nUdpgOZpPoMypF_RmMRkHmUBSnk2j8YBymI-j64DNE7X82gSoAlj8ygPUM7jeTQN0PSzZGUBmqWfHCB42DjP5zNAg4dd05jOozREObl8uHprYdj5erOn3m_CqgWHa9VJv1AabQa38oUlPJaFr-i78xwdKX4ouk73yZHdPW5CfJWDUK4ZNte4MDiF0Zr-VuCmqkZpb_RD8NDgvyDyV3oA9Bl4nOjD947sSnNrYDyXHyslte9fnxNk7te0su3NADp6bs_KDC34U763i3fheWW129BNWrusQCH1z4c-5zzy0qcXtUeunyT_TNBhOLBqL_-R_R-Ny-Uvk9GByw==) - \ No newline at end of file diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 89f1c9e..fcb46ed 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -953,7 +953,7 @@ class OpenWebUIStats: "author_header": "| 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 |", "header": "| 📝 发布 | ⬇️ 下载 | 👁️ 浏览 | 👍 点赞 | 💾 收藏 |", "top6_title": "### 🔥 热门插件 Top 6", - "top6_header": "| 排名 | 插件 | 版本 | 下载 | 浏览 | 更新日期 |", + "top6_header": "| 排名 | 插件 | 版本 | 下载 | 浏览 |", "full_stats": "*完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)*", }, "en": { @@ -962,7 +962,7 @@ class OpenWebUIStats: "author_header": "| 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions |", "header": "| 📝 Posts | ⬇️ Downloads | 👁️ Views | 👍 Upvotes | 💾 Saves |", "top6_title": "### 🔥 Top 6 Popular Plugins", - "top6_header": "| Rank | Plugin | Version | Downloads | Views | Updated |", + "top6_header": "| Rank | Plugin | Version | Downloads | Views |", "full_stats": "*See full stats and charts in [Community Stats Report](./docs/community-stats.md)*", }, } @@ -998,11 +998,18 @@ class OpenWebUIStats: f"{self.get_badge('views', stats, user, delta)} | {self.get_badge('upvotes', stats, user, delta)} | {self.get_badge('saves', stats, user, delta)} |" ) lines.append("") + lines.append("") + + # 插入全量趋势图 (Vega-Lite) + activity_chart = self.generate_activity_chart(lang) + if activity_chart: + lines.append(activity_chart) + lines.append("") # Top 6 热门插件 lines.append(t["top6_title"]) lines.append(t["top6_header"]) - lines.append("| :---: | :--- | :---: | :---: | :---: | :---: |") + lines.append("| :---: | :--- | :---: | :---: | :---: |") medals = ["🥇", "🥈", "🥉", "4️⃣", "5️⃣", "6️⃣"] for i, post in enumerate(top_plugins): @@ -1012,8 +1019,15 @@ class OpenWebUIStats: dl_cell = self.get_badge(f"p{idx}_dl", stats, user, delta, is_post=True) vw_cell = self.get_badge(f"p{idx}_vw", stats, user, delta, is_post=True) + # 版本号使用静态 Shields.io 徽章 + ver = post["version"] if post["version"] else "N/A" + ver_color = "blue" if post["version"] else "gray" + ver_badge = ( + f"![v](https://img.shields.io/badge/v-{ver}-{ver_color}?style=flat)" + ) + lines.append( - f"| {medal} | [{post['title']}]({post['url']}) | {post['version']} | {dl_cell} | {vw_cell} | {post['updated_at']} |" + f"| {medal} | [{post['title']}]({post['url']}) | {ver_badge} | {dl_cell} | {vw_cell} |" ) lines.append("") @@ -1072,28 +1086,12 @@ class OpenWebUIStats: lines.insert(insert_pos + 2, "") content = "\n".join(lines) - # 生成并插入/更新底部趋势图 (Vega-Lite) - activity_chart = self.generate_activity_chart(lang) - if activity_chart: - chart_pattern = ( - r".*?" - ) - chart_section = f"\n{activity_chart}\n" - - if re.search(chart_pattern, content, re.DOTALL): - content = re.sub(chart_pattern, chart_section, content, flags=re.DOTALL) - else: - # 尝试插入到 Contributors 之前 - contributors_pattern = r"(## .*Contributors.*)" - match = re.search(contributors_pattern, content, re.IGNORECASE) - if match: - content = ( - content[: match.start()] - + f"\n{chart_section}\n\n" - + content[match.start() :] - ) - else: - content += f"\n\n{chart_section}" + # 移除旧的底部图表 (如果有的话) + chart_pattern = r".*?" + if re.search(chart_pattern, content, re.DOTALL): + content = re.sub(chart_pattern, "", content, flags=re.DOTALL) + # 清理可能产生的多余空行 + content = re.sub(r"\n{3,}", "\n\n", content) # 写回文件 with open(readme_path, "w", encoding="utf-8") as f: @@ -1107,18 +1105,14 @@ class OpenWebUIStats: if len(history) < 3: return "" - data = history[-14:] + data = history # 使用全量历史数据 # 准备数据点 values = [] for item in data: values.append({"date": item["date"], "downloads": item["total_downloads"]}) - title = ( - "Total Downloads Trend (14 Days)" - if lang == "en" - else "总下载量累计趋势 (14天)" - ) + title = "Total Downloads Trend" if lang == "en" else "总下载量累计趋势" # Vega-Lite Spec vl_spec = { From b9104702ac482e2cc31e5d2576977ac021ebeaa5 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:54:45 +0800 Subject: [PATCH 23/47] fix: use dynamic badges for auto-updated timestamp to ensure real-time accuracy --- README.md | 2 +- README_CN.md | 2 +- scripts/openwebui_stats.py | 39 ++++++++++++++++++++++++++++++++------ 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 0293aa5..17959b2 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats -> 🕐 Auto-updated: 2026-02-11 12:51 +> ![updated](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated.json&style=flat) | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | :---: | :---: | :---: | :---: | diff --git a/README_CN.md b/README_CN.md index 3337fdb..e8cd823 100644 --- a/README_CN.md +++ b/README_CN.md @@ -6,7 +6,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ## 📊 社区统计 -> 🕐 自动更新于 2026-02-11 12:51 +> ![updated_zh](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated_zh.json&style=flat) | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | :---: | :---: | :---: | :---: | diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index fcb46ed..68b2c7b 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -525,7 +525,7 @@ class OpenWebUIStats: texts = { "zh": { "title": "# 📊 OpenWebUI 社区统计报告", - "updated": f"> 📅 更新时间: {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", + "updated_label": "更新时间", "overview_title": "## 📈 总览", "overview_header": "| 指标 | 数值 |", "posts": "📝 发布数量", @@ -542,7 +542,7 @@ class OpenWebUIStats: }, "en": { "title": "# 📊 OpenWebUI Community Stats Report", - "updated": f"> 📅 Updated: {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", + "updated_label": "Updated", "overview_title": "## 📈 Overview", "overview_header": "| Metric | Value |", "posts": "📝 Total Posts", @@ -565,7 +565,9 @@ class OpenWebUIStats: md = [] md.append(t["title"]) md.append("") - md.append(t["updated"]) + + updated_key = "updated_zh" if lang == "zh" else "updated" + md.append(f"> {self.get_badge(updated_key, stats, user, delta)}") md.append("") # 插入趋势图 (使用 Kroki SVG 链接) @@ -869,6 +871,29 @@ class OpenWebUIStats: ) } + # 生成更新时间徽章 + now_str = get_beijing_time().strftime("%Y-%m-%d %H:%M") + files_payload["badge_updated.json"] = { + "content": json.dumps( + { + "schemaVersion": 1, + "label": "Auto-updated", + "message": now_str, + "color": "gray", + } + ) + } + files_payload["badge_updated_zh.json"] = { + "content": json.dumps( + { + "schemaVersion": 1, + "label": "自动更新于", + "message": now_str, + "color": "gray", + } + ) + } + # 将生成的 Markdown 报告也作为一个普通 JSON 文件上传到 Gist for lang in ["zh", "en"]: report_content = self.generate_markdown(stats, lang=lang) @@ -919,6 +944,8 @@ class OpenWebUIStats: val = stats.get("total_posts", 0) if key == "saves": val = stats.get("total_saves", 0) + if key.startswith("updated"): + return f"🕐 {get_beijing_time().strftime('%Y-%m-%d %H:%M')}" return f"**{val}**{_fmt_delta(key)}" raw_url = f"https://gist.githubusercontent.com/{gist_user}/{self.gist_id}/raw/badge_{key}.json" @@ -949,7 +976,6 @@ class OpenWebUIStats: texts = { "zh": { "title": "## 📊 社区统计", - "updated": f"🕐 自动更新于 {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", "author_header": "| 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 |", "header": "| 📝 发布 | ⬇️ 下载 | 👁️ 浏览 | 👍 点赞 | 💾 收藏 |", "top6_title": "### 🔥 热门插件 Top 6", @@ -958,7 +984,6 @@ class OpenWebUIStats: }, "en": { "title": "## 📊 Community Stats", - "updated": f"🕐 Auto-updated: {get_beijing_time().strftime('%Y-%m-%d %H:%M')}", "author_header": "| 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions |", "header": "| 📝 Posts | ⬇️ Downloads | 👁️ Views | 👍 Upvotes | 💾 Saves |", "top6_title": "### 🔥 Top 6 Popular Plugins", @@ -973,7 +998,9 @@ class OpenWebUIStats: lines = [] lines.append("") lines.append(t["title"]) - lines.append(f"> {t['updated']}") + + updated_key = "updated_zh" if lang == "zh" else "updated" + lines.append(f"> {self.get_badge(updated_key, stats, user, delta)}") lines.append("") delta = self.get_stat_delta(stats) From bbccffa95b644bfaf1d31f9f877c7129f72b0109 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:56:30 +0800 Subject: [PATCH 24/47] style: move activity chart to end of stats section and add updated badge to top6 table --- README.md | 20 ++++++++++---------- README_CN.md | 20 ++++++++++---------- scripts/openwebui_stats.py | 28 ++++++++++++++++++---------- 3 files changed, 38 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 17959b2..54a970d 100644 --- a/README.md +++ b/README.md @@ -18,19 +18,19 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | +### 🔥 Top 6 Popular Plugins +| Rank | Plugin | Version | Downloads | Views | 📅 Updated | +| :---: | :--- | :---: | :---: | :---: | :---: | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | ![v](https://img.shields.io/badge/v-1.5.0-blue?style=flat) | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--31-gray?style=flat) | +| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | ![v](https://img.shields.io/badge/v-0.4.4-blue?style=flat) | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--02--07-gray?style=flat) | +| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | ![v](https://img.shields.io/badge/v-1.2.2-blue?style=flat) | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | ![v](https://img.shields.io/badge/v-0.3.7-blue?style=flat) | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--02--10-gray?style=flat) | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | + ### 📈 Total Downloads Trend ![Activity](https://kroki.io/vegalite/svg/eNqNlsFu2zAMhl8l8Nbb0liULdu9bo_Q27CDEiuxVsXybCVpEeTdR6lN0IU0sEsgSp9Iir8s5px9nTad2evsaZF1IQzT02p1NDv9uLOhO6wfrV-9A2l26Wwwq2P5-HvyffZtkbVm2ox2CBZN9PDsg3aLH_7UO6_bafE8mr6N3Mm2oUOiznO0OmN3XUATkjnotrX9Du0SrbXevOxGf8CN6DGMup8GjX5C9LPx_dZG8pwdrTmlwRRG_2Lu4QvS-tVOCWn9XtuY4Va7yeDKbrTt1bxEtNVBv7vV7mDirp_nOJn8Qg5qmYtlXqYzX4-HS1VR426GVPdkLXOerO7JRpQ8WROyAp5s7kmRC8WiIqdoXfGoIKio-QQEEBTKmQQkQWUhebQgaKH4qgqilChh5liKog2vqiBaCaVmUCKWqNRMBahatSxYFKhaDfASAFWrmTkWELUgn8kViFowdweAqAVQ8hIAUQvkXAWIWlDMfINA1IJSzqBELVDQ8ChRC6qav4SSqAV1xVdAErWgqbgEAOl7VObs24IoEVYK9r4iSoSVIBWPEmGlrAoeJcLKkr2vwLyYUinJo0RYWc0Viwgr62omASKsbBq-AvTRLIQUPCooim_Wr9hz9np8ST0nvA1pE3YuHXFne5MWNt75Ma58wedTmnXqatfJc_Yq4meNU2_XwStcZ-IgT51OtzY2xKd3v3qMEabgh48m57fbyYQP-hbw1GGnz9KRboD4DNwy-pX6p-k3_qOJY17pd2uNSz081QSZ6zGD2Q9-1C773KK3ftzrlOXDfvmQ_jQEG1zc0B-ci1XRa-O-3-IrpbIU-u0u2q3Wn0L-Oege3elgj-afsP8T43L5C23qg4U=) -### 🔥 Top 6 Popular Plugins -| Rank | Plugin | Version | Downloads | Views | -| :---: | :--- | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | ![v](https://img.shields.io/badge/v-1.5.0-blue?style=flat) | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | -| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | ![v](https://img.shields.io/badge/v-0.4.4-blue?style=flat) | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | -| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | ![v](https://img.shields.io/badge/v-1.2.2-blue?style=flat) | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | ![v](https://img.shields.io/badge/v-0.3.7-blue?style=flat) | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | - *See full stats and charts in [Community Stats Report](./docs/community-stats.md)* diff --git a/README_CN.md b/README_CN.md index e8cd823..94d5895 100644 --- a/README_CN.md +++ b/README_CN.md @@ -17,19 +17,19 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | +### 🔥 热门插件 Top 6 +| 排名 | 插件 | 版本 | 下载 | 浏览 | 📅 更新 | +| :---: | :--- | :---: | :---: | :---: | :---: | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | ![v](https://img.shields.io/badge/v-1.5.0-blue?style=flat) | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--31-gray?style=flat) | +| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | ![v](https://img.shields.io/badge/v-0.4.4-blue?style=flat) | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--02--07-gray?style=flat) | +| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | ![v](https://img.shields.io/badge/v-1.2.2-blue?style=flat) | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | ![v](https://img.shields.io/badge/v-0.3.7-blue?style=flat) | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--02--10-gray?style=flat) | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | + ### 📈 总下载量累计趋势 ![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OoZFAinXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h6Lp9-zHbIfD5nSczOZ0Rlveg-7hRNW75ZcEz-WrVC7paJNu1uEAj-WtaR-VKVfLaBug4uTUa7zm0tCvNVps--cNyGao1TKDHtvF96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9AsE-IbQDSliOexp6K1UARJ56XcnSH5PloykSXFPVrRIkyUiBaTJ6p6khPIkSglGS5FGKUJpmU6AAkKhWEmAIZTlLI3mCM15uqoUKUULWDkWx2iVVpUirSjnKygSiwq-UgGsVsnyJApYrQrSEgBWq1o5FiC1gKzkCkgtWLsDgNQCKNISAFIL2FoFkFqQr_wGAakFBVtBkVrAoUqjSC0QZfoSMqQWlCJdAYbUgkqkEgBP36OMJN8WjyJhGU3eV48iYRkwnkaRsIyJPI0iYVmRvK-QeDEZ5yyNImGZWCsWEpaVYiUBJCyrqnQF8KOZU0bTKMWof7NeQs85yOk19hz3PsZNvnPJgPdm0HGhsb2dwso3_3wyXceudp08Z280_Kz91Pv14w2uM-GDxE4nlQkN8fnDr5xChNnZ8bPJ2badtfukbwFPnf8TkMUj3QD6Fbhl9BL7px4a-9nEfV5xbI3uYw-PNfHM9ZhOH0Y7yT772qJbOx1kzPLxsHlUkTeuDxuGpe9DVWSt-5-3-JzzLIZ-v4t2q_WXkH8WOXh30pmj_ifs_8S4XP4CD5SLdw==) -### 🔥 热门插件 Top 6 -| 排名 | 插件 | 版本 | 下载 | 浏览 | -| :---: | :--- | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | ![v](https://img.shields.io/badge/v-1.5.0-blue?style=flat) | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | -| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | ![v](https://img.shields.io/badge/v-0.4.4-blue?style=flat) | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | -| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | ![v](https://img.shields.io/badge/v-1.2.2-blue?style=flat) | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | ![v](https://img.shields.io/badge/v-0.3.7-blue?style=flat) | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | - *完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)* diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 68b2c7b..7c81611 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -979,7 +979,7 @@ class OpenWebUIStats: "author_header": "| 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 |", "header": "| 📝 发布 | ⬇️ 下载 | 👁️ 浏览 | 👍 点赞 | 💾 收藏 |", "top6_title": "### 🔥 热门插件 Top 6", - "top6_header": "| 排名 | 插件 | 版本 | 下载 | 浏览 |", + "top6_header": "| 排名 | 插件 | 版本 | 下载 | 浏览 | 📅 更新 |", "full_stats": "*完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)*", }, "en": { @@ -987,7 +987,7 @@ class OpenWebUIStats: "author_header": "| 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions |", "header": "| 📝 Posts | ⬇️ Downloads | 👁️ Views | 👍 Upvotes | 💾 Saves |", "top6_title": "### 🔥 Top 6 Popular Plugins", - "top6_header": "| Rank | Plugin | Version | Downloads | Views |", + "top6_header": "| Rank | Plugin | Version | Downloads | Views | 📅 Updated |", "full_stats": "*See full stats and charts in [Community Stats Report](./docs/community-stats.md)*", }, } @@ -1027,16 +1027,10 @@ class OpenWebUIStats: lines.append("") lines.append("") - # 插入全量趋势图 (Vega-Lite) - activity_chart = self.generate_activity_chart(lang) - if activity_chart: - lines.append(activity_chart) - lines.append("") - # Top 6 热门插件 lines.append(t["top6_title"]) lines.append(t["top6_header"]) - lines.append("| :---: | :--- | :---: | :---: | :---: |") + lines.append("| :---: | :--- | :---: | :---: | :---: | :---: |") medals = ["🥇", "🥈", "🥉", "4️⃣", "5️⃣", "6️⃣"] for i, post in enumerate(top_plugins): @@ -1053,11 +1047,25 @@ class OpenWebUIStats: f"![v](https://img.shields.io/badge/v-{ver}-{ver_color}?style=flat)" ) + # 更新时间使用静态 Shields.io 徽章 + updated_str = post.get("updated_at", "") + updated_badge = "" + if updated_str: + # 替换 - 为 -- 用于 shields.io url + safe_date = updated_str.replace("-", "--") + updated_badge = f"![updated](https://img.shields.io/badge/{safe_date}-gray?style=flat)" + lines.append( - f"| {medal} | [{post['title']}]({post['url']}) | {ver_badge} | {dl_cell} | {vw_cell} |" + f"| {medal} | [{post['title']}]({post['url']}) | {ver_badge} | {dl_cell} | {vw_cell} | {updated_badge} |" ) lines.append("") + + # 插入全量趋势图 (Vega-Lite) + activity_chart = self.generate_activity_chart(lang) + if activity_chart: + lines.append(activity_chart) + lines.append("") lines.append(t["full_stats"]) lines.append("") From b7e62e63e08deee4d0639c25cbb4e503954b7162 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:59:08 +0800 Subject: [PATCH 25/47] docs: restore missing language switcher in README --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 54a970d..8cdf6e4 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,13 @@ [![All Contributors](https://img.shields.io/badge/all_contributors-5-orange.svg?style=flat-square)](#contributors-) +English | [中文](./README_CN.md) + A collection of enhancements, plugins, and prompts for [OpenWebUI](https://github.com/open-webui/open-webui), developed and curated for personal use to extend functionality and improve experience. ## 📊 Community Stats +> > ![updated](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated.json&style=flat) | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | @@ -17,8 +20,8 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | :---: | :---: | :---: | :---: | :---: | | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | - ### 🔥 Top 6 Popular Plugins + | Rank | Plugin | Version | Downloads | Views | 📅 Updated | | :---: | :--- | :---: | :---: | :---: | :---: | | 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | @@ -29,6 +32,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 Total Downloads Trend + ![Activity](https://kroki.io/vegalite/svg/eNqNlsFu2zAMhl8l8Nbb0liULdu9bo_Q27CDEiuxVsXybCVpEeTdR6lN0IU0sEsgSp9Iir8s5px9nTad2evsaZF1IQzT02p1NDv9uLOhO6wfrV-9A2l26Wwwq2P5-HvyffZtkbVm2ox2CBZN9PDsg3aLH_7UO6_bafE8mr6N3Mm2oUOiznO0OmN3XUATkjnotrX9Du0SrbXevOxGf8CN6DGMup8GjX5C9LPx_dZG8pwdrTmlwRRG_2Lu4QvS-tVOCWn9XtuY4Va7yeDKbrTt1bxEtNVBv7vV7mDirp_nOJn8Qg5qmYtlXqYzX4-HS1VR426GVPdkLXOerO7JRpQ8WROyAp5s7kmRC8WiIqdoXfGoIKio-QQEEBTKmQQkQWUhebQgaKH4qgqilChh5liKog2vqiBaCaVmUCKWqNRMBahatSxYFKhaDfASAFWrmTkWELUgn8kViFowdweAqAVQ8hIAUQvkXAWIWlDMfINA1IJSzqBELVDQ8ChRC6qav4SSqAV1xVdAErWgqbgEAOl7VObs24IoEVYK9r4iSoSVIBWPEmGlrAoeJcLKkr2vwLyYUinJo0RYWc0Viwgr62omASKsbBq-AvTRLIQUPCooim_Wr9hz9np8ST0nvA1pE3YuHXFne5MWNt75Ma58wedTmnXqatfJc_Yq4meNU2_XwStcZ-IgT51OtzY2xKd3v3qMEabgh48m57fbyYQP-hbw1GGnz9KRboD4DNwy-pX6p-k3_qOJY17pd2uNSz081QSZ6zGD2Q9-1C773KK3ftzrlOXDfvmQ_jQEG1zc0B-ci1XRa-O-3-IrpbIU-u0u2q3Wn0L-Oege3elgj-afsP8T43L5C23qg4U=) *See full stats and charts in [Community Stats Report](./docs/community-stats.md)* @@ -42,7 +46,8 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu > [!TIP] > **No GitHub Copilot subscription required!** Supports **BYOK (Bring Your Own Key)** mode using your own OpenAI/Anthropic API keys. -#### 🌟 Featured Real-World Cases: +#### 🌟 Featured Real-World Cases + - **[GitHub Star Forecasting](./docs/plugins/pipes/star-prediction-example.md)**: Automatically parsing CSV data, writing analysis scripts, and generating interactive growth dashboards. - **[Video Optimization](./docs/plugins/pipes/video-processing-example.md)**: Direct control of system-level tools (FFmpeg) to accelerate and compress media with professional color optimization. From 8f72e256716392c9410426b71a50ed2563a5f3e2 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:04:36 +0800 Subject: [PATCH 26/47] perf: use external Gist data source for trend chart to keep URL static --- README.md | 6 ++-- README_CN.md | 2 +- scripts/openwebui_stats.py | 58 +++++++++++++++++++++++++++++--------- 3 files changed, 48 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 8cdf6e4..1f83017 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,6 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats -> > ![updated](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated.json&style=flat) | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | @@ -20,8 +19,8 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | :---: | :---: | :---: | :---: | :---: | | ![posts](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_posts.json&style=flat) | ![downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_downloads.json&style=flat) | ![views](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_views.json&style=flat) | ![upvotes](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_upvotes.json&style=flat) | ![saves](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_saves.json&style=flat) | -### 🔥 Top 6 Popular Plugins +### 🔥 Top 6 Popular Plugins | Rank | Plugin | Version | Downloads | Views | 📅 Updated | | :---: | :--- | :---: | :---: | :---: | :---: | | 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | @@ -32,8 +31,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 Total Downloads Trend - -![Activity](https://kroki.io/vegalite/svg/eNqNlsFu2zAMhl8l8Nbb0liULdu9bo_Q27CDEiuxVsXybCVpEeTdR6lN0IU0sEsgSp9Iir8s5px9nTad2evsaZF1IQzT02p1NDv9uLOhO6wfrV-9A2l26Wwwq2P5-HvyffZtkbVm2ox2CBZN9PDsg3aLH_7UO6_bafE8mr6N3Mm2oUOiznO0OmN3XUATkjnotrX9Du0SrbXevOxGf8CN6DGMup8GjX5C9LPx_dZG8pwdrTmlwRRG_2Lu4QvS-tVOCWn9XtuY4Va7yeDKbrTt1bxEtNVBv7vV7mDirp_nOJn8Qg5qmYtlXqYzX4-HS1VR426GVPdkLXOerO7JRpQ8WROyAp5s7kmRC8WiIqdoXfGoIKio-QQEEBTKmQQkQWUhebQgaKH4qgqilChh5liKog2vqiBaCaVmUCKWqNRMBahatSxYFKhaDfASAFWrmTkWELUgn8kViFowdweAqAVQ8hIAUQvkXAWIWlDMfINA1IJSzqBELVDQ8ChRC6qav4SSqAV1xVdAErWgqbgEAOl7VObs24IoEVYK9r4iSoSVIBWPEmGlrAoeJcLKkr2vwLyYUinJo0RYWc0Viwgr62omASKsbBq-AvTRLIQUPCooim_Wr9hz9np8ST0nvA1pE3YuHXFne5MWNt75Ma58wedTmnXqatfJc_Yq4meNU2_XwStcZ-IgT51OtzY2xKd3v3qMEabgh48m57fbyYQP-hbw1GGnz9KRboD4DNwy-pX6p-k3_qOJY17pd2uNSz081QSZ6zGD2Q9-1C773KK3ftzrlOXDfvmQ_jQEG1zc0B-ci1XRa-O-3-IrpbIU-u0u2q3Wn0L-Oege3elgj-afsP8T43L5C23qg4U=) +![Activity](https://kroki.io/vegalite/svg/eNqNUj2T2jAQ_SuMkusCNtzYcLTJpEh9XSbF2lrbG2TJkdYYhuG_ZyUwQ65KY-ut3r63H7qoz6HusAe1X6iOeQj7LDtiC6uWuBurFbnsRkjRpSHG7Fisfgdn1ZeF0hhqTwOTQFF4dwxm8c1N1jjQYfHu0erIm0hzJ4xdngvqkNqOBW4SHEBrsq3gQlAF9aH1bpREUWQPNgwgOhx1amcbisyLOhJO6RDYuwN-JF-FDScKiaJdDxQrbMAElJvWk57hNVI1MCTq6M3zLFoKfJ_FGNCLP4v6qnZ99n1c_iDMdPWq34pyt823Bex2OTRls24q2Ja63L7VZeZhyuoOPC-jyW100bIHf0iWfB5S-VI4xCYNWUwXtTPOx5tPm6J8xSqlzcGLOq3lt5bQeT6cNnMkHvLUKGiK89jfdMFHh8BuiJP5eVGuaQLynf0wnDpZdLR7IqyfCY-KfqXxoa3dfYdSV_o2hCatULrGaDq3ydgPzoNRzxtqnO8hVfnSL1_Sm2FiExPsaEycClRovj78y7JUyfr8wW1-fM-Wf0awIgdMR_zH9n88rte_Foz4-Q==) *See full stats and charts in [Community Stats Report](./docs/community-stats.md)* diff --git a/README_CN.md b/README_CN.md index 94d5895..9688b70 100644 --- a/README_CN.md +++ b/README_CN.md @@ -28,7 +28,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 | 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 总下载量累计趋势 -![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OoZFAinXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h6Lp9-zHbIfD5nSczOZ0Rlveg-7hRNW75ZcEz-WrVC7paJNu1uEAj-WtaR-VKVfLaBug4uTUa7zm0tCvNVps--cNyGao1TKDHtvF96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9AsE-IbQDSliOexp6K1UARJ56XcnSH5PloykSXFPVrRIkyUiBaTJ6p6khPIkSglGS5FGKUJpmU6AAkKhWEmAIZTlLI3mCM15uqoUKUULWDkWx2iVVpUirSjnKygSiwq-UgGsVsnyJApYrQrSEgBWq1o5FiC1gKzkCkgtWLsDgNQCKNISAFIL2FoFkFqQr_wGAakFBVtBkVrAoUqjSC0QZfoSMqQWlCJdAYbUgkqkEgBP36OMJN8WjyJhGU3eV48iYRkwnkaRsIyJPI0iYVmRvK-QeDEZ5yyNImGZWCsWEpaVYiUBJCyrqnQF8KOZU0bTKMWof7NeQs85yOk19hz3PsZNvnPJgPdm0HGhsb2dwso3_3wyXceudp08Z280_Kz91Pv14w2uM-GDxE4nlQkN8fnDr5xChNnZ8bPJ2badtfukbwFPnf8TkMUj3QD6Fbhl9BL7px4a-9nEfV5xbI3uYw-PNfHM9ZhOH0Y7yT772qJbOx1kzPLxsHlUkTeuDxuGpe9DVWSt-5-3-JzzLIZ-v4t2q_WXkH8WOXh30pmj_ifs_8S4XP4CD5SLdw==) +![Activity](https://kroki.io/vegalite/svg/eNqNksuy2jAMhl_lTNqzK-RCc4FtZ7roK5QulFhOXBw79YXAMLx7ZUOY9Ky6USzptz5Jzi35bLsBR0gOb8ng3GQPaXrGHra9cINvt0KnD0GMbqRwmJ7L7W-rVfLlLWFoOyMmJ8ilCkdfZbv26L9iRrbhNTv6fd7xo69ZQbZpISfLGsqWRctDiVkwN9DlJsvIG1D0gyO3iO4EjAnVk1-S10J36o32igWYM6DsBAaVC3U6rbgIyltyFjjHg3VGn_Cj-E5quAgbJUyPIELzHKRFyvRGsMW9BykDB1HqjVyvqRfWPdfkLRriO6q-7fSYfvebHwJT1u7YvqyaOqtLaJoMeMVz3kJdsared1VqYE67AYzbBMhjqwE5gjlFpLtOsX1qHMKQUiiMiU5LbULmU1FWO2zjtSV4Sy45fXIKXZfDpVgi4ZDFQYGJsI_Doy6YQLBOT2EzP2-J5tyie6pfwHmgfyDgVoJ8LXh19CuuD1Wnn29IfUXLBcr4hDQ1BugypsNx0gZksn4hrs0Iscv3cfPOol44GS4oL2XYCrQov734VVUlEX39QNOzkhqYXSP_eFBUDpw44z_Y_2Hc738BAXQA-g==) *完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)* diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 7c81611..935338a 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -1134,22 +1134,50 @@ class OpenWebUIStats: print(f"✅ README 已更新: {readme_path}") - def generate_activity_chart(self, lang: str = "zh") -> str: - """生成 Vega-Lite 趋势图 (更美观)""" + def upload_chart_data(self, stats: dict): + """上传图表数据到 Gist (独立于徽章数据)""" + if not (self.gist_token and self.gist_id): + return + history = self.load_history() if len(history) < 3: + return + + # 准备图表数据点 + chart_data = [] + for item in history: + chart_data.append( + {"date": item["date"], "downloads": item["total_downloads"]} + ) + + try: + url = f"https://api.github.com/gists/{self.gist_id}" + headers = {"Authorization": f"token {self.gist_token}"} + payload = { + "files": { + "chart-data.json": { + "content": json.dumps(chart_data, ensure_ascii=False, indent=2) + } + } + } + resp = requests.patch(url, headers=headers, json=payload) + if resp.status_code == 200: + print(f"✅ 图表数据已同步至 Gist") + except Exception as e: + print(f"⚠️ 图表数据同步失败: {e}") + + def generate_activity_chart(self, lang: str = "zh") -> str: + """生成 Vega-Lite 趋势图 (使用外部数据源,URL 固定)""" + if not (self.gist_token and self.gist_id): return "" - data = history # 使用全量历史数据 - - # 准备数据点 - values = [] - for item in data: - values.append({"date": item["date"], "downloads": item["total_downloads"]}) - title = "Total Downloads Trend" if lang == "en" else "总下载量累计趋势" - # Vega-Lite Spec + # 使用 Gist Raw URL 作为数据源 + gist_user = "Fu-Jie" + data_url = f"https://gist.githubusercontent.com/{gist_user}/{self.gist_id}/raw/chart-data.json" + + # Vega-Lite Spec (数据从外部 URL 加载) vl_spec = { "$schema": "https://vega.github.io/schema/vega-lite/v5.json", "description": title, @@ -1161,7 +1189,7 @@ class OpenWebUIStats: "view": {"stroke": "transparent"}, "axis": {"domain": False, "grid": False}, }, - "data": {"values": values}, + "data": {"url": data_url}, # 外部数据源 "mark": { "type": "area", "line": {"color": "#2563eb"}, @@ -1192,7 +1220,7 @@ class OpenWebUIStats: } try: - # Kroki encoding for Vega-Lite + # Kroki encoding for Vega-Lite (spec 固定,URL 也固定) json_spec = json.dumps(vl_spec) compressed = zlib.compress(json_spec.encode("utf-8"), level=9) encoded = base64.urlsafe_b64encode(compressed).decode("utf-8") @@ -1268,7 +1296,11 @@ def main(): stats_client.save_json(stats, str(json_path)) # 生成 Shields.io endpoint JSON (用于动态徽章) - badges_dir = script_dir / "docs" / "badges" + badges_dir = script_dir / "docs" + # 上传图表数据到 Gist (独立存储) + stats_client.upload_chart_data(stats) + + # 生成徽章 stats_client.generate_shields_endpoints(stats, str(badges_dir)) # 更新 README 文件 From 20a7d57b5b56927e9097794e684d1a6f556d83c4 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:09:23 +0800 Subject: [PATCH 27/47] fix: revert to embedded activity chart data to resolve loading failures --- README.md | 2 +- README_CN.md | 2 +- scripts/openwebui_stats.py | 54 ++++++++------------------------------ 3 files changed, 13 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index 1f83017..8e16b62 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 Total Downloads Trend -![Activity](https://kroki.io/vegalite/svg/eNqNUj2T2jAQ_SuMkusCNtzYcLTJpEh9XSbF2lrbG2TJkdYYhuG_ZyUwQ65KY-ut3r63H7qoz6HusAe1X6iOeQj7LDtiC6uWuBurFbnsRkjRpSHG7Fisfgdn1ZeF0hhqTwOTQFF4dwxm8c1N1jjQYfHu0erIm0hzJ4xdngvqkNqOBW4SHEBrsq3gQlAF9aH1bpREUWQPNgwgOhx1amcbisyLOhJO6RDYuwN-JF-FDScKiaJdDxQrbMAElJvWk57hNVI1MCTq6M3zLFoKfJ_FGNCLP4v6qnZ99n1c_iDMdPWq34pyt823Bex2OTRls24q2Ja63L7VZeZhyuoOPC-jyW100bIHf0iWfB5S-VI4xCYNWUwXtTPOx5tPm6J8xSqlzcGLOq3lt5bQeT6cNnMkHvLUKGiK89jfdMFHh8BuiJP5eVGuaQLynf0wnDpZdLR7IqyfCY-KfqXxoa3dfYdSV_o2hCatULrGaDq3ydgPzoNRzxtqnO8hVfnSL1_Sm2FiExPsaEycClRovj78y7JUyfr8wW1-fM-Wf0awIgdMR_zH9n88rte_Foz4-Q==) +![Activity](https://kroki.io/vegalite/svg/eNqNlsFu2zAMhl8l8Nbb0liULdu9bo_Q27CDEiuxVsXybCVpEeTdR6lN0IU0sEsgSp9Iir8s5px9nTad2evsaZF1IQzT02p1NDv9uLOhO6wfrV-9A2l26Wwwq2P5-HvyffZtkbVm2ox2CBZN9PDsg3aLH_7UO6_bafE8mr6N3Mm2oUOiznO0OmN3XUATkjnotrX9Du0SrbXevOxGf8CN6DGMup8GjX5C9LPx_dZG8pwdrTmlwRRG_2Lu4QvS-tVOCWn9XtuY4Va7yeDKbrTt1bxEtNVBv7vV7mDirp_nOJn8Qg5qmYtlXqYzX4-HS1VR426GVPdkLXOerO7JRpQ8WROyAp5s7kmRC8WiIqdoXfGoIKio-QQEEBTKmQQkQWUhebQgaKH4qgqilChh5liKog2vqiBaCaVmUCKWqNRMBahatSxYFKhaDfASAFWrmTkWELUgn8kViFowdweAqAVQ8hIAUQvkXAWIWlDMfINA1IJSzqBELVDQ8ChRC6qav4SSqAV1xVdAErWgqbgEAOl7VObs24IoEVYK9r4iSoSVIBWPEmGlrAoeJcLKkr2vwLyYUinJo0RYWc0Viwgr62omASKsbBq-AvTRLIQUPCooim_Wr9hz9np8ST0nvA1pE3YuHXFne5MWNt75Ma58wedTmnXqatfJc_Yq4meNU2_XwStcZ-IgT51OtzY2xKd3v3qMEabgh48m57fbyYQP-hbw1GGnz9KRboD4DNwy-pX6p-k3_qOJY17pd2uNSz081QSZ6zGD2Q9-1C773KK3ftzrlOXDfvmQ_jQEG1zc0B-ci1XRa-O-3-IrpbIU-u0u2q3Wn0L-Oege3elgj-afsP8T43L5C23qg4U=) *See full stats and charts in [Community Stats Report](./docs/community-stats.md)* diff --git a/README_CN.md b/README_CN.md index 9688b70..94d5895 100644 --- a/README_CN.md +++ b/README_CN.md @@ -28,7 +28,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 | 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 总下载量累计趋势 -![Activity](https://kroki.io/vegalite/svg/eNqNksuy2jAMhl_lTNqzK-RCc4FtZ7roK5QulFhOXBw79YXAMLx7ZUOY9Ky6USzptz5Jzi35bLsBR0gOb8ng3GQPaXrGHra9cINvt0KnD0GMbqRwmJ7L7W-rVfLlLWFoOyMmJ8ilCkdfZbv26L9iRrbhNTv6fd7xo69ZQbZpISfLGsqWRctDiVkwN9DlJsvIG1D0gyO3iO4EjAnVk1-S10J36o32igWYM6DsBAaVC3U6rbgIyltyFjjHg3VGn_Cj-E5quAgbJUyPIELzHKRFyvRGsMW9BykDB1HqjVyvqRfWPdfkLRriO6q-7fSYfvebHwJT1u7YvqyaOqtLaJoMeMVz3kJdsared1VqYE67AYzbBMhjqwE5gjlFpLtOsX1qHMKQUiiMiU5LbULmU1FWO2zjtSV4Sy45fXIKXZfDpVgi4ZDFQYGJsI_Doy6YQLBOT2EzP2-J5tyie6pfwHmgfyDgVoJ8LXh19CuuD1Wnn29IfUXLBcr4hDQ1BugypsNx0gZksn4hrs0Iscv3cfPOol44GS4oL2XYCrQov734VVUlEX39QNOzkhqYXSP_eFBUDpw44z_Y_2Hc738BAXQA-g==) +![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OoZFAinXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h6Lp9-zHbIfD5nSczOZ0Rlveg-7hRNW75ZcEz-WrVC7paJNu1uEAj-WtaR-VKVfLaBug4uTUa7zm0tCvNVps--cNyGao1TKDHtvF96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9AsE-IbQDSliOexp6K1UARJ56XcnSH5PloykSXFPVrRIkyUiBaTJ6p6khPIkSglGS5FGKUJpmU6AAkKhWEmAIZTlLI3mCM15uqoUKUULWDkWx2iVVpUirSjnKygSiwq-UgGsVsnyJApYrQrSEgBWq1o5FiC1gKzkCkgtWLsDgNQCKNISAFIL2FoFkFqQr_wGAakFBVtBkVrAoUqjSC0QZfoSMqQWlCJdAYbUgkqkEgBP36OMJN8WjyJhGU3eV48iYRkwnkaRsIyJPI0iYVmRvK-QeDEZ5yyNImGZWCsWEpaVYiUBJCyrqnQF8KOZU0bTKMWof7NeQs85yOk19hz3PsZNvnPJgPdm0HGhsb2dwso3_3wyXceudp08Z280_Kz91Pv14w2uM-GDxE4nlQkN8fnDr5xChNnZ8bPJ2badtfukbwFPnf8TkMUj3QD6Fbhl9BL7px4a-9nEfV5xbI3uYw-PNfHM9ZhOH0Y7yT772qJbOx1kzPLxsHlUkTeuDxuGpe9DVWSt-5-3-JzzLIZ-v4t2q_WXkH8WOXh30pmj_ifs_8S4XP4CD5SLdw==) *完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)* diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 935338a..116538f 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -1134,50 +1134,20 @@ class OpenWebUIStats: print(f"✅ README 已更新: {readme_path}") - def upload_chart_data(self, stats: dict): - """上传图表数据到 Gist (独立于徽章数据)""" - if not (self.gist_token and self.gist_id): - return - + def generate_activity_chart(self, lang: str = "zh") -> str: + """生成 Vega-Lite 趋势图 (内嵌数据,确保稳定性)""" history = self.load_history() if len(history) < 3: - return - - # 准备图表数据点 - chart_data = [] - for item in history: - chart_data.append( - {"date": item["date"], "downloads": item["total_downloads"]} - ) - - try: - url = f"https://api.github.com/gists/{self.gist_id}" - headers = {"Authorization": f"token {self.gist_token}"} - payload = { - "files": { - "chart-data.json": { - "content": json.dumps(chart_data, ensure_ascii=False, indent=2) - } - } - } - resp = requests.patch(url, headers=headers, json=payload) - if resp.status_code == 200: - print(f"✅ 图表数据已同步至 Gist") - except Exception as e: - print(f"⚠️ 图表数据同步失败: {e}") - - def generate_activity_chart(self, lang: str = "zh") -> str: - """生成 Vega-Lite 趋势图 (使用外部数据源,URL 固定)""" - if not (self.gist_token and self.gist_id): return "" + # 准备数据点 + values = [] + for item in history: + values.append({"date": item["date"], "downloads": item["total_downloads"]}) + title = "Total Downloads Trend" if lang == "en" else "总下载量累计趋势" - # 使用 Gist Raw URL 作为数据源 - gist_user = "Fu-Jie" - data_url = f"https://gist.githubusercontent.com/{gist_user}/{self.gist_id}/raw/chart-data.json" - - # Vega-Lite Spec (数据从外部 URL 加载) + # Vega-Lite Spec (内嵌数据) vl_spec = { "$schema": "https://vega.github.io/schema/vega-lite/v5.json", "description": title, @@ -1189,7 +1159,7 @@ class OpenWebUIStats: "view": {"stroke": "transparent"}, "axis": {"domain": False, "grid": False}, }, - "data": {"url": data_url}, # 外部数据源 + "data": {"values": values}, "mark": { "type": "area", "line": {"color": "#2563eb"}, @@ -1220,7 +1190,7 @@ class OpenWebUIStats: } try: - # Kroki encoding for Vega-Lite (spec 固定,URL 也固定) + # Kroki encoding for Vega-Lite json_spec = json.dumps(vl_spec) compressed = zlib.compress(json_spec.encode("utf-8"), level=9) encoded = base64.urlsafe_b64encode(compressed).decode("utf-8") @@ -1296,9 +1266,7 @@ def main(): stats_client.save_json(stats, str(json_path)) # 生成 Shields.io endpoint JSON (用于动态徽章) - badges_dir = script_dir / "docs" - # 上传图表数据到 Gist (独立存储) - stats_client.upload_chart_data(stats) + badges_dir = script_dir / "docs" / "badges" # 生成徽章 stats_client.generate_shields_endpoints(stats, str(badges_dir)) From 8621d178ae4834058886a7811a2d86784d26edc3 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:11:54 +0800 Subject: [PATCH 28/47] feat: restore external Gist data source for stable chart URL --- scripts/openwebui_stats.py | 49 +++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 116538f..a6ce135 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -1134,20 +1134,50 @@ class OpenWebUIStats: print(f"✅ README 已更新: {readme_path}") - def generate_activity_chart(self, lang: str = "zh") -> str: - """生成 Vega-Lite 趋势图 (内嵌数据,确保稳定性)""" + def upload_chart_data(self, stats: dict): + """上传图表数据到 Gist (独立于徽章数据)""" + if not (self.gist_token and self.gist_id): + return + history = self.load_history() if len(history) < 3: - return "" + return - # 准备数据点 - values = [] + # 准备图表数据点 + chart_data = [] for item in history: - values.append({"date": item["date"], "downloads": item["total_downloads"]}) + chart_data.append( + {"date": item["date"], "downloads": item["total_downloads"]} + ) + + try: + url = f"https://api.github.com/gists/{self.gist_id}" + headers = {"Authorization": f"token {self.gist_token}"} + payload = { + "files": { + "chart-data.json": { + "content": json.dumps(chart_data, ensure_ascii=False, indent=2) + } + } + } + resp = requests.patch(url, headers=headers, json=payload) + if resp.status_code == 200: + print(f"✅ 图表数据已同步至 Gist") + except Exception as e: + print(f"⚠️ 图表数据同步失败: {e}") + + def generate_activity_chart(self, lang: str = "zh") -> str: + """生成 Vega-Lite 趋势图 (使用外部数据源,URL 固定)""" + if not (self.gist_token and self.gist_id): + return "" title = "Total Downloads Trend" if lang == "en" else "总下载量累计趋势" - # Vega-Lite Spec (内嵌数据) + # 使用 Gist Raw URL 作为数据源 + gist_user = "Fu-Jie" # Replace with your GitHub username + data_url = f"https://gist.githubusercontent.com/{gist_user}/{self.gist_id}/raw/chart-data.json" + + # Vega-Lite Spec (数据从外部 URL 加载) vl_spec = { "$schema": "https://vega.github.io/schema/vega-lite/v5.json", "description": title, @@ -1159,7 +1189,7 @@ class OpenWebUIStats: "view": {"stroke": "transparent"}, "axis": {"domain": False, "grid": False}, }, - "data": {"values": values}, + "data": {"url": data_url}, # 外部数据源 "mark": { "type": "area", "line": {"color": "#2563eb"}, @@ -1268,6 +1298,9 @@ def main(): # 生成 Shields.io endpoint JSON (用于动态徽章) badges_dir = script_dir / "docs" / "badges" + # 上传图表数据到 Gist (独立存储) + stats_client.upload_chart_data(stats) + # 生成徽章 stats_client.generate_shields_endpoints(stats, str(badges_dir)) From 7c9bf4082abda0f196dc8c021a26f7b18ddadbc5 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:16:02 +0800 Subject: [PATCH 29/47] feat: sync activity chart in docs with README configuration --- scripts/openwebui_stats.py | 40 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index a6ce135..bcbca12 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -1134,6 +1134,42 @@ class OpenWebUIStats: print(f"✅ README 已更新: {readme_path}") + def update_docs_chart(self, doc_path: str, lang: str = "zh"): + """更新文档中的图表""" + import re + + if not os.path.exists(doc_path): + return + + with open(doc_path, "r", encoding="utf-8") as f: + content = f.read() + + # 生成新的图表 Markdown + new_chart = self.generate_activity_chart(lang) + if not new_chart: + return + + # 查找并在 "### 📈" 开头的段落替换图表 + # 假设图表是在 "### 📈 Total Downloads Trend" 或 "### 📈 总下载量累计趋势" 之后 + # 并且是以 ![Activity](...) 格式存在 + + # 简单起见,我们查找整个图表块并替换 + # 匹配 ### 📈 ... \n\n![Activity](...) + pattern = r"(### 📈.*?\n)(!\[Activity\]\(.*?\))" + + def replace_chart(match): + title_line = match.group(1) # 保留标题行 + # new_chart 包含了标题行,所以我们需要提取 url 部分或者直接用 new_chart 替换整个块 + # generate_activity_chart 返回的是: ### 📈 Title\n![Activity](url) + return new_chart + + if re.search(pattern, content, re.DOTALL): + content = re.sub(pattern, replace_chart, content, flags=re.DOTALL) + + with open(doc_path, "w", encoding="utf-8") as f: + f.write(content) + print(f"✅ 文档图表已更新: {doc_path}") + def upload_chart_data(self, stats: dict): """上传图表数据到 Gist (独立于徽章数据)""" if not (self.gist_token and self.gist_id): @@ -1310,6 +1346,10 @@ def main(): stats_client.update_readme(stats, str(readme_path), lang="en") stats_client.update_readme(stats, str(readme_cn_path), lang="zh") + # 更新 docs 中的图表 + stats_client.update_docs_chart(str(md_en_path), lang="en") + stats_client.update_docs_chart(str(md_zh_path), lang="zh") + return 0 From 0394be7d16619fc2acc825a90e21a31b432f6ea2 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:18:51 +0800 Subject: [PATCH 30/47] chore: update READMEs and docs with stable Gist-based chart URL --- README.md | 2 +- README_CN.md | 2 +- docs/community-stats.json | 22 +++++++++++----------- docs/community-stats.md | 4 ++-- docs/community-stats.zh.md | 4 ++-- docs/stats-history.json | 8 ++++---- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 8e16b62..1f83017 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 Total Downloads Trend -![Activity](https://kroki.io/vegalite/svg/eNqNlsFu2zAMhl8l8Nbb0liULdu9bo_Q27CDEiuxVsXybCVpEeTdR6lN0IU0sEsgSp9Iir8s5px9nTad2evsaZF1IQzT02p1NDv9uLOhO6wfrV-9A2l26Wwwq2P5-HvyffZtkbVm2ox2CBZN9PDsg3aLH_7UO6_bafE8mr6N3Mm2oUOiznO0OmN3XUATkjnotrX9Du0SrbXevOxGf8CN6DGMup8GjX5C9LPx_dZG8pwdrTmlwRRG_2Lu4QvS-tVOCWn9XtuY4Va7yeDKbrTt1bxEtNVBv7vV7mDirp_nOJn8Qg5qmYtlXqYzX4-HS1VR426GVPdkLXOerO7JRpQ8WROyAp5s7kmRC8WiIqdoXfGoIKio-QQEEBTKmQQkQWUhebQgaKH4qgqilChh5liKog2vqiBaCaVmUCKWqNRMBahatSxYFKhaDfASAFWrmTkWELUgn8kViFowdweAqAVQ8hIAUQvkXAWIWlDMfINA1IJSzqBELVDQ8ChRC6qav4SSqAV1xVdAErWgqbgEAOl7VObs24IoEVYK9r4iSoSVIBWPEmGlrAoeJcLKkr2vwLyYUinJo0RYWc0Viwgr62omASKsbBq-AvTRLIQUPCooim_Wr9hz9np8ST0nvA1pE3YuHXFne5MWNt75Ma58wedTmnXqatfJc_Yq4meNU2_XwStcZ-IgT51OtzY2xKd3v3qMEabgh48m57fbyYQP-hbw1GGnz9KRboD4DNwy-pX6p-k3_qOJY17pd2uNSz081QSZ6zGD2Q9-1C773KK3ftzrlOXDfvmQ_jQEG1zc0B-ci1XRa-O-3-IrpbIU-u0u2q3Wn0L-Oege3elgj-afsP8T43L5C23qg4U=) +![Activity](https://kroki.io/vegalite/svg/eNqNUj2T2jAQ_SuMkusCNtzYcLTJpEh9XSbF2lrbG2TJkdYYhuG_ZyUwQ65KY-ut3r63H7qoz6HusAe1X6iOeQj7LDtiC6uWuBurFbnsRkjRpSHG7Fisfgdn1ZeF0hhqTwOTQFF4dwxm8c1N1jjQYfHu0erIm0hzJ4xdngvqkNqOBW4SHEBrsq3gQlAF9aH1bpREUWQPNgwgOhx1amcbisyLOhJO6RDYuwN-JF-FDScKiaJdDxQrbMAElJvWk57hNVI1MCTq6M3zLFoKfJ_FGNCLP4v6qnZ99n1c_iDMdPWq34pyt823Bex2OTRls24q2Ja63L7VZeZhyuoOPC-jyW100bIHf0iWfB5S-VI4xCYNWUwXtTPOx5tPm6J8xSqlzcGLOq3lt5bQeT6cNnMkHvLUKGiK89jfdMFHh8BuiJP5eVGuaQLynf0wnDpZdLR7IqyfCY-KfqXxoa3dfYdSV_o2hCatULrGaDq3ydgPzoNRzxtqnO8hVfnSL1_Sm2FiExPsaEycClRovj78y7JUyfr8wW1-fM-Wf0awIgdMR_zH9n88rte_Foz4-Q==) *See full stats and charts in [Community Stats Report](./docs/community-stats.md)* diff --git a/README_CN.md b/README_CN.md index 94d5895..9688b70 100644 --- a/README_CN.md +++ b/README_CN.md @@ -28,7 +28,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 | 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 总下载量累计趋势 -![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OoZFAinXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h6Lp9-zHbIfD5nSczOZ0Rlveg-7hRNW75ZcEz-WrVC7paJNu1uEAj-WtaR-VKVfLaBug4uTUa7zm0tCvNVps--cNyGao1TKDHtvF96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9AsE-IbQDSliOexp6K1UARJ56XcnSH5PloykSXFPVrRIkyUiBaTJ6p6khPIkSglGS5FGKUJpmU6AAkKhWEmAIZTlLI3mCM15uqoUKUULWDkWx2iVVpUirSjnKygSiwq-UgGsVsnyJApYrQrSEgBWq1o5FiC1gKzkCkgtWLsDgNQCKNISAFIL2FoFkFqQr_wGAakFBVtBkVrAoUqjSC0QZfoSMqQWlCJdAYbUgkqkEgBP36OMJN8WjyJhGU3eV48iYRkwnkaRsIyJPI0iYVmRvK-QeDEZ5yyNImGZWCsWEpaVYiUBJCyrqnQF8KOZU0bTKMWof7NeQs85yOk19hz3PsZNvnPJgPdm0HGhsb2dwso3_3wyXceudp08Z280_Kz91Pv14w2uM-GDxE4nlQkN8fnDr5xChNnZ8bPJ2badtfukbwFPnf8TkMUj3QD6Fbhl9BL7px4a-9nEfV5xbI3uYw-PNfHM9ZhOH0Y7yT772qJbOx1kzPLxsHlUkTeuDxuGpe9DVWSt-5-3-JzzLIZ-v4t2q_WXkH8WOXh30pmj_ifs_8S4XP4CD5SLdw==) +![Activity](https://kroki.io/vegalite/svg/eNqNksuy2jAMhl_lTNqzK-RCc4FtZ7roK5QulFhOXBw79YXAMLx7ZUOY9Ky6USzptz5Jzi35bLsBR0gOb8ng3GQPaXrGHra9cINvt0KnD0GMbqRwmJ7L7W-rVfLlLWFoOyMmJ8ilCkdfZbv26L9iRrbhNTv6fd7xo69ZQbZpISfLGsqWRctDiVkwN9DlJsvIG1D0gyO3iO4EjAnVk1-S10J36o32igWYM6DsBAaVC3U6rbgIyltyFjjHg3VGn_Cj-E5quAgbJUyPIELzHKRFyvRGsMW9BykDB1HqjVyvqRfWPdfkLRriO6q-7fSYfvebHwJT1u7YvqyaOqtLaJoMeMVz3kJdsared1VqYE67AYzbBMhjqwE5gjlFpLtOsX1qHMKQUiiMiU5LbULmU1FWO2zjtSV4Sy45fXIKXZfDpVgi4ZDFQYGJsI_Doy6YQLBOT2EzP2-J5tyie6pfwHmgfyDgVoJ8LXh19CuuD1Wnn29IfUXLBcr4hDQ1BugypsNx0gZksn4hrs0Iscv3cfPOol44GS4oL2XYCrQov734VVUlEX39QNOzkhqYXSP_eFBUDpw44z_Y_2Hc738BAXQA-g==) *完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)* diff --git a/docs/community-stats.json b/docs/community-stats.json index b7ecf65..e86f654 100644 --- a/docs/community-stats.json +++ b/docs/community-stats.json @@ -1,7 +1,7 @@ { "total_posts": 22, "total_downloads": 4160, - "total_views": 45948, + "total_views": 45978, "total_upvotes": 231, "total_downvotes": 2, "total_saves": 274, @@ -23,7 +23,7 @@ "author": "Fu-Jie", "description": "Intelligently analyzes text content and generates interactive mind maps to help users structure and visualize knowledge.", "downloads": 954, - "views": 8390, + "views": 8395, "upvotes": 22, "saves": 50, "comments": 13, @@ -39,7 +39,7 @@ "author": "Fu-Jie", "description": "AI-powered infographic generator based on AntV Infographic. Supports professional templates, auto-icon matching, and SVG/PNG downloads.", "downloads": 710, - "views": 6712, + "views": 6718, "upvotes": 24, "saves": 34, "comments": 10, @@ -55,7 +55,7 @@ "author": "Fu-Jie", "description": "Export current conversation from Markdown to Word (.docx) with Mermaid diagrams rendered client-side (Mermaid.js, SVG+PNG), LaTeX math, real hyperlinks, improved tables, syntax highlighting, and blockquote support.", "downloads": 383, - "views": 3026, + "views": 3029, "upvotes": 14, "saves": 26, "comments": 5, @@ -71,7 +71,7 @@ "author": "Fu-Jie", "description": "Reduces token consumption in long conversations while maintaining coherence through intelligent summarization and message compression.", "downloads": 363, - "views": 3756, + "views": 3758, "upvotes": 14, "saves": 34, "comments": 0, @@ -103,7 +103,7 @@ "author": "Fu-Jie", "description": "A content normalizer filter that fixes common Markdown formatting issues in LLM outputs, such as broken code blocks, LaTeX formulas, and list formatting.", "downloads": 341, - "views": 4713, + "views": 4716, "upvotes": 17, "saves": 30, "comments": 5, @@ -183,7 +183,7 @@ "author": "Fu-Jie", "description": "Integrate GitHub Copilot SDK. Supports dynamic models, multi-turn conversation, streaming, multimodal input, infinite sessions, and frontend debug logging.", "downloads": 107, - "views": 2403, + "views": 2410, "upvotes": 14, "saves": 9, "comments": 6, @@ -215,7 +215,7 @@ "author": "Fu-Jie", "description": "基于 AntV Infographic 的智能信息图生成插件。支持多种专业模板,自动图标匹配,并提供 SVG/PNG 下载功能。", "downloads": 58, - "views": 1065, + "views": 1066, "upvotes": 10, "saves": 1, "comments": 0, @@ -295,7 +295,7 @@ "author": "Fu-Jie", "description": "A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It moves uploaded files to a safe location ('copilot_files') so the Copilot Pipe can process them natively without interference.", "downloads": 16, - "views": 861, + "views": 864, "upvotes": 3, "saves": 0, "comments": 0, @@ -311,7 +311,7 @@ "author": "", "description": "", "downloads": 0, - "views": 281, + "views": 290, "upvotes": 5, "saves": 0, "comments": 0, @@ -327,7 +327,7 @@ "author": "", "description": "", "downloads": 0, - "views": 1525, + "views": 1526, "upvotes": 12, "saves": 19, "comments": 8, diff --git a/docs/community-stats.md b/docs/community-stats.md index 023ad9c..ed2647e 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -1,9 +1,9 @@ # 📊 OpenWebUI Community Stats Report -> 📅 Updated: 2026-02-11 12:40 +> ![updated](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated.json&style=flat) ### 📈 Growth & Trends (Last 14 Days) -![Trend](https://kroki.io/mermaid/svg/eNpNjkFuxCAMRfc9Bcqiq0QCbMCs295gdqMsaAdNI2WINKFq5va1k1KVxef5Y769PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02g41drwRANzA72EH_gW0ADbCBa-AbhAbUIP6C0Q1MN-6bPI5NutNS06xelq9S12PHeSpZnW0g3StLIbDGEHsFGtgB44nVgmeFgKzOWlbvgTXsnRTEiZF70IAR9Xr8lw6WSGL49UhAqRxpJxloxSQDkhgReSzq6NlEMEHiEJxUzjr-gN6jXERBBrqINP4A6v1aKw==) +![Trend](https://kroki.io/mermaid/svg/eNpNjkFuxCAMRfc9Bcqiq0QCbMCs295gdqMsaAdNI2WINKFq5va1k1KVxef5Y769PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02g41drwRANzA72EH_gW0ADbCBa-AbhAbUIP6C0Q1MN-6bPI5NutNS06xelq9S12PHeSpZnW0g3StLIbDGEHsFGtgB44nVgmeFgKzOWlbvgTXsnRTEiZF70IAR9Xr8lw6WSGL49UhAqRxpJxloxSQDkhgReSzq6NlEMEHiEJxUzjr-gN6jXERBBroYaPwB6wZaLg==) > *Blue: Downloads | Purple: Views (Real-time dynamic)* diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index a9704d0..d3a4fcb 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -1,9 +1,9 @@ # 📊 OpenWebUI 社区统计报告 -> 📅 更新时间: 2026-02-11 12:40 +> ![updated_zh](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated_zh.json&style=flat) ### 📈 增长与趋势 (Last 14 Days) -![Trend](https://kroki.io/mermaid/svg/eNpNjkFuxCAMRfc9Bcqiq0QCbMCs295gdqMsaAdNI2WINKFq5va1k1KVxef5Y769PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02g41drwRANzA72EH_gW0ADbCBa-AbhAbUIP6C0Q1MN-6bPI5NutNS06xelq9S12PHeSpZnW0g3StLIbDGEHsFGtgB44nVgmeFgKzOWlbvgTXsnRTEiZF70IAR9Xr8lw6WSGL49UhAqRxpJxloxSQDkhgReSzq6NlEMEHiEJxUzjr-gN6jXERBBrqINP4A6v1aKw==) +![Trend](https://kroki.io/mermaid/svg/eNpNjkFuxCAMRfc9Bcqiq0QCbMCs295gdqMsaAdNI2WINKFq5va1k1KVxef5Y769PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02g41drwRANzA72EH_gW0ADbCBa-AbhAbUIP6C0Q1MN-6bPI5NutNS06xelq9S12PHeSpZnW0g3StLIbDGEHsFGtgB44nVgmeFgKzOWlbvgTXsnRTEiZF70IAR9Xr8lw6WSGL49UhAqRxpJxloxSQDkhgReSzq6NlEMEHiEJxUzjr-gN6jXERBBroYaPwB6wZaLg==) > *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)* diff --git a/docs/stats-history.json b/docs/stats-history.json index 9483b4e..2a2b82b 100644 --- a/docs/stats-history.json +++ b/docs/stats-history.json @@ -1083,8 +1083,8 @@ { "date": "2026-02-11", "total_posts": 22, - "total_downloads": 4156, - "total_views": 45916, + "total_downloads": 4160, + "total_views": 45978, "total_upvotes": 231, "total_saves": 274, "followers": 220, @@ -1092,13 +1092,13 @@ "contributions": 48, "posts": { "turn_any_text_into_beautiful_mind_maps_3094c59a": 954, - "smart_infographic_ad6f0c7f": 707, + "smart_infographic_ad6f0c7f": 710, "export_to_word_enhanced_formatting_fca6a315": 383, "async_context_compression_b1655bc8": 363, "export_mulit_table_to_excel_244b8f9d": 342, "markdown_normalizer_baaa8732": 341, "flash_card_65a2ea8f": 226, - "ai_task_instruction_generator_9bab8b37": 200, + "ai_task_instruction_generator_9bab8b37": 201, "deep_dive_c0b846e4": 147, "导出为_word_支持公式流程图表格和代码块_8a6306c0": 128, "github_copilot_official_sdk_pipe_ce96f7b4": 107, From 2381c5080e5f200619e6c5310ff90f49d92657dc Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:23:05 +0800 Subject: [PATCH 31/47] fix: revert chart to embedded data - Kroki server-side rendering cannot fetch external URLs --- README.md | 2 +- README_CN.md | 2 +- docs/community-stats.json | 8 +++--- docs/community-stats.md | 2 +- docs/community-stats.zh.md | 2 +- docs/stats-history.json | 2 +- scripts/openwebui_stats.py | 51 +++++++------------------------------- 7 files changed, 18 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 1f83017..8e16b62 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 Total Downloads Trend -![Activity](https://kroki.io/vegalite/svg/eNqNUj2T2jAQ_SuMkusCNtzYcLTJpEh9XSbF2lrbG2TJkdYYhuG_ZyUwQ65KY-ut3r63H7qoz6HusAe1X6iOeQj7LDtiC6uWuBurFbnsRkjRpSHG7Fisfgdn1ZeF0hhqTwOTQFF4dwxm8c1N1jjQYfHu0erIm0hzJ4xdngvqkNqOBW4SHEBrsq3gQlAF9aH1bpREUWQPNgwgOhx1amcbisyLOhJO6RDYuwN-JF-FDScKiaJdDxQrbMAElJvWk57hNVI1MCTq6M3zLFoKfJ_FGNCLP4v6qnZ99n1c_iDMdPWq34pyt823Bex2OTRls24q2Ja63L7VZeZhyuoOPC-jyW100bIHf0iWfB5S-VI4xCYNWUwXtTPOx5tPm6J8xSqlzcGLOq3lt5bQeT6cNnMkHvLUKGiK89jfdMFHh8BuiJP5eVGuaQLynf0wnDpZdLR7IqyfCY-KfqXxoa3dfYdSV_o2hCatULrGaDq3ydgPzoNRzxtqnO8hVfnSL1_Sm2FiExPsaEycClRovj78y7JUyfr8wW1-fM-Wf0awIgdMR_zH9n88rte_Foz4-Q==) +![Activity](https://kroki.io/vegalite/svg/eNqNlsFu2zAMhl8l8Nbb0liULdu9bo_Q27CDEiuxVsXybCVpEeTdR6lN0IU0sEsgSp9Iir8s5px9nTad2evsaZF1IQzT02p1NDv9uLOhO6wfrV-9A2l26Wwwq2P5-HvyffZtkbVm2ox2CBZN9PDsg3aLH_7UO6_bafE8mr6N3Mm2oUOiznO0OmN3XUATkjnotrX9Du0SrbXevOxGf8CN6DGMup8GjX5C9LPx_dZG8pwdrTmlwRRG_2Lu4QvS-tVOCWn9XtuY4Va7yeDKbrTt1bxEtNVBv7vV7mDirp_nOJn8Qg5qmYtlXqYzX4-HS1VR426GVPdkLXOerO7JRpQ8WROyAp5s7kmRC8WiIqdoXfGoIKio-QQEEBTKmQQkQWUhebQgaKH4qgqilChh5liKog2vqiBaCaVmUCKWqNRMBahatSxYFKhaDfASAFWrmTkWELUgn8kViFowdweAqAVQ8hIAUQvkXAWIWlDMfINA1IJSzqBELVDQ8ChRC6qav4SSqAV1xVdAErWgqbgEAOl7VObs24IoEVYK9r4iSoSVIBWPEmGlrAoeJcLKkr2vwLyYUinJo0RYWc0Viwgr62omASKsbBq-AvTRLIQUPCooim_Wr9hz9np8ST0nvA1pE3YuHXFne5MWNt75Ma58wedTmnXqatfJc_Yq4meNU2_XwStcZ-IgT51OtzY2xKd3v3qMEabgh48m57fbyYQP-hbw1GGnz9KRboD4DNwy-pX6p-k3_qOJY17pd2uNSz081QSZ6zGD2Q9-1C773KK3ftzrlOXDfvmQ_jQEG1zc0B-ci1XRa-O-3-IrpbIU-u0u2q3Wn0L-Oege3elgj-afsP8T43L5C23qg4U=) *See full stats and charts in [Community Stats Report](./docs/community-stats.md)* diff --git a/README_CN.md b/README_CN.md index 9688b70..94d5895 100644 --- a/README_CN.md +++ b/README_CN.md @@ -28,7 +28,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 | 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 总下载量累计趋势 -![Activity](https://kroki.io/vegalite/svg/eNqNksuy2jAMhl_lTNqzK-RCc4FtZ7roK5QulFhOXBw79YXAMLx7ZUOY9Ky6USzptz5Jzi35bLsBR0gOb8ng3GQPaXrGHra9cINvt0KnD0GMbqRwmJ7L7W-rVfLlLWFoOyMmJ8ilCkdfZbv26L9iRrbhNTv6fd7xo69ZQbZpISfLGsqWRctDiVkwN9DlJsvIG1D0gyO3iO4EjAnVk1-S10J36o32igWYM6DsBAaVC3U6rbgIyltyFjjHg3VGn_Cj-E5quAgbJUyPIELzHKRFyvRGsMW9BykDB1HqjVyvqRfWPdfkLRriO6q-7fSYfvebHwJT1u7YvqyaOqtLaJoMeMVz3kJdsared1VqYE67AYzbBMhjqwE5gjlFpLtOsX1qHMKQUiiMiU5LbULmU1FWO2zjtSV4Sy45fXIKXZfDpVgi4ZDFQYGJsI_Doy6YQLBOT2EzP2-J5tyie6pfwHmgfyDgVoJ8LXh19CuuD1Wnn29IfUXLBcr4hDQ1BugypsNx0gZksn4hrs0Iscv3cfPOol44GS4oL2XYCrQov734VVUlEX39QNOzkhqYXSP_eFBUDpw44z_Y_2Hc738BAXQA-g==) +![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OoZFAinXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h6Lp9-zHbIfD5nSczOZ0Rlveg-7hRNW75ZcEz-WrVC7paJNu1uEAj-WtaR-VKVfLaBug4uTUa7zm0tCvNVps--cNyGao1TKDHtvF96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9AsE-IbQDSliOexp6K1UARJ56XcnSH5PloykSXFPVrRIkyUiBaTJ6p6khPIkSglGS5FGKUJpmU6AAkKhWEmAIZTlLI3mCM15uqoUKUULWDkWx2iVVpUirSjnKygSiwq-UgGsVsnyJApYrQrSEgBWq1o5FiC1gKzkCkgtWLsDgNQCKNISAFIL2FoFkFqQr_wGAakFBVtBkVrAoUqjSC0QZfoSMqQWlCJdAYbUgkqkEgBP36OMJN8WjyJhGU3eV48iYRkwnkaRsIyJPI0iYVmRvK-QeDEZ5yyNImGZWCsWEpaVYiUBJCyrqnQF8KOZU0bTKMWof7NeQs85yOk19hz3PsZNvnPJgPdm0HGhsb2dwso3_3wyXceudp08Z280_Kz91Pv14w2uM-GDxE4nlQkN8fnDr5xChNnZ8bPJ2badtfukbwFPnf8TkMUj3QD6Fbhl9BL7px4a-9nEfV5xbI3uYw-PNfHM9ZhOH0Y7yT772qJbOx1kzPLxsHlUkTeuDxuGpe9DVWSt-5-3-JzzLIZ-v4t2q_WXkH8WOXh30pmj_ifs_8S4XP4CD5SLdw==) *完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)* diff --git a/docs/community-stats.json b/docs/community-stats.json index e86f654..9be770c 100644 --- a/docs/community-stats.json +++ b/docs/community-stats.json @@ -1,7 +1,7 @@ { "total_posts": 22, "total_downloads": 4160, - "total_views": 45978, + "total_views": 45980, "total_upvotes": 231, "total_downvotes": 2, "total_saves": 274, @@ -71,7 +71,7 @@ "author": "Fu-Jie", "description": "Reduces token consumption in long conversations while maintaining coherence through intelligent summarization and message compression.", "downloads": 363, - "views": 3758, + "views": 3759, "upvotes": 14, "saves": 34, "comments": 0, @@ -183,7 +183,7 @@ "author": "Fu-Jie", "description": "Integrate GitHub Copilot SDK. Supports dynamic models, multi-turn conversation, streaming, multimodal input, infinite sessions, and frontend debug logging.", "downloads": 107, - "views": 2410, + "views": 2411, "upvotes": 14, "saves": 9, "comments": 6, @@ -311,7 +311,7 @@ "author": "", "description": "", "downloads": 0, - "views": 290, + "views": 292, "upvotes": 5, "saves": 0, "comments": 0, diff --git a/docs/community-stats.md b/docs/community-stats.md index ed2647e..bc69e02 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -3,7 +3,7 @@ > ![updated](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated.json&style=flat) ### 📈 Growth & Trends (Last 14 Days) -![Trend](https://kroki.io/mermaid/svg/eNpNjkFuxCAMRfc9Bcqiq0QCbMCs295gdqMsaAdNI2WINKFq5va1k1KVxef5Y769PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02g41drwRANzA72EH_gW0ADbCBa-AbhAbUIP6C0Q1MN-6bPI5NutNS06xelq9S12PHeSpZnW0g3StLIbDGEHsFGtgB44nVgmeFgKzOWlbvgTXsnRTEiZF70IAR9Xr8lw6WSGL49UhAqRxpJxloxSQDkhgReSzq6NlEMEHiEJxUzjr-gN6jXERBBroYaPwB6wZaLg==) +![Trend](https://kroki.io/mermaid/svg/eNpNjkFuxCAMRfc9Bcqiq0QCbMCs295gdqMsaAdNI2WINKFq5va1k1KVxef5Y769PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02g41drwRANzA72EH_gW0ADbCBa-AbhAbUIP6C0Q1MN-6bPI5NutNS06xelq9S12PHeSpZnW0g3StLIbDGEHsFGtgB44nVgmeFgKzOWlbvgTXsnRTEiZF70IAR9Xr8lw6WSGL49UhAqRxpJxloxSQDkhgReSzq6NlEMEHiEJxUzjr-gN6jXERBBrpIevwB6vlaJw==) > *Blue: Downloads | Purple: Views (Real-time dynamic)* diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index d3a4fcb..03f85ee 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -3,7 +3,7 @@ > ![updated_zh](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated_zh.json&style=flat) ### 📈 增长与趋势 (Last 14 Days) -![Trend](https://kroki.io/mermaid/svg/eNpNjkFuxCAMRfc9Bcqiq0QCbMCs295gdqMsaAdNI2WINKFq5va1k1KVxef5Y769PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02g41drwRANzA72EH_gW0ADbCBa-AbhAbUIP6C0Q1MN-6bPI5NutNS06xelq9S12PHeSpZnW0g3StLIbDGEHsFGtgB44nVgmeFgKzOWlbvgTXsnRTEiZF70IAR9Xr8lw6WSGL49UhAqRxpJxloxSQDkhgReSzq6NlEMEHiEJxUzjr-gN6jXERBBroYaPwB6wZaLg==) +![Trend](https://kroki.io/mermaid/svg/eNpNjkFuxCAMRfc9Bcqiq0QCbMCs295gdqMsaAdNI2WINKFq5va1k1KVxef5Y769PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02g41drwRANzA72EH_gW0ADbCBa-AbhAbUIP6C0Q1MN-6bPI5NutNS06xelq9S12PHeSpZnW0g3StLIbDGEHsFGtgB44nVgmeFgKzOWlbvgTXsnRTEiZF70IAR9Xr8lw6WSGL49UhAqRxpJxloxSQDkhgReSzq6NlEMEHiEJxUzjr-gN6jXERBBrpIevwB6vlaJw==) > *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)* diff --git a/docs/stats-history.json b/docs/stats-history.json index 2a2b82b..c55f486 100644 --- a/docs/stats-history.json +++ b/docs/stats-history.json @@ -1084,7 +1084,7 @@ "date": "2026-02-11", "total_posts": 22, "total_downloads": 4160, - "total_views": 45978, + "total_views": 45980, "total_upvotes": 231, "total_saves": 274, "followers": 220, diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index bcbca12..b56e709 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -1170,50 +1170,20 @@ class OpenWebUIStats: f.write(content) print(f"✅ 文档图表已更新: {doc_path}") - def upload_chart_data(self, stats: dict): - """上传图表数据到 Gist (独立于徽章数据)""" - if not (self.gist_token and self.gist_id): - return - + def generate_activity_chart(self, lang: str = "zh") -> str: + """生成 Vega-Lite 趋势图 (内嵌数据,Kroki 服务端渲染不支持外部 URL)""" history = self.load_history() if len(history) < 3: - return - - # 准备图表数据点 - chart_data = [] - for item in history: - chart_data.append( - {"date": item["date"], "downloads": item["total_downloads"]} - ) - - try: - url = f"https://api.github.com/gists/{self.gist_id}" - headers = {"Authorization": f"token {self.gist_token}"} - payload = { - "files": { - "chart-data.json": { - "content": json.dumps(chart_data, ensure_ascii=False, indent=2) - } - } - } - resp = requests.patch(url, headers=headers, json=payload) - if resp.status_code == 200: - print(f"✅ 图表数据已同步至 Gist") - except Exception as e: - print(f"⚠️ 图表数据同步失败: {e}") - - def generate_activity_chart(self, lang: str = "zh") -> str: - """生成 Vega-Lite 趋势图 (使用外部数据源,URL 固定)""" - if not (self.gist_token and self.gist_id): return "" + # 准备数据点 + values = [] + for item in history: + values.append({"date": item["date"], "downloads": item["total_downloads"]}) + title = "Total Downloads Trend" if lang == "en" else "总下载量累计趋势" - # 使用 Gist Raw URL 作为数据源 - gist_user = "Fu-Jie" # Replace with your GitHub username - data_url = f"https://gist.githubusercontent.com/{gist_user}/{self.gist_id}/raw/chart-data.json" - - # Vega-Lite Spec (数据从外部 URL 加载) + # Vega-Lite Spec (内嵌数据,Kroki 服务端渲染必须内嵌) vl_spec = { "$schema": "https://vega.github.io/schema/vega-lite/v5.json", "description": title, @@ -1225,7 +1195,7 @@ class OpenWebUIStats: "view": {"stroke": "transparent"}, "axis": {"domain": False, "grid": False}, }, - "data": {"url": data_url}, # 外部数据源 + "data": {"values": values}, "mark": { "type": "area", "line": {"color": "#2563eb"}, @@ -1334,9 +1304,6 @@ def main(): # 生成 Shields.io endpoint JSON (用于动态徽章) badges_dir = script_dir / "docs" / "badges" - # 上传图表数据到 Gist (独立存储) - stats_client.upload_chart_data(stats) - # 生成徽章 stats_client.generate_shields_endpoints(stats, str(badges_dir)) From c86b27a0c19fa7cc57e669e89caf63e93bf13643 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:24:17 +0800 Subject: [PATCH 32/47] ci: add dedicated daily workflow for chart updates at 01:10 Beijing time --- .github/workflows/update-chart.yml | 46 ++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .github/workflows/update-chart.yml diff --git a/.github/workflows/update-chart.yml b/.github/workflows/update-chart.yml new file mode 100644 index 0000000..5b378d3 --- /dev/null +++ b/.github/workflows/update-chart.yml @@ -0,0 +1,46 @@ +name: Update Activity Chart + +on: + schedule: + # 每天北京时间 01:10 运行 (UTC 17:10) + - cron: '10 17 * * *' + workflow_dispatch: + +permissions: + contents: write + +jobs: + update-chart: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install dependencies + run: | + pip install requests python-dotenv + + - name: Generate stats and update chart + env: + OPENWEBUI_API_KEY: ${{ secrets.OPENWEBUI_API_KEY }} + OPENWEBUI_USER_ID: ${{ secrets.OPENWEBUI_USER_ID }} + GIST_TOKEN: ${{ secrets.GIST_TOKEN }} + GIST_ID: ${{ secrets.GIST_ID }} + run: | + python scripts/openwebui_stats.py + + - name: Commit chart updates + run: | + git config --local user.email "github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git add README.md README_CN.md docs/community-stats.md docs/community-stats.zh.md + git diff --staged --quiet || git commit -m "chore: daily update activity chart [skip ci]" + git push From 2ac8d4b14f796852a7d0f7d2779772594c63665a Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:26:00 +0800 Subject: [PATCH 33/47] ci: remove points and followers as commit triggers since they are now dynamic badges --- .github/workflows/community-stats.yml | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/.github/workflows/community-stats.yml b/.github/workflows/community-stats.yml index 034b1ff..a422c29 100644 --- a/.github/workflows/community-stats.yml +++ b/.github/workflows/community-stats.yml @@ -102,19 +102,7 @@ jobs: echo "🔄 Plugin version changed" fi - # 检查积分增加 - if [ "$NEW_POINTS" -gt "$OLD_POINTS" ]; then - SHOULD_COMMIT="true" - CHANGE_REASON="${CHANGE_REASON:+$CHANGE_REASON, }points increased ($OLD_POINTS -> $NEW_POINTS)" - echo "⭐ Points increased: $OLD_POINTS -> $NEW_POINTS" - fi - - # 检查粉丝增加 - if [ "$NEW_FOLLOWERS" -gt "$OLD_FOLLOWERS" ]; then - SHOULD_COMMIT="true" - CHANGE_REASON="${CHANGE_REASON:+$CHANGE_REASON, }followers increased ($OLD_FOLLOWERS -> $NEW_FOLLOWERS)" - echo "👥 Followers increased: $OLD_FOLLOWERS -> $NEW_FOLLOWERS" - fi + echo "should_commit=$SHOULD_COMMIT" >> $GITHUB_OUTPUT echo "change_reason=$CHANGE_REASON" >> $GITHUB_OUTPUT From fa5d96215278087da9b3e0329ba5f1445d667f6f Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:28:19 +0800 Subject: [PATCH 34/47] feat: use dynamic badges for plugin versions, remove version changes as commit trigger --- .github/workflows/community-stats.yml | 7 +------ scripts/openwebui_stats.py | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/.github/workflows/community-stats.yml b/.github/workflows/community-stats.yml index a422c29..dee17dc 100644 --- a/.github/workflows/community-stats.yml +++ b/.github/workflows/community-stats.yml @@ -95,12 +95,7 @@ jobs: echo "📦 New plugin detected: $OLD_POSTS -> $NEW_POSTS" fi - # 检查版本变更 - if [ "$OLD_VERSIONS" != "$NEW_VERSIONS" ]; then - SHOULD_COMMIT="true" - CHANGE_REASON="${CHANGE_REASON:+$CHANGE_REASON, }plugin version updated" - echo "🔄 Plugin version changed" - fi + diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index b56e709..c7f276f 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -812,6 +812,19 @@ class OpenWebUIStats: } ) } + # 版本号徽章 + ver = post.get("version", "N/A") or "N/A" + ver_color = "blue" if post.get("version") else "gray" + files_payload[f"badge_p{idx}_version.json"] = { + "content": json.dumps( + { + "schemaVersion": 1, + "label": "v", + "message": ver, + "color": ver_color, + } + ) + } # 生成所有帖子的个体徽章 (用于详细报表) # 生成所有帖子的个体徽章 (用于详细报表) @@ -834,7 +847,6 @@ class OpenWebUIStats: } ) } - # 2. Views files_payload[f"badge_post_{slug_hash}_vw.json"] = { "content": json.dumps( @@ -1040,11 +1052,9 @@ class OpenWebUIStats: dl_cell = self.get_badge(f"p{idx}_dl", stats, user, delta, is_post=True) vw_cell = self.get_badge(f"p{idx}_vw", stats, user, delta, is_post=True) - # 版本号使用静态 Shields.io 徽章 - ver = post["version"] if post["version"] else "N/A" - ver_color = "blue" if post["version"] else "gray" - ver_badge = ( - f"![v](https://img.shields.io/badge/v-{ver}-{ver_color}?style=flat)" + # 版本号使用动态 Shields.io 徽章 + ver_badge = self.get_badge( + f"p{idx}_version", stats, user, delta, is_post=True ) # 更新时间使用静态 Shields.io 徽章 From 954ebad8b2fb7a703281fa24b8fdbd3d1b8b558a Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:31:14 +0800 Subject: [PATCH 35/47] feat: sync docs chart with README chart (Vega-Lite) --- docs/community-stats.md | 4 ++-- docs/community-stats.zh.md | 4 ++-- scripts/openwebui_stats.py | 20 ++++++-------------- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/docs/community-stats.md b/docs/community-stats.md index bc69e02..d606a30 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -2,8 +2,8 @@ > ![updated](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated.json&style=flat) -### 📈 Growth & Trends (Last 14 Days) -![Trend](https://kroki.io/mermaid/svg/eNpNjkFuxCAMRfc9Bcqiq0QCbMCs295gdqMsaAdNI2WINKFq5va1k1KVxef5Y769PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02g41drwRANzA72EH_gW0ADbCBa-AbhAbUIP6C0Q1MN-6bPI5NutNS06xelq9S12PHeSpZnW0g3StLIbDGEHsFGtgB44nVgmeFgKzOWlbvgTXsnRTEiZF70IAR9Xr8lw6WSGL49UhAqRxpJxloxSQDkhgReSzq6NlEMEHiEJxUzjr-gN6jXERBBrpIevwB6vlaJw==) +### 📈 Total Downloads Trend +![Activity](https://kroki.io/vegalite/svg/eNqNlsFu2zAMhl8l8Nbb0liULdu9bo_Q27CDEiuxVsXybCVpEeTdR6lN0IU0sEsgSp9Iir8s5px9nTad2evsaZF1IQzT02p1NDv9uLOhO6wfrV-9A2l26Wwwq2P5-HvyffZtkbVm2ox2CBZN9PDsg3aLH_7UO6_bafE8mr6N3Mm2oUOiznO0OmN3XUATkjnotrX9Du0SrbXevOxGf8CN6DGMup8GjX5C9LPx_dZG8pwdrTmlwRRG_2Lu4QvS-tVOCWn9XtuY4Va7yeDKbrTt1bxEtNVBv7vV7mDirp_nOJn8Qg5qmYtlXqYzX4-HS1VR426GVPdkLXOerO7JRpQ8WROyAp5s7kmRC8WiIqdoXfGoIKio-QQEEBTKmQQkQWUhebQgaKH4qgqilChh5liKog2vqiBaCaVmUCKWqNRMBahatSxYFKhaDfASAFWrmTkWELUgn8kViFowdweAqAVQ8hIAUQvkXAWIWlDMfINA1IJSzqBELVDQ8ChRC6qav4SSqAV1xVdAErWgqbgEAOl7VObs24IoEVYK9r4iSoSVIBWPEmGlrAoeJcLKkr2vwLyYUinJo0RYWc0Viwgr62omASKsbBq-AvTRLIQUPCooim_Wr9hz9np8ST0nvA1pE3YuHXFne5MWNt75Ma58wedTmnXqatfJc_Yq4meNU2_XwStcZ-IgT51OtzY2xKd3v3qMEabgh48m57fbyYQP-hbw1GGnz9KRboD4DNwy-pX6p-k3_qOJY17pd2uNSz081QSZ6zGD2Q9-1C773KK3ftzrlOXDfvmQ_jQEG1zc0B-ci1XRa-O-3-IrpbIU-u0u2q3Wn0L-Oege3elgj-afsP8T43L5C23qg4U=) > *Blue: Downloads | Purple: Views (Real-time dynamic)* diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index 03f85ee..25b6650 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -2,8 +2,8 @@ > ![updated_zh](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated_zh.json&style=flat) -### 📈 增长与趋势 (Last 14 Days) -![Trend](https://kroki.io/mermaid/svg/eNpNjkFuxCAMRfc9Bcqiq0QCbMCs295gdqMsaAdNI2WINKFq5va1k1KVxef5Y769PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02g41drwRANzA72EH_gW0ADbCBa-AbhAbUIP6C0Q1MN-6bPI5NutNS06xelq9S12PHeSpZnW0g3StLIbDGEHsFGtgB44nVgmeFgKzOWlbvgTXsnRTEiZF70IAR9Xr8lw6WSGL49UhAqRxpJxloxSQDkhgReSzq6NlEMEHiEJxUzjr-gN6jXERBBrpIevwB6vlaJw==) +### 📈 总下载量累计趋势 +![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OoZFAinXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h6Lp9-zHbIfD5nSczOZ0Rlveg-7hRNW75ZcEz-WrVC7paJNu1uEAj-WtaR-VKVfLaBug4uTUa7zm0tCvNVps--cNyGao1TKDHtvF96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9AsE-IbQDSliOexp6K1UARJ56XcnSH5PloykSXFPVrRIkyUiBaTJ6p6khPIkSglGS5FGKUJpmU6AAkKhWEmAIZTlLI3mCM15uqoUKUULWDkWx2iVVpUirSjnKygSiwq-UgGsVsnyJApYrQrSEgBWq1o5FiC1gKzkCkgtWLsDgNQCKNISAFIL2FoFkFqQr_wGAakFBVtBkVrAoUqjSC0QZfoSMqQWlCJdAYbUgkqkEgBP36OMJN8WjyJhGU3eV48iYRkwnkaRsIyJPI0iYVmRvK-QeDEZ5yyNImGZWCsWEpaVYiUBJCyrqnQF8KOZU0bTKMWof7NeQs85yOk19hz3PsZNvnPJgPdm0HGhsb2dwso3_3wyXceudp08Z280_Kz91Pv14w2uM-GDxE4nlQkN8fnDr5xChNnZ8bPJ2badtfukbwFPnf8TkMUj3QD6Fbhl9BL7px4a-9nEfV5xbI3uYw-PNfHM9ZhOH0Y7yT772qJbOx1kzPLxsHlUkTeuDxuGpe9DVWSt-5-3-JzzLIZ-v4t2q_WXkH8WOXh30pmj_ifs_8S4XP4CD5SLdw==) > *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)* diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index c7f276f..afc7389 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -1159,22 +1159,14 @@ class OpenWebUIStats: if not new_chart: return - # 查找并在 "### 📈" 开头的段落替换图表 - # 假设图表是在 "### 📈 Total Downloads Trend" 或 "### 📈 总下载量累计趋势" 之后 - # 并且是以 ![Activity](...) 格式存在 - - # 简单起见,我们查找整个图表块并替换 - # 匹配 ### 📈 ... \n\n![Activity](...) - pattern = r"(### 📈.*?\n)(!\[Activity\]\(.*?\))" - - def replace_chart(match): - title_line = match.group(1) # 保留标题行 - # new_chart 包含了标题行,所以我们需要提取 url 部分或者直接用 new_chart 替换整个块 - # generate_activity_chart 返回的是: ### 📈 Title\n![Activity](url) - return new_chart + # 匹配 ### 📈 ... \n\n![...](...) + # 兼容 docs 中使用 Trend 或 Activity 作为 alt text + pattern = r"(### 📈.*?\n)(!\[.*?\]\(.*?\))" if re.search(pattern, content, re.DOTALL): - content = re.sub(pattern, replace_chart, content, flags=re.DOTALL) + # generate_activity_chart 返回的是完整块: ### 📈 Title\n![Activity](url) + # 我们直接用新块替换整个旧块 + content = re.sub(pattern, new_chart, content, flags=re.DOTALL) with open(doc_path, "w", encoding="utf-8") as f: f.write(content) From 871e76b1dfa67dbac6b32d6e3d144fa5d6a8e3c3 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:32:27 +0800 Subject: [PATCH 36/47] chore: manual stats update (latest history & chart) --- README.md | 12 ++++++------ README_CN.md | 12 ++++++------ docs/community-stats.json | 8 ++++---- docs/stats-history.json | 2 +- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 8e16b62..dfabdd3 100644 --- a/README.md +++ b/README.md @@ -23,12 +23,12 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ### 🔥 Top 6 Popular Plugins | Rank | Plugin | Version | Downloads | Views | 📅 Updated | | :---: | :--- | :---: | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | ![v](https://img.shields.io/badge/v-1.5.0-blue?style=flat) | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--31-gray?style=flat) | -| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | ![v](https://img.shields.io/badge/v-0.4.4-blue?style=flat) | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--02--07-gray?style=flat) | -| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | ![v](https://img.shields.io/badge/v-1.2.2-blue?style=flat) | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | ![v](https://img.shields.io/badge/v-0.3.7-blue?style=flat) | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--02--10-gray?style=flat) | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | ![p1_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_version.json&style=flat) | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | ![p2_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_version.json&style=flat) | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--31-gray?style=flat) | +| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | ![p3_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_version.json&style=flat) | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--02--07-gray?style=flat) | +| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | ![p4_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_version.json&style=flat) | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | ![p5_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_version.json&style=flat) | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--02--10-gray?style=flat) | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![p6_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_version.json&style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 Total Downloads Trend ![Activity](https://kroki.io/vegalite/svg/eNqNlsFu2zAMhl8l8Nbb0liULdu9bo_Q27CDEiuxVsXybCVpEeTdR6lN0IU0sEsgSp9Iir8s5px9nTad2evsaZF1IQzT02p1NDv9uLOhO6wfrV-9A2l26Wwwq2P5-HvyffZtkbVm2ox2CBZN9PDsg3aLH_7UO6_bafE8mr6N3Mm2oUOiznO0OmN3XUATkjnotrX9Du0SrbXevOxGf8CN6DGMup8GjX5C9LPx_dZG8pwdrTmlwRRG_2Lu4QvS-tVOCWn9XtuY4Va7yeDKbrTt1bxEtNVBv7vV7mDirp_nOJn8Qg5qmYtlXqYzX4-HS1VR426GVPdkLXOerO7JRpQ8WROyAp5s7kmRC8WiIqdoXfGoIKio-QQEEBTKmQQkQWUhebQgaKH4qgqilChh5liKog2vqiBaCaVmUCKWqNRMBahatSxYFKhaDfASAFWrmTkWELUgn8kViFowdweAqAVQ8hIAUQvkXAWIWlDMfINA1IJSzqBELVDQ8ChRC6qav4SSqAV1xVdAErWgqbgEAOl7VObs24IoEVYK9r4iSoSVIBWPEmGlrAoeJcLKkr2vwLyYUinJo0RYWc0Viwgr62omASKsbBq-AvTRLIQUPCooim_Wr9hz9np8ST0nvA1pE3YuHXFne5MWNt75Ma58wedTmnXqatfJc_Yq4meNU2_XwStcZ-IgT51OtzY2xKd3v3qMEabgh48m57fbyYQP-hbw1GGnz9KRboD4DNwy-pX6p-k3_qOJY17pd2uNSz081QSZ6zGD2Q9-1C773KK3ftzrlOXDfvmQ_jQEG1zc0B-ci1XRa-O-3-IrpbIU-u0u2q3Wn0L-Oege3elgj-afsP8T43L5C23qg4U=) diff --git a/README_CN.md b/README_CN.md index 94d5895..11ae8e8 100644 --- a/README_CN.md +++ b/README_CN.md @@ -20,12 +20,12 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ### 🔥 热门插件 Top 6 | 排名 | 插件 | 版本 | 下载 | 浏览 | 📅 更新 | | :---: | :--- | :---: | :---: | :---: | :---: | -| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | ![v](https://img.shields.io/badge/v-0.9.2-blue?style=flat) | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | -| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | ![v](https://img.shields.io/badge/v-1.5.0-blue?style=flat) | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--31-gray?style=flat) | -| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | ![v](https://img.shields.io/badge/v-0.4.4-blue?style=flat) | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--02--07-gray?style=flat) | -| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | ![v](https://img.shields.io/badge/v-1.2.2-blue?style=flat) | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | -| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | ![v](https://img.shields.io/badge/v-0.3.7-blue?style=flat) | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--02--10-gray?style=flat) | -| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![v](https://img.shields.io/badge/v-1.2.4-blue?style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | +| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | ![p1_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_version.json&style=flat) | ![p1_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_dl.json&style=flat) | ![p1_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p1_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | +| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | ![p2_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_version.json&style=flat) | ![p2_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_dl.json&style=flat) | ![p2_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p2_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--31-gray?style=flat) | +| 🥉 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | ![p3_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_version.json&style=flat) | ![p3_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_dl.json&style=flat) | ![p3_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p3_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--02--07-gray?style=flat) | +| 4️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | ![p4_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_version.json&style=flat) | ![p4_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_dl.json&style=flat) | ![p4_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p4_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | +| 5️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | ![p5_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_version.json&style=flat) | ![p5_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_dl.json&style=flat) | ![p5_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p5_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--02--10-gray?style=flat) | +| 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![p6_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_version.json&style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 总下载量累计趋势 ![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OoZFAinXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h6Lp9-zHbIfD5nSczOZ0Rlveg-7hRNW75ZcEz-WrVC7paJNu1uEAj-WtaR-VKVfLaBug4uTUa7zm0tCvNVps--cNyGao1TKDHtvF96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9AsE-IbQDSliOexp6K1UARJ56XcnSH5PloykSXFPVrRIkyUiBaTJ6p6khPIkSglGS5FGKUJpmU6AAkKhWEmAIZTlLI3mCM15uqoUKUULWDkWx2iVVpUirSjnKygSiwq-UgGsVsnyJApYrQrSEgBWq1o5FiC1gKzkCkgtWLsDgNQCKNISAFIL2FoFkFqQr_wGAakFBVtBkVrAoUqjSC0QZfoSMqQWlCJdAYbUgkqkEgBP36OMJN8WjyJhGU3eV48iYRkwnkaRsIyJPI0iYVmRvK-QeDEZ5yyNImGZWCsWEpaVYiUBJCyrqnQF8KOZU0bTKMWof7NeQs85yOk19hz3PsZNvnPJgPdm0HGhsb2dwso3_3wyXceudp08Z280_Kz91Pv14w2uM-GDxE4nlQkN8fnDr5xChNnZ8bPJ2badtfukbwFPnf8TkMUj3QD6Fbhl9BL7px4a-9nEfV5xbI3uYw-PNfHM9ZhOH0Y7yT772qJbOx1kzPLxsHlUkTeuDxuGpe9DVWSt-5-3-JzzLIZ-v4t2q_WXkH8WOXh30pmj_ifs_8S4XP4CD5SLdw==) diff --git a/docs/community-stats.json b/docs/community-stats.json index 9be770c..24e4269 100644 --- a/docs/community-stats.json +++ b/docs/community-stats.json @@ -1,7 +1,7 @@ { "total_posts": 22, "total_downloads": 4160, - "total_views": 45980, + "total_views": 45983, "total_upvotes": 231, "total_downvotes": 2, "total_saves": 274, @@ -183,7 +183,7 @@ "author": "Fu-Jie", "description": "Integrate GitHub Copilot SDK. Supports dynamic models, multi-turn conversation, streaming, multimodal input, infinite sessions, and frontend debug logging.", "downloads": 107, - "views": 2411, + "views": 2412, "upvotes": 14, "saves": 9, "comments": 6, @@ -295,7 +295,7 @@ "author": "Fu-Jie", "description": "A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It moves uploaded files to a safe location ('copilot_files') so the Copilot Pipe can process them natively without interference.", "downloads": 16, - "views": 864, + "views": 866, "upvotes": 3, "saves": 0, "comments": 0, @@ -311,7 +311,7 @@ "author": "", "description": "", "downloads": 0, - "views": 292, + "views": 295, "upvotes": 5, "saves": 0, "comments": 0, diff --git a/docs/stats-history.json b/docs/stats-history.json index c55f486..85200e7 100644 --- a/docs/stats-history.json +++ b/docs/stats-history.json @@ -1084,7 +1084,7 @@ "date": "2026-02-11", "total_posts": 22, "total_downloads": 4160, - "total_views": 45980, + "total_views": 45983, "total_upvotes": 231, "total_saves": 274, "followers": 220, From 403274624370fdf6badd54668c42020b720c1d84 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:34:14 +0800 Subject: [PATCH 37/47] style: enhance stats docs with colored badges for post types --- scripts/openwebui_stats.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index afc7389..745ce62 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -602,11 +602,24 @@ class OpenWebUIStats: md.append("") - # 按类型分类 + # 按类型分类 (使用徽章) md.append(t["type_title"]) md.append("") + + type_colors = { + "post": "blue", + "filter": "brightgreen", + "action": "orange", + "pipe": "blueviolet", + "pipeline": "purple", + "review": "yellow", + "prompt": "lightgrey", + } + for post_type, count in stats["by_type"].items(): - md.append(f"- **{post_type}**: {count}") + color = type_colors.get(post_type, "gray") + badge = f"![{post_type}](https://img.shields.io/badge/{post_type}-{count}-{color})" + md.append(f"- {badge}") md.append("") # 详细列表 @@ -633,7 +646,9 @@ class OpenWebUIStats: f"post_{slug_hash}_sv", stats, user, delta, is_post=True ) - # 版本号使用静态 Shields.io 徽章 + # 版本号使用动态 Shields.io 徽章 (由于列表太长,我们这次没给所有 post 生成单独的 version json) + # 不过实际上 upload_gist_badges 是给 top 6 生成的。 + # 对于完整列表,还是暂时用静态吧,避免要把几百个 version json 都生成出来传到 Gist ver = post["version"] if post["version"] else "N/A" ver_color = "blue" if post["version"] else "gray" ver_badge = ( From 2a755808311e8829d7be3db96c005cf00c35e0b2 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:36:05 +0800 Subject: [PATCH 38/47] style: apply colored badges to post type statistics in docs --- docs/community-stats.md | 14 +++++++------- docs/community-stats.zh.md | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/community-stats.md b/docs/community-stats.md index d606a30..2b725be 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -3,7 +3,7 @@ > ![updated](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated.json&style=flat) ### 📈 Total Downloads Trend -![Activity](https://kroki.io/vegalite/svg/eNqNlsFu2zAMhl8l8Nbb0liULdu9bo_Q27CDEiuxVsXybCVpEeTdR6lN0IU0sEsgSp9Iir8s5px9nTad2evsaZF1IQzT02p1NDv9uLOhO6wfrV-9A2l26Wwwq2P5-HvyffZtkbVm2ox2CBZN9PDsg3aLH_7UO6_bafE8mr6N3Mm2oUOiznO0OmN3XUATkjnotrX9Du0SrbXevOxGf8CN6DGMup8GjX5C9LPx_dZG8pwdrTmlwRRG_2Lu4QvS-tVOCWn9XtuY4Va7yeDKbrTt1bxEtNVBv7vV7mDirp_nOJn8Qg5qmYtlXqYzX4-HS1VR426GVPdkLXOerO7JRpQ8WROyAp5s7kmRC8WiIqdoXfGoIKio-QQEEBTKmQQkQWUhebQgaKH4qgqilChh5liKog2vqiBaCaVmUCKWqNRMBahatSxYFKhaDfASAFWrmTkWELUgn8kViFowdweAqAVQ8hIAUQvkXAWIWlDMfINA1IJSzqBELVDQ8ChRC6qav4SSqAV1xVdAErWgqbgEAOl7VObs24IoEVYK9r4iSoSVIBWPEmGlrAoeJcLKkr2vwLyYUinJo0RYWc0Viwgr62omASKsbBq-AvTRLIQUPCooim_Wr9hz9np8ST0nvA1pE3YuHXFne5MWNt75Ma58wedTmnXqatfJc_Yq4meNU2_XwStcZ-IgT51OtzY2xKd3v3qMEabgh48m57fbyYQP-hbw1GGnz9KRboD4DNwy-pX6p-k3_qOJY17pd2uNSz081QSZ6zGD2Q9-1C773KK3ftzrlOXDfvmQ_jQEG1zc0B-ci1XRa-O-3-IrpbIU-u0u2q3Wn0L-Oege3elgj-afsP8T43L5C23qg4U=) +![Activity](https://kroki.io/vegalite/svg/eNqNls2S2yAMx18l43ZvTWKEje1c20fYW2cPJCYxDTGuTb4mk3cvkI_ZRvLMXjIIfkhCf4xySb4Pq0btZLKYJI1z3bCYzw9qI2cb7Zr9cqbt_AbE2anRTs0P-ezPYNvkxySp1bDqdee0N72Hd-ukmfyyx9ZYWQ-T9161deCOunaNJ8o09Vaj9KZx3oRodrKudbvxdu6tpVxtN73d-43eo-tlO3TS-3HBz8q2ax3IS3LQ6hgHg-vtVr3CV0_Lkx4iUtud1CHDtTSD8iubXtcP8xrQWjp5cyvNXoVdvy9hMvqFFMQ0ZdM0j2d-HM8vFVnpdxOkeCVLntJk8UpWLKfJEpEF0GT1SrKUCRJlKUbLgkYZQllJJ8AAoZCPJMARyjNOoxlCM0FXlSGlWA4jxxIYrWhVGdKKCTGCIrFYIUYqgNUqeUaigNWqgJYAsFrVyLEAqQXpSK6A1IKxOwBILYCclgCQWsDHKoDUgmzkGwSkFuR8BEVqgYCKRpFaUJT0JeRILSgLugIcqQVVQSUAnn5FeUq-LR5FwnJG3lePImE5cEGjSFjOi4xGkbA8J-8rEC8mF4LTKBKWF2PFQsLyshhJAAnLq4quAH40M8YZjTKMCnb9CD1nJ_tt7Dnu3MVNvnPJgBvdqriwssb2YeWbfz65Wsau9pi8JCcWPms_dX4MTvCYCYM0djpZ69AQFze_sg8RBme7e5Oz6_Wg3J1-Bjw2vtMn8UhPgH0Gnhl9xP6p2pW9N3GfV_xda2ViD4818czjmE7tOttLk3xu0Wvb72TM8m03fYt_Gpx2Jmxo98aEqsilMj-f8YUQSQx9fon2rPWnkH_3svXupNMH9V_Yr8S4Xv8Bb5uDhg==) > *Blue: Downloads | Purple: Views (Real-time dynamic)* @@ -25,12 +25,12 @@ ## 📂 By Type -- **post**: 3 -- **filter**: 4 -- **pipe**: 1 -- **action**: 12 -- **prompt**: 1 -- **review**: 1 +- ![post](https://img.shields.io/badge/post-3-blue) +- ![filter](https://img.shields.io/badge/filter-4-brightgreen) +- ![pipe](https://img.shields.io/badge/pipe-1-blueviolet) +- ![action](https://img.shields.io/badge/action-12-orange) +- ![prompt](https://img.shields.io/badge/prompt-1-lightgrey) +- ![review](https://img.shields.io/badge/review-1-yellow) ## 📋 Posts List diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index 25b6650..e71895e 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -3,7 +3,7 @@ > ![updated_zh](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated_zh.json&style=flat) ### 📈 总下载量累计趋势 -![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OoZFAinXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h6Lp9-zHbIfD5nSczOZ0Rlveg-7hRNW75ZcEz-WrVC7paJNu1uEAj-WtaR-VKVfLaBug4uTUa7zm0tCvNVps--cNyGao1TKDHtvF96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9AsE-IbQDSliOexp6K1UARJ56XcnSH5PloykSXFPVrRIkyUiBaTJ6p6khPIkSglGS5FGKUJpmU6AAkKhWEmAIZTlLI3mCM15uqoUKUULWDkWx2iVVpUirSjnKygSiwq-UgGsVsnyJApYrQrSEgBWq1o5FiC1gKzkCkgtWLsDgNQCKNISAFIL2FoFkFqQr_wGAakFBVtBkVrAoUqjSC0QZfoSMqQWlCJdAYbUgkqkEgBP36OMJN8WjyJhGU3eV48iYRkwnkaRsIyJPI0iYVmRvK-QeDEZ5yyNImGZWCsWEpaVYiUBJCyrqnQF8KOZU0bTKMWof7NeQs85yOk19hz3PsZNvnPJgPdm0HGhsb2dwso3_3wyXceudp08Z280_Kz91Pv14w2uM-GDxE4nlQkN8fnDr5xChNnZ8bPJ2badtfukbwFPnf8TkMUj3QD6Fbhl9BL7px4a-9nEfV5xbI3uYw-PNfHM9ZhOH0Y7yT772qJbOx1kzPLxsHlUkTeuDxuGpe9DVWSt-5-3-JzzLIZ-v4t2q_WXkH8WOXh30pmj_ifs_8S4XP4CD5SLdw==) +![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OhaLBCjXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h7Lp9-zHbIfD5nSczOZ0Rlveg-7heW03i2Fzv0oWq52S0WadrdwBX4UtSR-VMKvllC3wcXJKNf5zSLPvdVps--cNyGao1TKDHtvl96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9As5sE1ONnkZy2FPQ2-lChAvhN-dINk9KWieJvk9WZEyTQpEckiT1T1JcsKSKMkxKngaJQglIp0AAYRCuZIARSgtaBotEFqwdFUJUoqUsHIshtEqrSpBWhHGVlAkFuFspQJYLUGLJApYrQrSEgBWq1o5FiC1IF_JFZBasHYHAKkFUKYlAKQW0LUKILWgWPkNAlILSrqCIrWAQZVGkVrARfoSUqQWCJ6uAEVqQcVTCYCn71GaJ98WjyJhKUneV48iYSlQlkaRsJTyIo0iYWmZvK-QeDEpYzSNImEpXysWEpYKvpIAEpZWVboC-NEsCCVplGCUkctL6DkHOb3GnuPex7jJdy4Z8N4MOi40trdTWPnmn0-q69jVrpPn7I2En7Wfer9-vMF1JnzksdNJZUJDfP7wK6cQYXZ2_Gxytm1n7T7pW8BT5_8EZPFIN4B8BW4ZvcT-qYfGfjZxn1ccW6P72MNjTTxzPabTh9FOss--tujWTgcZs3w8bB5V5I3rw4Zh6ftQFVnr_uctPmMsi6Hf76Ldav0l5J9FDt6ddOao_wn7PzEul78RRYt4) > *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)* @@ -25,12 +25,12 @@ ## 📂 按类型分类 -- **post**: 3 -- **filter**: 4 -- **pipe**: 1 -- **action**: 12 -- **prompt**: 1 -- **review**: 1 +- ![post](https://img.shields.io/badge/post-3-blue) +- ![filter](https://img.shields.io/badge/filter-4-brightgreen) +- ![pipe](https://img.shields.io/badge/pipe-1-blueviolet) +- ![action](https://img.shields.io/badge/action-12-orange) +- ![prompt](https://img.shields.io/badge/prompt-1-lightgrey) +- ![review](https://img.shields.io/badge/review-1-yellow) ## 📋 发布列表 From 50c549b2601972dfe2fcf83540d2dbdac2382e62 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:36:28 +0800 Subject: [PATCH 39/47] chore: apply dynamic version badges to README --- README.md | 2 +- README_CN.md | 2 +- docs/community-stats.json | 14 +++++++------- docs/stats-history.json | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index dfabdd3..a67226e 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![p6_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_version.json&style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 Total Downloads Trend -![Activity](https://kroki.io/vegalite/svg/eNqNlsFu2zAMhl8l8Nbb0liULdu9bo_Q27CDEiuxVsXybCVpEeTdR6lN0IU0sEsgSp9Iir8s5px9nTad2evsaZF1IQzT02p1NDv9uLOhO6wfrV-9A2l26Wwwq2P5-HvyffZtkbVm2ox2CBZN9PDsg3aLH_7UO6_bafE8mr6N3Mm2oUOiznO0OmN3XUATkjnotrX9Du0SrbXevOxGf8CN6DGMup8GjX5C9LPx_dZG8pwdrTmlwRRG_2Lu4QvS-tVOCWn9XtuY4Va7yeDKbrTt1bxEtNVBv7vV7mDirp_nOJn8Qg5qmYtlXqYzX4-HS1VR426GVPdkLXOerO7JRpQ8WROyAp5s7kmRC8WiIqdoXfGoIKio-QQEEBTKmQQkQWUhebQgaKH4qgqilChh5liKog2vqiBaCaVmUCKWqNRMBahatSxYFKhaDfASAFWrmTkWELUgn8kViFowdweAqAVQ8hIAUQvkXAWIWlDMfINA1IJSzqBELVDQ8ChRC6qav4SSqAV1xVdAErWgqbgEAOl7VObs24IoEVYK9r4iSoSVIBWPEmGlrAoeJcLKkr2vwLyYUinJo0RYWc0Viwgr62omASKsbBq-AvTRLIQUPCooim_Wr9hz9np8ST0nvA1pE3YuHXFne5MWNt75Ma58wedTmnXqatfJc_Yq4meNU2_XwStcZ-IgT51OtzY2xKd3v3qMEabgh48m57fbyYQP-hbw1GGnz9KRboD4DNwy-pX6p-k3_qOJY17pd2uNSz081QSZ6zGD2Q9-1C773KK3ftzrlOXDfvmQ_jQEG1zc0B-ci1XRa-O-3-IrpbIU-u0u2q3Wn0L-Oege3elgj-afsP8T43L5C23qg4U=) +![Activity](https://kroki.io/vegalite/svg/eNqNls2S2yAMx18l43ZvTWKEje1c20fYW2cPJCYxDTGuTb4mk3cvkI_ZRvLMXjIIfkhCf4xySb4Pq0btZLKYJI1z3bCYzw9qI2cb7Zr9cqbt_AbE2anRTs0P-ezPYNvkxySp1bDqdee0N72Hd-ukmfyyx9ZYWQ-T9161deCOunaNJ8o09Vaj9KZx3oRodrKudbvxdu6tpVxtN73d-43eo-tlO3TS-3HBz8q2ax3IS3LQ6hgHg-vtVr3CV0_Lkx4iUtud1CHDtTSD8iubXtcP8xrQWjp5cyvNXoVdvy9hMvqFFMQ0ZdM0j2d-HM8vFVnpdxOkeCVLntJk8UpWLKfJEpEF0GT1SrKUCRJlKUbLgkYZQllJJ8AAoZCPJMARyjNOoxlCM0FXlSGlWA4jxxIYrWhVGdKKCTGCIrFYIUYqgNUqeUaigNWqgJYAsFrVyLEAqQXpSK6A1IKxOwBILYCclgCQWsDHKoDUgmzkGwSkFuR8BEVqgYCKRpFaUJT0JeRILSgLugIcqQVVQSUAnn5FeUq-LR5FwnJG3lePImE5cEGjSFjOi4xGkbA8J-8rEC8mF4LTKBKWF2PFQsLyshhJAAnLq4quAH40M8YZjTKMCnb9CD1nJ_tt7Dnu3MVNvnPJgBvdqriwssb2YeWbfz65Wsau9pi8JCcWPms_dX4MTvCYCYM0djpZ69AQFze_sg8RBme7e5Oz6_Wg3J1-Bjw2vtMn8UhPgH0Gnhl9xP6p2pW9N3GfV_xda2ViD4818czjmE7tOttLk3xu0Wvb72TM8m03fYt_Gpx2Jmxo98aEqsilMj-f8YUQSQx9fon2rPWnkH_3svXupNMH9V_Yr8S4Xv8Bb5uDhg==) *See full stats and charts in [Community Stats Report](./docs/community-stats.md)* diff --git a/README_CN.md b/README_CN.md index 11ae8e8..ffefb1a 100644 --- a/README_CN.md +++ b/README_CN.md @@ -28,7 +28,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 | 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![p6_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_version.json&style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 总下载量累计趋势 -![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OoZFAinXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h6Lp9-zHbIfD5nSczOZ0Rlveg-7hRNW75ZcEz-WrVC7paJNu1uEAj-WtaR-VKVfLaBug4uTUa7zm0tCvNVps--cNyGao1TKDHtvF96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9AsE-IbQDSliOexp6K1UARJ56XcnSH5PloykSXFPVrRIkyUiBaTJ6p6khPIkSglGS5FGKUJpmU6AAkKhWEmAIZTlLI3mCM15uqoUKUULWDkWx2iVVpUirSjnKygSiwq-UgGsVsnyJApYrQrSEgBWq1o5FiC1gKzkCkgtWLsDgNQCKNISAFIL2FoFkFqQr_wGAakFBVtBkVrAoUqjSC0QZfoSMqQWlCJdAYbUgkqkEgBP36OMJN8WjyJhGU3eV48iYRkwnkaRsIyJPI0iYVmRvK-QeDEZ5yyNImGZWCsWEpaVYiUBJCyrqnQF8KOZU0bTKMWof7NeQs85yOk19hz3PsZNvnPJgPdm0HGhsb2dwso3_3wyXceudp08Z280_Kz91Pv14w2uM-GDxE4nlQkN8fnDr5xChNnZ8bPJ2badtfukbwFPnf8TkMUj3QD6Fbhl9BL7px4a-9nEfV5xbI3uYw-PNfHM9ZhOH0Y7yT772qJbOx1kzPLxsHlUkTeuDxuGpe9DVWSt-5-3-JzzLIZ-v4t2q_WXkH8WOXh30pmj_ifs_8S4XP4CD5SLdw==) +![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OhaLBCjXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h7Lp9-zHbIfD5nSczOZ0Rlveg-7heW03i2Fzv0oWq52S0WadrdwBX4UtSR-VMKvllC3wcXJKNf5zSLPvdVps--cNyGao1TKDHtvl96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9As5sE1ONnkZy2FPQ2-lChAvhN-dINk9KWieJvk9WZEyTQpEckiT1T1JcsKSKMkxKngaJQglIp0AAYRCuZIARSgtaBotEFqwdFUJUoqUsHIshtEqrSpBWhHGVlAkFuFspQJYLUGLJApYrQrSEgBWq1o5FiC1IF_JFZBasHYHAKkFUKYlAKQW0LUKILWgWPkNAlILSrqCIrWAQZVGkVrARfoSUqQWCJ6uAEVqQcVTCYCn71GaJ98WjyJhKUneV48iYSlQlkaRsJTyIo0iYWmZvK-QeDEpYzSNImEpXysWEpYKvpIAEpZWVboC-NEsCCVplGCUkctL6DkHOb3GnuPex7jJdy4Z8N4MOi40trdTWPnmn0-q69jVrpPn7I2En7Wfer9-vMF1JnzksdNJZUJDfP7wK6cQYXZ2_Gxytm1n7T7pW8BT5_8EZPFIN4B8BW4ZvcT-qYfGfjZxn1ccW6P72MNjTTxzPabTh9FOss--tujWTgcZs3w8bB5V5I3rw4Zh6ftQFVnr_uctPmMsi6Hf76Ldav0l5J9FDt6ddOao_wn7PzEul78RRYt4) *完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)* diff --git a/docs/community-stats.json b/docs/community-stats.json index 24e4269..022e62e 100644 --- a/docs/community-stats.json +++ b/docs/community-stats.json @@ -1,7 +1,7 @@ { "total_posts": 22, - "total_downloads": 4160, - "total_views": 45983, + "total_downloads": 4161, + "total_views": 45988, "total_upvotes": 231, "total_downvotes": 2, "total_saves": 274, @@ -39,7 +39,7 @@ "author": "Fu-Jie", "description": "AI-powered infographic generator based on AntV Infographic. Supports professional templates, auto-icon matching, and SVG/PNG downloads.", "downloads": 710, - "views": 6718, + "views": 6719, "upvotes": 24, "saves": 34, "comments": 10, @@ -134,8 +134,8 @@ "version": "", "author": "", "description": "", - "downloads": 201, - "views": 2781, + "downloads": 202, + "views": 2784, "upvotes": 9, "saves": 6, "comments": 0, @@ -295,7 +295,7 @@ "author": "Fu-Jie", "description": "A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It moves uploaded files to a safe location ('copilot_files') so the Copilot Pipe can process them natively without interference.", "downloads": 16, - "views": 866, + "views": 867, "upvotes": 3, "saves": 0, "comments": 0, @@ -311,7 +311,7 @@ "author": "", "description": "", "downloads": 0, - "views": 295, + "views": 296, "upvotes": 5, "saves": 0, "comments": 0, diff --git a/docs/stats-history.json b/docs/stats-history.json index 85200e7..1a2ebbf 100644 --- a/docs/stats-history.json +++ b/docs/stats-history.json @@ -1083,8 +1083,8 @@ { "date": "2026-02-11", "total_posts": 22, - "total_downloads": 4160, - "total_views": 45983, + "total_downloads": 4161, + "total_views": 45988, "total_upvotes": 231, "total_saves": 274, "followers": 220, @@ -1098,7 +1098,7 @@ "export_mulit_table_to_excel_244b8f9d": 342, "markdown_normalizer_baaa8732": 341, "flash_card_65a2ea8f": 226, - "ai_task_instruction_generator_9bab8b37": 201, + "ai_task_instruction_generator_9bab8b37": 202, "deep_dive_c0b846e4": 147, "导出为_word_支持公式流程图表格和代码块_8a6306c0": 128, "github_copilot_official_sdk_pipe_ce96f7b4": 107, From 30f2aed68adcc4f5394507388ecd9ef4a03036a0 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:41:41 +0800 Subject: [PATCH 40/47] feat: switch to static Gist SVG for activity chart (no more daily README commits) --- .github/workflows/update-chart.yml | 46 ------------------------------ README.md | 2 +- README_CN.md | 2 +- docs/community-stats.md | 2 +- docs/community-stats.zh.md | 2 +- 5 files changed, 4 insertions(+), 50 deletions(-) delete mode 100644 .github/workflows/update-chart.yml diff --git a/.github/workflows/update-chart.yml b/.github/workflows/update-chart.yml deleted file mode 100644 index 5b378d3..0000000 --- a/.github/workflows/update-chart.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Update Activity Chart - -on: - schedule: - # 每天北京时间 01:10 运行 (UTC 17:10) - - cron: '10 17 * * *' - workflow_dispatch: - -permissions: - contents: write - -jobs: - update-chart: - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - token: ${{ secrets.GITHUB_TOKEN }} - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - - name: Install dependencies - run: | - pip install requests python-dotenv - - - name: Generate stats and update chart - env: - OPENWEBUI_API_KEY: ${{ secrets.OPENWEBUI_API_KEY }} - OPENWEBUI_USER_ID: ${{ secrets.OPENWEBUI_USER_ID }} - GIST_TOKEN: ${{ secrets.GIST_TOKEN }} - GIST_ID: ${{ secrets.GIST_ID }} - run: | - python scripts/openwebui_stats.py - - - name: Commit chart updates - run: | - git config --local user.email "github-actions[bot]@users.noreply.github.com" - git config --local user.name "github-actions[bot]" - git add README.md README_CN.md docs/community-stats.md docs/community-stats.zh.md - git diff --staged --quiet || git commit -m "chore: daily update activity chart [skip ci]" - git push diff --git a/README.md b/README.md index a67226e..09bcc85 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu | 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![p6_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_version.json&style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 Total Downloads Trend -![Activity](https://kroki.io/vegalite/svg/eNqNls2S2yAMx18l43ZvTWKEje1c20fYW2cPJCYxDTGuTb4mk3cvkI_ZRvLMXjIIfkhCf4xySb4Pq0btZLKYJI1z3bCYzw9qI2cb7Zr9cqbt_AbE2anRTs0P-ezPYNvkxySp1bDqdee0N72Hd-ukmfyyx9ZYWQ-T9161deCOunaNJ8o09Vaj9KZx3oRodrKudbvxdu6tpVxtN73d-43eo-tlO3TS-3HBz8q2ax3IS3LQ6hgHg-vtVr3CV0_Lkx4iUtud1CHDtTSD8iubXtcP8xrQWjp5cyvNXoVdvy9hMvqFFMQ0ZdM0j2d-HM8vFVnpdxOkeCVLntJk8UpWLKfJEpEF0GT1SrKUCRJlKUbLgkYZQllJJ8AAoZCPJMARyjNOoxlCM0FXlSGlWA4jxxIYrWhVGdKKCTGCIrFYIUYqgNUqeUaigNWqgJYAsFrVyLEAqQXpSK6A1IKxOwBILYCclgCQWsDHKoDUgmzkGwSkFuR8BEVqgYCKRpFaUJT0JeRILSgLugIcqQVVQSUAnn5FeUq-LR5FwnJG3lePImE5cEGjSFjOi4xGkbA8J-8rEC8mF4LTKBKWF2PFQsLyshhJAAnLq4quAH40M8YZjTKMCnb9CD1nJ_tt7Dnu3MVNvnPJgBvdqriwssb2YeWbfz65Wsau9pi8JCcWPms_dX4MTvCYCYM0djpZ69AQFze_sg8RBme7e5Oz6_Wg3J1-Bjw2vtMn8UhPgH0Gnhl9xP6p2pW9N3GfV_xda2ViD4818czjmE7tOttLk3xu0Wvb72TM8m03fYt_Gpx2Jmxo98aEqsilMj-f8YUQSQx9fon2rPWnkH_3svXupNMH9V_Yr8S4Xv8Bb5uDhg==) +![Activity](https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/chart.svg) *See full stats and charts in [Community Stats Report](./docs/community-stats.md)* diff --git a/README_CN.md b/README_CN.md index ffefb1a..c7dba03 100644 --- a/README_CN.md +++ b/README_CN.md @@ -28,7 +28,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 | 6️⃣ | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | ![p6_version](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_version.json&style=flat) | ![p6_dl](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_dl.json&style=flat) | ![p6_vw](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_p6_vw.json&style=flat) | ![updated](https://img.shields.io/badge/2026--01--29-gray?style=flat) | ### 📈 总下载量累计趋势 -![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OhaLBCjXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h7Lp9-zHbIfD5nSczOZ0Rlveg-7heW03i2Fzv0oWq52S0WadrdwBX4UtSR-VMKvllC3wcXJKNf5zSLPvdVps--cNyGao1TKDHtvl96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9As5sE1ONnkZy2FPQ2-lChAvhN-dINk9KWieJvk9WZEyTQpEckiT1T1JcsKSKMkxKngaJQglIp0AAYRCuZIARSgtaBotEFqwdFUJUoqUsHIshtEqrSpBWhHGVlAkFuFspQJYLUGLJApYrQrSEgBWq1o5FiC1IF_JFZBasHYHAKkFUKYlAKQW0LUKILWgWPkNAlILSrqCIrWAQZVGkVrARfoSUqQWCJ6uAEVqQcVTCYCn71GaJ98WjyJhKUneV48iYSlQlkaRsJTyIo0iYWmZvK-QeDEpYzSNImEpXysWEpYKvpIAEpZWVboC-NEsCCVplGCUkctL6DkHOb3GnuPex7jJdy4Z8N4MOi40trdTWPnmn0-q69jVrpPn7I2En7Wfer9-vMF1JnzksdNJZUJDfP7wK6cQYXZ2_Gxytm1n7T7pW8BT5_8EZPFIN4B8BW4ZvcT-qYfGfjZxn1ccW6P72MNjTTxzPabTh9FOss--tujWTgcZs3w8bB5V5I3rw4Zh6ftQFVnr_uctPmMsi6Hf76Ldav0l5J9FDt6ddOao_wn7PzEul78RRYt4) +![Activity](https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/chart.svg) *完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)* diff --git a/docs/community-stats.md b/docs/community-stats.md index 2b725be..c5ef843 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -3,7 +3,7 @@ > ![updated](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated.json&style=flat) ### 📈 Total Downloads Trend -![Activity](https://kroki.io/vegalite/svg/eNqNls2S2yAMx18l43ZvTWKEje1c20fYW2cPJCYxDTGuTb4mk3cvkI_ZRvLMXjIIfkhCf4xySb4Pq0btZLKYJI1z3bCYzw9qI2cb7Zr9cqbt_AbE2anRTs0P-ezPYNvkxySp1bDqdee0N72Hd-ukmfyyx9ZYWQ-T9161deCOunaNJ8o09Vaj9KZx3oRodrKudbvxdu6tpVxtN73d-43eo-tlO3TS-3HBz8q2ax3IS3LQ6hgHg-vtVr3CV0_Lkx4iUtud1CHDtTSD8iubXtcP8xrQWjp5cyvNXoVdvy9hMvqFFMQ0ZdM0j2d-HM8vFVnpdxOkeCVLntJk8UpWLKfJEpEF0GT1SrKUCRJlKUbLgkYZQllJJ8AAoZCPJMARyjNOoxlCM0FXlSGlWA4jxxIYrWhVGdKKCTGCIrFYIUYqgNUqeUaigNWqgJYAsFrVyLEAqQXpSK6A1IKxOwBILYCclgCQWsDHKoDUgmzkGwSkFuR8BEVqgYCKRpFaUJT0JeRILSgLugIcqQVVQSUAnn5FeUq-LR5FwnJG3lePImE5cEGjSFjOi4xGkbA8J-8rEC8mF4LTKBKWF2PFQsLyshhJAAnLq4quAH40M8YZjTKMCnb9CD1nJ_tt7Dnu3MVNvnPJgBvdqriwssb2YeWbfz65Wsau9pi8JCcWPms_dX4MTvCYCYM0djpZ69AQFze_sg8RBme7e5Oz6_Wg3J1-Bjw2vtMn8UhPgH0Gnhl9xP6p2pW9N3GfV_xda2ViD4818czjmE7tOttLk3xu0Wvb72TM8m03fYt_Gpx2Jmxo98aEqsilMj-f8YUQSQx9fon2rPWnkH_3svXupNMH9V_Yr8S4Xv8Bb5uDhg==) +![Activity](https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/chart.svg) > *Blue: Downloads | Purple: Views (Real-time dynamic)* diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index e71895e..8bd9aeb 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -3,7 +3,7 @@ > ![updated_zh](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2FFu-Jie%2Fdb3d95687075a880af6f1fba76d679c6%2Fraw%2Fbadge_updated_zh.json&style=flat) ### 📈 总下载量累计趋势 -![Activity](https://kroki.io/vegalite/svg/eNqNlsFy2yAQhl8loza3OhaLBCjXPkadAxLIopGFKiE7GY_fvUBiT-pFM70wWvjYXfbHrM_Z97np9EFmzw9Z59w4P2-3R72XT3vjuqV-Mnb7AcTZTW-c3h7Lp9-zHbIfD5nSczOZ0Rlveg-7heW03i2Fzv0oWq52S0WadrdwBX4UtSR-VMKvllC3wcXJKNf5zSLPvdVps--cNyGao1TKDHtvl96qZfO6n-wyqBDMTXKYRznpwQU_jR1aE8hzdjT6FD9mN9lXfQ9fPC3fzBwRZQ_ShORb2c_ar-wno67mJaBKOvnhVvaLDrt-ncNk9As5sE1ONnkZy2FPQ2-lChAvhN-dINk9KWieJvk9WZEyTQpEckiT1T1JcsKSKMkxKngaJQglIp0AAYRCuZIARSgtaBotEFqwdFUJUoqUsHIshtEqrSpBWhHGVlAkFuFspQJYLUGLJApYrQrSEgBWq1o5FiC1IF_JFZBasHYHAKkFUKYlAKQW0LUKILWgWPkNAlILSrqCIrWAQZVGkVrARfoSUqQWCJ6uAEVqQcVTCYCn71GaJ98WjyJhKUneV48iYSlQlkaRsJTyIo0iYWmZvK-QeDEpYzSNImEpXysWEpYKvpIAEpZWVboC-NEsCCVplGCUkctL6DkHOb3GnuPex7jJdy4Z8N4MOi40trdTWPnmn0-q69jVrpPn7I2En7Wfer9-vMF1JnzksdNJZUJDfP7wK6cQYXZ2_Gxytm1n7T7pW8BT5_8EZPFIN4B8BW4ZvcT-qYfGfjZxn1ccW6P72MNjTTxzPabTh9FOss--tujWTgcZs3w8bB5V5I3rw4Zh6ftQFVnr_uctPmMsi6Hf76Ldav0l5J9FDt6ddOao_wn7PzEul78RRYt4) +![Activity](https://gist.githubusercontent.com/Fu-Jie/db3d95687075a880af6f1fba76d679c6/raw/chart.svg) > *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)* From b355c3f0c1d1d72f604ad15fd755d12aca7e1347 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:42:27 +0800 Subject: [PATCH 41/47] feat: implement SVG generation and Gist upload logic in stats script --- scripts/openwebui_stats.py | 75 ++++++++++++++++++++++++++++++++------ 1 file changed, 64 insertions(+), 11 deletions(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 745ce62..9637615 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -1187,23 +1187,24 @@ class OpenWebUIStats: f.write(content) print(f"✅ 文档图表已更新: {doc_path}") - def generate_activity_chart(self, lang: str = "zh") -> str: - """生成 Vega-Lite 趋势图 (内嵌数据,Kroki 服务端渲染不支持外部 URL)""" + def upload_chart_svg(self): + """生成 Vega-Lite SVG 并上传到 Gist (作为独立文件)""" + if not (self.gist_token and self.gist_id): + return + history = self.load_history() if len(history) < 3: - return "" + return # 准备数据点 values = [] for item in history: values.append({"date": item["date"], "downloads": item["total_downloads"]}) - title = "Total Downloads Trend" if lang == "en" else "总下载量累计趋势" - - # Vega-Lite Spec (内嵌数据,Kroki 服务端渲染必须内嵌) + # Vega-Lite Spec vl_spec = { "$schema": "https://vega.github.io/schema/vega-lite/v5.json", - "description": title, + "description": "Total Downloads Trend", "width": 800, "height": 200, "padding": 5, @@ -1243,15 +1244,64 @@ class OpenWebUIStats: } try: - # Kroki encoding for Vega-Lite + # 1. 生成 Kroki URL json_spec = json.dumps(vl_spec) compressed = zlib.compress(json_spec.encode("utf-8"), level=9) encoded = base64.urlsafe_b64encode(compressed).decode("utf-8") - url = f"https://kroki.io/vegalite/svg/{encoded}" - return f"### 📈 {title}\n![Activity]({url})" - except Exception: + kroki_url = f"https://kroki.io/vegalite/svg/{encoded}" + + # 2. 从 Kroki 下载 SVG + print(f"📥 Generating chart via Kroki...") + resp = requests.get(kroki_url) + if resp.status_code != 200: + print(f"⚠️ Kroki request failed: {resp.status_code}") + return + svg_content = resp.text + + # 3. 上传到 Gist + url = f"https://api.github.com/gists/{self.gist_id}" + headers = {"Authorization": f"token {self.gist_token}"} + payload = {"files": {"chart.svg": {"content": svg_content}}} + resp = requests.patch(url, headers=headers, json=payload) + if resp.status_code == 200: + print(f"✅ 图表 SVG 已同步至 Gist: chart.svg") + else: + print(f"⚠️ Gist upload failed: {resp.status_code} {resp.text}") + + except Exception as e: + print(f"⚠️ 上传图表失败: {e}") + + def generate_activity_chart(self, lang: str = "zh") -> str: + """生成 Markdown 图表链接 (使用 Gist Raw URL,固定链接)""" + if not self.gist_id: return "" + title = "Total Downloads Trend" if lang == "en" else "总下载量累计趋势" + + # 使用不带 commit hash 的 raw 链接 (指向最新版) + # 添加时间戳参数避免 GitHub 缓存太久 + # 注意:README 中如果不加时间戳,GitHub 可能会缓存图片。 + # 但我们希望 README 不变。GitHub 的 camo 缓存机制比较激进。 + # 这里的权衡是:要么每天 commit 改时间戳,要么忍受一定的缓存延迟。 + # 实际上 GitHub 对 raw.githubusercontent.com 的缓存大概是 5 分钟 (对于 gist)。 + # 而 camo (github user content proxy) 可能会缓存更久。 + # 我们可以用 purge 缓存的方法,或者接受这个延迟。 + # 对用户来说,昨天的图表和今天的图表区别不大,延迟一天都无所谓。 + + # 使用 cache-control: no-cache 的策略通常对 camo 无效。 + # 最佳策略是:链接本身不带 query param (保证 README 文本不变) + # 相信 GitHub 会最终更新它。 + + gist_user = ( + "Fu-Jie" # Replace with actual username if needed, or parse from somewhere + ) + # 更好的方式是用 gist_id 直接访问 (不需要用户名,但 Raw 需要) + # 格式: https://gist.githubusercontent.com///raw/chart.svg + + url = f"https://gist.githubusercontent.com/{gist_user}/{self.gist_id}/raw/chart.svg" + + return f"### 📈 {title}\n![Activity]({url})" + def main(): """主函数""" @@ -1324,6 +1374,9 @@ def main(): # 生成徽章 stats_client.generate_shields_endpoints(stats, str(badges_dir)) + # 生成并上传 SVG 图表 (每日更新 Gist, README URL 保持不变) + stats_client.upload_chart_svg() + # 更新 README 文件 readme_path = script_dir / "README.md" readme_cn_path = script_dir / "README_CN.md" From a05697df70faef90434b4d2576dc8a5126beeebd Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:47:23 +0800 Subject: [PATCH 42/47] fix: correct vl_spec syntax and use POST for Kroki --- scripts/openwebui_stats.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 9637615..f6e36f0 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -1244,19 +1244,21 @@ class OpenWebUIStats: } try: - # 1. 生成 Kroki URL + # 1. 使用 POST 请求 Kroki (避免 URL 过长问题) json_spec = json.dumps(vl_spec) - compressed = zlib.compress(json_spec.encode("utf-8"), level=9) - encoded = base64.urlsafe_b64encode(compressed).decode("utf-8") - kroki_url = f"https://kroki.io/vegalite/svg/{encoded}" + kroki_url = "https://kroki.io/vegalite/svg" + + print(f"📥 Generating chart via Kroki (POST)...") + resp = requests.post(kroki_url, data=json_spec) - # 2. 从 Kroki 下载 SVG - print(f"📥 Generating chart via Kroki...") - resp = requests.get(kroki_url) if resp.status_code != 200: print(f"⚠️ Kroki request failed: {resp.status_code}") + # 尝试打印一点错误信息 + print(f"Response: {resp.text[:200]}") return + svg_content = resp.text + print(f"✅ Kroki SVG generated ({len(svg_content)} bytes)") # 3. 上传到 Gist url = f"https://api.github.com/gists/{self.gist_id}" @@ -1266,7 +1268,7 @@ class OpenWebUIStats: if resp.status_code == 200: print(f"✅ 图表 SVG 已同步至 Gist: chart.svg") else: - print(f"⚠️ Gist upload failed: {resp.status_code} {resp.text}") + print(f"⚠️ Gist upload failed: {resp.status_code} {resp.text[:200]}") except Exception as e: print(f"⚠️ 上传图表失败: {e}") From d71b4a7351bbaca28723da26d2a27830351af70a Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:49:08 +0800 Subject: [PATCH 43/47] chore: add logging to upload_chart_svg to debug silent failure --- scripts/openwebui_stats.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index f6e36f0..f930654 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -1189,11 +1189,17 @@ class OpenWebUIStats: def upload_chart_svg(self): """生成 Vega-Lite SVG 并上传到 Gist (作为独立文件)""" + print("🚀 Starting chart SVG generation process...") + if not (self.gist_token and self.gist_id): + print("⚠️ Skipping chart upload: GIST_TOKEN or GIST_ID missing") return history = self.load_history() + print(f"📊 History records loaded: {len(history)}") + if len(history) < 3: + print("⚠️ Skipping chart upload: not enough history (<3 records)") return # 准备数据点 From d7c25aa97323cca6586ad6915e5241e1879bd48e Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:50:42 +0800 Subject: [PATCH 44/47] fix: relax history requirements for chart generation --- scripts/openwebui_stats.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index f930654..178fb11 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -1198,8 +1198,8 @@ class OpenWebUIStats: history = self.load_history() print(f"📊 History records loaded: {len(history)}") - if len(history) < 3: - print("⚠️ Skipping chart upload: not enough history (<3 records)") + if len(history) < 1: + print("⚠️ Skipping chart upload: no history") return # 准备数据点 From 1736a1bfbfa0ae5e2f11a7691a703cb9b9fbf956 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 13:53:55 +0800 Subject: [PATCH 45/47] feat: auto-rebuild stats history from git logs if local/gist data is missing --- scripts/openwebui_stats.py | 160 ++++++++++++++++++++++++++++++++++++- 1 file changed, 156 insertions(+), 4 deletions(-) diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 178fb11..78983ae 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -22,6 +22,8 @@ import json import requests import zlib import base64 +import re +import subprocess from datetime import datetime, timezone, timedelta from typing import Optional from pathlib import Path @@ -94,6 +96,7 @@ class OpenWebUIStats: def load_history(self) -> list: """加载历史记录 (优先尝试 Gist, 其次本地文件)""" + history = [] # 尝试从 Gist 加载 if self.gist_token and self.gist_id: try: @@ -106,18 +109,67 @@ class OpenWebUIStats: if file_info: content = file_info.get("content") print(f"✅ 已从 Gist 加载历史记录 ({self.gist_id})") - return json.loads(content) + history = json.loads(content) except Exception as e: print(f"⚠️ 无法从 Gist 加载历史: {e}") # 降级:从本地加载 - if self.history_file.exists(): + if not history and self.history_file.exists(): try: with open(self.history_file, "r", encoding="utf-8") as f: - return json.load(f) + history = json.load(f) except Exception as e: print(f"⚠️ 无法加载本地历史记录: {e}") - return [] + + # 如果历史记录太少 (< 5条),尝试从 Git 历史重建 + if len(history) < 5 and os.path.isdir(".git"): + print("📉 History too short, attempting Git rebuild...") + git_history = self.rebuild_history_from_git() + + if len(git_history) > len(history): + print(f"✅ Rebuilt history from Git: {len(git_history)} records") + + # 转成 dict以便合并 + hist_dict = {item["date"]: item for item in git_history} + for item in history: + hist_dict[item["date"]] = item # 覆盖/新增 + + # 转回 list 并排序 + new_history = list(hist_dict.values()) + new_history.sort(key=lambda x: x["date"]) + + history = new_history + + # 立即保存到本地 + with open(self.history_file, "w", encoding="utf-8") as f: + json.dump(history, f, ensure_ascii=False, indent=2) + print(f"✅ Rebuilt history saved to local file ({self.history_file})") + + # 如果有 Gist 配置,也同步到 Gist + if self.gist_token and self.gist_id: + try: + url = f"https://api.github.com/gists/{self.gist_id}" + headers = {"Authorization": f"token {self.gist_token}"} + payload = { + "files": { + self.history_filename: { + "content": json.dumps( + history, ensure_ascii=False, indent=2 + ) + } + } + } + resp = requests.patch(url, headers=headers, json=payload) + if resp.status_code == 200: + print(f"✅ Rebuilt history synced to Gist ({self.gist_id})") + else: + print( + f"⚠️ Failed to sync rebuilt history to Gist: {resp.status_code} - {resp.text}" + ) + except Exception as e: + print(f"⚠️ Error syncing rebuilt history to Gist: {e}") + + return history def save_history(self, stats: dict): """保存当前快照到历史记录 (优先保存到 Gist, 其次本地)""" @@ -254,6 +306,106 @@ class OpenWebUIStats: return post_type + def rebuild_history_from_git(self) -> list: + """从 Git 历史提交中重建统计数据""" + history = [] + try: + # 获取所有修改了 docs/stats-history.json 的 commit + # 格式: hash date + cmd = [ + "git", + "log", + "--pretty=format:%H %ad", + "--date=short", + str(self.history_file), + ] + result = subprocess.run(cmd, capture_output=True, text=True, check=True) + + commits = result.stdout.strip().splitlines() + print(f"🔍 Found {len(commits)} commits modifying stats file") + + seen_dates = set() + + # 从旧到新处理(git log 默认是从新到旧,所以我们要反转或者用 reverse) + # 其实顺序无所谓,只要最后 sort 一下就行 + for line in reversed(commits): # Process from oldest to newest + parts = line.split() + if len(parts) < 2: + continue + + commit_hash = parts[0] + commit_date = parts[1] # YYYY-MM-DD + + if commit_date in seen_dates: + continue + seen_dates.add(commit_date) + + # 读取该 commit 时的文件内容 + # Note: The file name in git show needs to be relative to the repo root + show_cmd = ["git", "show", f"{commit_hash}:{self.history_file}"] + show_res = subprocess.run( + show_cmd, capture_output=True, text=True, check=True + ) + + if show_res.returncode == 0: + try: + # Git history might contain the full history JSON, or just a single snapshot. + # We need to handle both cases. + content = show_res.stdout.strip() + if content.startswith("[") and content.endswith("]"): + # It's a full history list, take the last item + data_list = json.loads(content) + if data_list: + data = data_list[-1] + else: + continue + else: + # It's a single snapshot + data = json.loads(content) + + # Ensure the date matches the commit date, or use the one from data if available + entry_date = data.get("date", commit_date) + if entry_date != commit_date: + print( + f"⚠️ Date mismatch for commit {commit_hash}: file date {entry_date}, commit date {commit_date}. Using commit date." + ) + entry_date = commit_date + + history.append( + { + "date": entry_date, + "total_downloads": data.get("total_downloads", 0), + "total_views": data.get("total_views", 0), + "total_upvotes": data.get("total_upvotes", 0), + "total_saves": data.get("total_saves", 0), + "followers": data.get("followers", 0), + "points": data.get("points", 0), + "contributions": data.get("contributions", 0), + "posts": data.get( + "posts", {} + ), # Include individual post stats + } + ) + except json.JSONDecodeError: + print( + f"⚠️ Could not decode JSON from commit {commit_hash} for {self.history_file}" + ) + except Exception as e: + print(f"⚠️ Error processing commit {commit_hash}: {e}") + + # Sort by date to ensure chronological order + history.sort(key=lambda x: x["date"]) + return history + + except subprocess.CalledProcessError as e: + print( + f"⚠️ Git command failed: {e.cmd}\nStdout: {e.stdout}\nStderr: {e.stderr}" + ) + return [] + except Exception as e: + print(f"⚠️ Error rebuilding history from git: {e}") + return [] + def _parse_user_id_from_token(self, token: str) -> str: """从 JWT Token 中解析用户 ID""" import base64 From 0b5663636fb83b58c1b3e123e96edf2f9acb0b89 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 14:00:17 +0800 Subject: [PATCH 46/47] chore: hydrate stats history with recovered data (38 days record) --- docs/stats-history.json | 850 ++-------------------------------------- 1 file changed, 38 insertions(+), 812 deletions(-) diff --git a/docs/stats-history.json b/docs/stats-history.json index 1a2ebbf..56537b8 100644 --- a/docs/stats-history.json +++ b/docs/stats-history.json @@ -6,21 +6,7 @@ "total_upvotes": 54, "total_saves": 44, "followers": 35, - "points": 63, - "contributions": 17, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 218, - "export_mulit_table_to_excel_244b8f9d": 168, - "async_context_compression_b1655bc8": 111, - "flash_card_65a2ea8f": 73, - "smart_infographic_ad6f0c7f": 62, - "export_to_word_enhanced_formatting_fca6a315": 45, - "智能信息图_e04a48ff": 31, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 13, - "闪记卡生成插件_4a31eac3": 12, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 10, - "异步上下文压缩_5c0617cb": 5 - } + "points": 63 }, { "date": "2026-01-06", @@ -29,21 +15,7 @@ "total_upvotes": 54, "total_saves": 48, "followers": 45, - "points": 62, - "contributions": 18, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 258, - "export_mulit_table_to_excel_244b8f9d": 173, - "async_context_compression_b1655bc8": 114, - "flash_card_65a2ea8f": 78, - "smart_infographic_ad6f0c7f": 70, - "export_to_word_enhanced_formatting_fca6a315": 57, - "智能信息图_e04a48ff": 33, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 16, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 14, - "闪记卡生成插件_4a31eac3": 12, - "异步上下文压缩_5c0617cb": 5 - } + "points": 62 }, { "date": "2026-01-07", @@ -52,21 +24,7 @@ "total_upvotes": 55, "total_saves": 50, "followers": 50, - "points": 63, - "contributions": 18, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 293, - "export_mulit_table_to_excel_244b8f9d": 178, - "async_context_compression_b1655bc8": 119, - "smart_infographic_ad6f0c7f": 87, - "flash_card_65a2ea8f": 84, - "export_to_word_enhanced_formatting_fca6a315": 69, - "智能信息图_e04a48ff": 33, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 20, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 15, - "闪记卡生成插件_4a31eac3": 12, - "异步上下文压缩_5c0617cb": 5 - } + "points": 63 }, { "date": "2026-01-08", @@ -75,23 +33,7 @@ "total_upvotes": 60, "total_saves": 53, "followers": 54, - "points": 68, - "contributions": 20, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 308, - "export_mulit_table_to_excel_244b8f9d": 179, - "async_context_compression_b1655bc8": 121, - "smart_infographic_ad6f0c7f": 98, - "flash_card_65a2ea8f": 91, - "export_to_word_enhanced_formatting_fca6a315": 76, - "智能信息图_e04a48ff": 34, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 26, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 16, - "闪记卡生成插件_4a31eac3": 12, - "deep_dive_c0b846e4": 5, - "异步上下文压缩_5c0617cb": 5, - "精读_99830b0f": 1 - } + "points": 68 }, { "date": "2026-01-09", @@ -100,23 +42,7 @@ "total_upvotes": 62, "total_saves": 56, "followers": 59, - "points": 70, - "contributions": 20, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 323, - "export_mulit_table_to_excel_244b8f9d": 180, - "async_context_compression_b1655bc8": 121, - "smart_infographic_ad6f0c7f": 106, - "flash_card_65a2ea8f": 91, - "export_to_word_enhanced_formatting_fca6a315": 80, - "智能信息图_e04a48ff": 35, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 30, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 17, - "deep_dive_c0b846e4": 14, - "闪记卡生成插件_4a31eac3": 12, - "异步上下文压缩_5c0617cb": 6, - "精读_99830b0f": 1 - } + "points": 70 }, { "date": "2026-01-10", @@ -125,24 +51,7 @@ "total_upvotes": 68, "total_saves": 67, "followers": 75, - "points": 77, - "contributions": 22, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 348, - "export_mulit_table_to_excel_244b8f9d": 181, - "async_context_compression_b1655bc8": 128, - "smart_infographic_ad6f0c7f": 120, - "flash_card_65a2ea8f": 94, - "export_to_word_enhanced_formatting_fca6a315": 87, - "智能信息图_e04a48ff": 35, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 33, - "deep_dive_c0b846e4": 24, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 17, - "闪记卡生成插件_4a31eac3": 12, - "异步上下文压缩_5c0617cb": 7, - "精读_99830b0f": 1, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 77 }, { "date": "2026-01-11", @@ -151,24 +60,7 @@ "total_upvotes": 79, "total_saves": 77, "followers": 82, - "points": 90, - "contributions": 22, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 375, - "export_mulit_table_to_excel_244b8f9d": 186, - "smart_infographic_ad6f0c7f": 141, - "async_context_compression_b1655bc8": 138, - "export_to_word_enhanced_formatting_fca6a315": 100, - "flash_card_65a2ea8f": 100, - "智能信息图_e04a48ff": 35, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 35, - "deep_dive_c0b846e4": 31, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 18, - "闪记卡生成插件_4a31eac3": 12, - "异步上下文压缩_5c0617cb": 8, - "精读_99830b0f": 3, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 90 }, { "date": "2026-01-12", @@ -177,25 +69,7 @@ "total_upvotes": 87, "total_saves": 85, "followers": 91, - "points": 98, - "contributions": 23, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 400, - "export_mulit_table_to_excel_244b8f9d": 189, - "smart_infographic_ad6f0c7f": 151, - "async_context_compression_b1655bc8": 144, - "export_to_word_enhanced_formatting_fca6a315": 106, - "flash_card_65a2ea8f": 105, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 40, - "智能信息图_e04a48ff": 35, - "deep_dive_c0b846e4": 35, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 19, - "异步上下文压缩_5c0617cb": 12, - "闪记卡生成插件_4a31eac3": 12, - "精读_99830b0f": 5, - "markdown_normalizer_baaa8732": 3, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 98 }, { "date": "2026-01-13", @@ -204,25 +78,7 @@ "total_upvotes": 88, "total_saves": 96, "followers": 99, - "points": 100, - "contributions": 23, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 425, - "export_mulit_table_to_excel_244b8f9d": 190, - "smart_infographic_ad6f0c7f": 167, - "async_context_compression_b1655bc8": 151, - "export_to_word_enhanced_formatting_fca6a315": 111, - "flash_card_65a2ea8f": 107, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 46, - "deep_dive_c0b846e4": 41, - "智能信息图_e04a48ff": 37, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 20, - "markdown_normalizer_baaa8732": 18, - "异步上下文压缩_5c0617cb": 13, - "闪记卡生成插件_4a31eac3": 12, - "精读_99830b0f": 5, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 100 }, { "date": "2026-01-14", @@ -231,26 +87,7 @@ "total_upvotes": 93, "total_saves": 109, "followers": 104, - "points": 106, - "contributions": 25, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 453, - "export_mulit_table_to_excel_244b8f9d": 194, - "smart_infographic_ad6f0c7f": 186, - "async_context_compression_b1655bc8": 156, - "export_to_word_enhanced_formatting_fca6a315": 123, - "flash_card_65a2ea8f": 119, - "deep_dive_c0b846e4": 55, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 49, - "智能信息图_e04a48ff": 41, - "markdown_normalizer_baaa8732": 31, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 21, - "异步上下文压缩_5c0617cb": 14, - "闪记卡生成插件_4a31eac3": 12, - "精读_99830b0f": 6, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 106 }, { "date": "2026-01-15", @@ -259,26 +96,7 @@ "total_upvotes": 93, "total_saves": 109, "followers": 108, - "points": 106, - "contributions": 25, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 474, - "smart_infographic_ad6f0c7f": 202, - "export_mulit_table_to_excel_244b8f9d": 197, - "async_context_compression_b1655bc8": 162, - "export_to_word_enhanced_formatting_fca6a315": 124, - "flash_card_65a2ea8f": 124, - "deep_dive_c0b846e4": 56, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 50, - "markdown_normalizer_baaa8732": 42, - "智能信息图_e04a48ff": 41, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 22, - "异步上下文压缩_5c0617cb": 14, - "闪记卡生成插件_4a31eac3": 13, - "精读_99830b0f": 6, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 106 }, { "date": "2026-01-16", @@ -287,26 +105,7 @@ "total_upvotes": 94, "total_saves": 121, "followers": 114, - "points": 108, - "contributions": 25, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 498, - "smart_infographic_ad6f0c7f": 212, - "export_mulit_table_to_excel_244b8f9d": 201, - "async_context_compression_b1655bc8": 171, - "export_to_word_enhanced_formatting_fca6a315": 128, - "flash_card_65a2ea8f": 128, - "deep_dive_c0b846e4": 57, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 56, - "markdown_normalizer_baaa8732": 51, - "智能信息图_e04a48ff": 41, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 22, - "异步上下文压缩_5c0617cb": 14, - "闪记卡生成插件_4a31eac3": 13, - "精读_99830b0f": 6, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 108 }, { "date": "2026-01-17", @@ -315,26 +114,7 @@ "total_upvotes": 99, "total_saves": 127, "followers": 120, - "points": 113, - "contributions": 25, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 510, - "smart_infographic_ad6f0c7f": 229, - "export_mulit_table_to_excel_244b8f9d": 202, - "async_context_compression_b1655bc8": 174, - "export_to_word_enhanced_formatting_fca6a315": 137, - "flash_card_65a2ea8f": 133, - "markdown_normalizer_baaa8732": 64, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 62, - "deep_dive_c0b846e4": 58, - "智能信息图_e04a48ff": 41, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 22, - "闪记卡生成插件_4a31eac3": 16, - "异步上下文压缩_5c0617cb": 14, - "精读_99830b0f": 6, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 113 }, { "date": "2026-01-18", @@ -343,26 +123,7 @@ "total_upvotes": 119, "total_saves": 131, "followers": 129, - "points": 133, - "contributions": 25, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 529, - "smart_infographic_ad6f0c7f": 252, - "export_mulit_table_to_excel_244b8f9d": 208, - "async_context_compression_b1655bc8": 178, - "export_to_word_enhanced_formatting_fca6a315": 155, - "flash_card_65a2ea8f": 135, - "markdown_normalizer_baaa8732": 81, - "deep_dive_c0b846e4": 65, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 63, - "智能信息图_e04a48ff": 42, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 22, - "闪记卡生成插件_4a31eac3": 16, - "异步上下文压缩_5c0617cb": 14, - "精读_99830b0f": 6, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 133 }, { "date": "2026-01-19", @@ -371,26 +132,7 @@ "total_upvotes": 120, "total_saves": 143, "followers": 135, - "points": 134, - "contributions": 25, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 540, - "smart_infographic_ad6f0c7f": 272, - "export_mulit_table_to_excel_244b8f9d": 211, - "async_context_compression_b1655bc8": 185, - "export_to_word_enhanced_formatting_fca6a315": 162, - "flash_card_65a2ea8f": 140, - "markdown_normalizer_baaa8732": 90, - "deep_dive_c0b846e4": 69, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 65, - "智能信息图_e04a48ff": 42, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 22, - "闪记卡生成插件_4a31eac3": 16, - "异步上下文压缩_5c0617cb": 14, - "精读_99830b0f": 6, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 134 }, { "date": "2026-01-20", @@ -399,27 +141,7 @@ "total_upvotes": 121, "total_saves": 150, "followers": 140, - "points": 135, - "contributions": 26, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 557, - "smart_infographic_ad6f0c7f": 287, - "export_mulit_table_to_excel_244b8f9d": 220, - "async_context_compression_b1655bc8": 193, - "export_to_word_enhanced_formatting_fca6a315": 174, - "flash_card_65a2ea8f": 146, - "markdown_normalizer_baaa8732": 97, - "deep_dive_c0b846e4": 75, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 66, - "智能信息图_e04a48ff": 44, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 24, - "闪记卡生成插件_4a31eac3": 16, - "异步上下文压缩_5c0617cb": 14, - "精读_99830b0f": 6, - "folder_memory_auto_evolving_project_context_4a9875b2": 3, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 135 }, { "date": "2026-01-21", @@ -428,27 +150,7 @@ "total_upvotes": 121, "total_saves": 154, "followers": 146, - "points": 135, - "contributions": 26, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 566, - "smart_infographic_ad6f0c7f": 305, - "export_mulit_table_to_excel_244b8f9d": 231, - "async_context_compression_b1655bc8": 199, - "export_to_word_enhanced_formatting_fca6a315": 181, - "flash_card_65a2ea8f": 149, - "markdown_normalizer_baaa8732": 101, - "deep_dive_c0b846e4": 76, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 69, - "智能信息图_e04a48ff": 45, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 27, - "闪记卡生成插件_4a31eac3": 19, - "异步上下文压缩_5c0617cb": 15, - "精读_99830b0f": 8, - "folder_memory_auto_evolving_project_context_4a9875b2": 7, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 135 }, { "date": "2026-01-22", @@ -457,27 +159,7 @@ "total_upvotes": 129, "total_saves": 164, "followers": 152, - "points": 143, - "contributions": 26, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 576, - "smart_infographic_ad6f0c7f": 322, - "export_mulit_table_to_excel_244b8f9d": 238, - "async_context_compression_b1655bc8": 202, - "export_to_word_enhanced_formatting_fca6a315": 191, - "flash_card_65a2ea8f": 155, - "markdown_normalizer_baaa8732": 110, - "deep_dive_c0b846e4": 77, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 72, - "智能信息图_e04a48ff": 45, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 27, - "闪记卡生成插件_4a31eac3": 19, - "异步上下文压缩_5c0617cb": 15, - "folder_memory_auto_evolving_project_context_4a9875b2": 9, - "精读_99830b0f": 8, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 143 }, { "date": "2026-01-23", @@ -486,27 +168,7 @@ "total_upvotes": 129, "total_saves": 165, "followers": 154, - "points": 143, - "contributions": 26, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 593, - "smart_infographic_ad6f0c7f": 347, - "export_mulit_table_to_excel_244b8f9d": 245, - "async_context_compression_b1655bc8": 210, - "export_to_word_enhanced_formatting_fca6a315": 207, - "flash_card_65a2ea8f": 158, - "markdown_normalizer_baaa8732": 127, - "deep_dive_c0b846e4": 84, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 80, - "智能信息图_e04a48ff": 45, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 27, - "闪记卡生成插件_4a31eac3": 19, - "folder_memory_auto_evolving_project_context_4a9875b2": 16, - "异步上下文压缩_5c0617cb": 15, - "精读_99830b0f": 9, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 143 }, { "date": "2026-01-24", @@ -515,27 +177,7 @@ "total_upvotes": 129, "total_saves": 173, "followers": 156, - "points": 143, - "contributions": 26, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 605, - "smart_infographic_ad6f0c7f": 366, - "export_mulit_table_to_excel_244b8f9d": 248, - "async_context_compression_b1655bc8": 218, - "export_to_word_enhanced_formatting_fca6a315": 217, - "flash_card_65a2ea8f": 159, - "markdown_normalizer_baaa8732": 136, - "deep_dive_c0b846e4": 87, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 82, - "智能信息图_e04a48ff": 45, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 27, - "folder_memory_auto_evolving_project_context_4a9875b2": 21, - "闪记卡生成插件_4a31eac3": 19, - "异步上下文压缩_5c0617cb": 18, - "精读_99830b0f": 9, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 143 }, { "date": "2026-01-25", @@ -544,28 +186,7 @@ "total_upvotes": 133, "total_saves": 176, "followers": 157, - "points": 147, - "contributions": 28, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 618, - "smart_infographic_ad6f0c7f": 396, - "export_mulit_table_to_excel_244b8f9d": 249, - "async_context_compression_b1655bc8": 222, - "export_to_word_enhanced_formatting_fca6a315": 219, - "flash_card_65a2ea8f": 164, - "markdown_normalizer_baaa8732": 144, - "deep_dive_c0b846e4": 91, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 86, - "智能信息图_e04a48ff": 46, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 27, - "folder_memory_auto_evolving_project_context_4a9875b2": 26, - "闪记卡生成插件_4a31eac3": 19, - "异步上下文压缩_5c0617cb": 18, - "精读_99830b0f": 9, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 147 }, { "date": "2026-01-26", @@ -574,29 +195,7 @@ "total_upvotes": 141, "total_saves": 188, "followers": 163, - "points": 157, - "contributions": 33, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 642, - "smart_infographic_ad6f0c7f": 418, - "export_mulit_table_to_excel_244b8f9d": 262, - "export_to_word_enhanced_formatting_fca6a315": 235, - "async_context_compression_b1655bc8": 233, - "flash_card_65a2ea8f": 171, - "markdown_normalizer_baaa8732": 153, - "deep_dive_c0b846e4": 93, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 87, - "智能信息图_e04a48ff": 47, - "folder_memory_auto_evolving_project_context_4a9875b2": 27, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 27, - "异步上下文压缩_5c0617cb": 22, - "闪记卡生成插件_4a31eac3": 19, - "精读_99830b0f": 9, - "github_copilot_official_sdk_pipe_ce96f7b4": 3, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 157 }, { "date": "2026-01-27", @@ -605,29 +204,7 @@ "total_upvotes": 150, "total_saves": 197, "followers": 165, - "points": 166, - "contributions": 35, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 663, - "smart_infographic_ad6f0c7f": 439, - "export_mulit_table_to_excel_244b8f9d": 264, - "async_context_compression_b1655bc8": 239, - "export_to_word_enhanced_formatting_fca6a315": 239, - "flash_card_65a2ea8f": 179, - "markdown_normalizer_baaa8732": 164, - "deep_dive_c0b846e4": 95, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 89, - "智能信息图_e04a48ff": 48, - "folder_memory_auto_evolving_project_context_4a9875b2": 29, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 28, - "异步上下文压缩_5c0617cb": 23, - "闪记卡生成插件_4a31eac3": 20, - "精读_99830b0f": 10, - "github_copilot_official_sdk_pipe_ce96f7b4": 9, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 166 }, { "date": "2026-01-28", @@ -636,30 +213,7 @@ "total_upvotes": 153, "total_saves": 202, "followers": 167, - "points": 170, - "contributions": 36, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 685, - "smart_infographic_ad6f0c7f": 461, - "export_mulit_table_to_excel_244b8f9d": 267, - "export_to_word_enhanced_formatting_fca6a315": 247, - "async_context_compression_b1655bc8": 244, - "flash_card_65a2ea8f": 181, - "markdown_normalizer_baaa8732": 167, - "deep_dive_c0b846e4": 100, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 96, - "智能信息图_e04a48ff": 48, - "folder_memory_auto_evolving_project_context_4a9875b2": 29, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 28, - "异步上下文压缩_5c0617cb": 23, - "闪记卡生成插件_4a31eac3": 20, - "github_copilot_official_sdk_pipe_ce96f7b4": 15, - "精读_99830b0f": 10, - "ai_task_instruction_generator_9bab8b37": 8, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 170 }, { "date": "2026-01-29", @@ -668,30 +222,7 @@ "total_upvotes": 165, "total_saves": 213, "followers": 171, - "points": 186, - "contributions": 38, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 709, - "smart_infographic_ad6f0c7f": 494, - "export_mulit_table_to_excel_244b8f9d": 278, - "export_to_word_enhanced_formatting_fca6a315": 269, - "async_context_compression_b1655bc8": 257, - "flash_card_65a2ea8f": 188, - "markdown_normalizer_baaa8732": 184, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 100, - "deep_dive_c0b846e4": 100, - "智能信息图_e04a48ff": 49, - "folder_memory_auto_evolving_project_context_4a9875b2": 29, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 28, - "异步上下文压缩_5c0617cb": 24, - "ai_task_instruction_generator_9bab8b37": 24, - "闪记卡生成插件_4a31eac3": 20, - "github_copilot_official_sdk_pipe_ce96f7b4": 17, - "精读_99830b0f": 10, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 186 }, { "date": "2026-01-30", @@ -700,30 +231,7 @@ "total_upvotes": 167, "total_saves": 219, "followers": 175, - "points": 194, - "contributions": 40, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 722, - "smart_infographic_ad6f0c7f": 502, - "export_mulit_table_to_excel_244b8f9d": 285, - "export_to_word_enhanced_formatting_fca6a315": 274, - "async_context_compression_b1655bc8": 262, - "markdown_normalizer_baaa8732": 201, - "flash_card_65a2ea8f": 192, - "deep_dive_c0b846e4": 103, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 101, - "智能信息图_e04a48ff": 49, - "ai_task_instruction_generator_9bab8b37": 45, - "folder_memory_auto_evolving_project_context_4a9875b2": 33, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 29, - "github_copilot_official_sdk_pipe_ce96f7b4": 25, - "异步上下文压缩_5c0617cb": 24, - "闪记卡生成插件_4a31eac3": 20, - "精读_99830b0f": 10, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 194 }, { "date": "2026-01-31", @@ -732,30 +240,7 @@ "total_upvotes": 167, "total_saves": 221, "followers": 176, - "points": 197, - "contributions": 40, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 738, - "smart_infographic_ad6f0c7f": 521, - "export_mulit_table_to_excel_244b8f9d": 291, - "export_to_word_enhanced_formatting_fca6a315": 282, - "async_context_compression_b1655bc8": 274, - "markdown_normalizer_baaa8732": 215, - "flash_card_65a2ea8f": 192, - "deep_dive_c0b846e4": 106, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 101, - "ai_task_instruction_generator_9bab8b37": 62, - "智能信息图_e04a48ff": 49, - "folder_memory_auto_evolving_project_context_4a9875b2": 36, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 29, - "github_copilot_official_sdk_pipe_ce96f7b4": 28, - "异步上下文压缩_5c0617cb": 25, - "闪记卡生成插件_4a31eac3": 20, - "精读_99830b0f": 10, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 197 }, { "date": "2026-02-01", @@ -764,30 +249,7 @@ "total_upvotes": 167, "total_saves": 222, "followers": 177, - "points": 197, - "contributions": 40, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 744, - "smart_infographic_ad6f0c7f": 535, - "export_mulit_table_to_excel_244b8f9d": 293, - "export_to_word_enhanced_formatting_fca6a315": 282, - "async_context_compression_b1655bc8": 278, - "markdown_normalizer_baaa8732": 222, - "flash_card_65a2ea8f": 193, - "deep_dive_c0b846e4": 108, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 101, - "ai_task_instruction_generator_9bab8b37": 72, - "智能信息图_e04a48ff": 49, - "folder_memory_auto_evolving_project_context_4a9875b2": 39, - "github_copilot_official_sdk_pipe_ce96f7b4": 30, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 29, - "异步上下文压缩_5c0617cb": 25, - "闪记卡生成插件_4a31eac3": 20, - "精读_99830b0f": 10, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 197 }, { "date": "2026-02-02", @@ -796,30 +258,7 @@ "total_upvotes": 169, "total_saves": 235, "followers": 181, - "points": 200, - "contributions": 40, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 767, - "smart_infographic_ad6f0c7f": 550, - "export_to_word_enhanced_formatting_fca6a315": 304, - "export_mulit_table_to_excel_244b8f9d": 300, - "async_context_compression_b1655bc8": 289, - "markdown_normalizer_baaa8732": 239, - "flash_card_65a2ea8f": 198, - "deep_dive_c0b846e4": 113, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 108, - "ai_task_instruction_generator_9bab8b37": 82, - "智能信息图_e04a48ff": 50, - "folder_memory_auto_evolving_project_context_4a9875b2": 41, - "github_copilot_official_sdk_pipe_ce96f7b4": 39, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 31, - "异步上下文压缩_5c0617cb": 25, - "闪记卡生成插件_4a31eac3": 21, - "精读_99830b0f": 11, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 200 }, { "date": "2026-02-03", @@ -828,30 +267,7 @@ "total_upvotes": 169, "total_saves": 235, "followers": 183, - "points": 202, - "contributions": 40, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 781, - "smart_infographic_ad6f0c7f": 558, - "export_to_word_enhanced_formatting_fca6a315": 308, - "export_mulit_table_to_excel_244b8f9d": 305, - "async_context_compression_b1655bc8": 294, - "markdown_normalizer_baaa8732": 247, - "flash_card_65a2ea8f": 200, - "deep_dive_c0b846e4": 114, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 111, - "ai_task_instruction_generator_9bab8b37": 97, - "智能信息图_e04a48ff": 50, - "folder_memory_auto_evolving_project_context_4a9875b2": 43, - "github_copilot_official_sdk_pipe_ce96f7b4": 40, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 31, - "异步上下文压缩_5c0617cb": 25, - "闪记卡生成插件_4a31eac3": 21, - "精读_99830b0f": 11, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 202 }, { "date": "2026-02-04", @@ -860,30 +276,7 @@ "total_upvotes": 210, "total_saves": 239, "followers": 188, - "points": 243, - "contributions": 40, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 804, - "smart_infographic_ad6f0c7f": 576, - "export_to_word_enhanced_formatting_fca6a315": 319, - "export_mulit_table_to_excel_244b8f9d": 317, - "async_context_compression_b1655bc8": 310, - "markdown_normalizer_baaa8732": 259, - "flash_card_65a2ea8f": 206, - "deep_dive_c0b846e4": 118, - "ai_task_instruction_generator_9bab8b37": 116, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 113, - "智能信息图_e04a48ff": 53, - "folder_memory_auto_evolving_project_context_4a9875b2": 45, - "github_copilot_official_sdk_pipe_ce96f7b4": 41, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 32, - "异步上下文压缩_5c0617cb": 27, - "闪记卡生成插件_4a31eac3": 23, - "精读_99830b0f": 15, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 243 }, { "date": "2026-02-05", @@ -892,30 +285,7 @@ "total_upvotes": 211, "total_saves": 248, "followers": 196, - "points": 244, - "contributions": 40, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 845, - "smart_infographic_ad6f0c7f": 599, - "export_to_word_enhanced_formatting_fca6a315": 330, - "export_mulit_table_to_excel_244b8f9d": 323, - "async_context_compression_b1655bc8": 317, - "markdown_normalizer_baaa8732": 271, - "flash_card_65a2ea8f": 209, - "ai_task_instruction_generator_9bab8b37": 127, - "deep_dive_c0b846e4": 127, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 116, - "智能信息图_e04a48ff": 56, - "folder_memory_auto_evolving_project_context_4a9875b2": 50, - "github_copilot_official_sdk_pipe_ce96f7b4": 44, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 35, - "异步上下文压缩_5c0617cb": 30, - "闪记卡生成插件_4a31eac3": 26, - "精读_99830b0f": 17, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 244 }, { "date": "2026-02-06", @@ -924,30 +294,7 @@ "total_upvotes": 213, "total_saves": 253, "followers": 202, - "points": 246, - "contributions": 40, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 876, - "smart_infographic_ad6f0c7f": 627, - "export_to_word_enhanced_formatting_fca6a315": 343, - "export_mulit_table_to_excel_244b8f9d": 327, - "async_context_compression_b1655bc8": 326, - "markdown_normalizer_baaa8732": 291, - "flash_card_65a2ea8f": 213, - "ai_task_instruction_generator_9bab8b37": 138, - "deep_dive_c0b846e4": 131, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 119, - "智能信息图_e04a48ff": 56, - "folder_memory_auto_evolving_project_context_4a9875b2": 55, - "github_copilot_official_sdk_pipe_ce96f7b4": 49, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 37, - "异步上下文压缩_5c0617cb": 31, - "闪记卡生成插件_4a31eac3": 27, - "精读_99830b0f": 17, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 246 }, { "date": "2026-02-07", @@ -956,30 +303,7 @@ "total_upvotes": 221, "total_saves": 258, "followers": 205, - "points": 258, - "contributions": 42, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 890, - "smart_infographic_ad6f0c7f": 645, - "export_to_word_enhanced_formatting_fca6a315": 358, - "async_context_compression_b1655bc8": 336, - "export_mulit_table_to_excel_244b8f9d": 330, - "markdown_normalizer_baaa8732": 298, - "flash_card_65a2ea8f": 214, - "ai_task_instruction_generator_9bab8b37": 157, - "deep_dive_c0b846e4": 137, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 119, - "github_copilot_official_sdk_pipe_ce96f7b4": 65, - "智能信息图_e04a48ff": 58, - "folder_memory_auto_evolving_project_context_4a9875b2": 57, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 37, - "异步上下文压缩_5c0617cb": 32, - "闪记卡生成插件_4a31eac3": 27, - "精读_99830b0f": 19, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 258 }, { "date": "2026-02-08", @@ -988,30 +312,7 @@ "total_upvotes": 221, "total_saves": 263, "followers": 207, - "points": 259, - "contributions": 43, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 909, - "smart_infographic_ad6f0c7f": 661, - "export_to_word_enhanced_formatting_fca6a315": 361, - "async_context_compression_b1655bc8": 347, - "export_mulit_table_to_excel_244b8f9d": 333, - "markdown_normalizer_baaa8732": 308, - "flash_card_65a2ea8f": 215, - "ai_task_instruction_generator_9bab8b37": 172, - "deep_dive_c0b846e4": 143, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 122, - "github_copilot_official_sdk_pipe_ce96f7b4": 70, - "智能信息图_e04a48ff": 58, - "folder_memory_auto_evolving_project_context_4a9875b2": 57, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 37, - "异步上下文压缩_5c0617cb": 33, - "闪记卡生成插件_4a31eac3": 27, - "精读_99830b0f": 19, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 259 }, { "date": "2026-02-09", @@ -1020,31 +321,7 @@ "total_upvotes": 224, "total_saves": 267, "followers": 214, - "points": 262, - "contributions": 44, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 929, - "smart_infographic_ad6f0c7f": 672, - "export_to_word_enhanced_formatting_fca6a315": 373, - "async_context_compression_b1655bc8": 359, - "export_mulit_table_to_excel_244b8f9d": 340, - "markdown_normalizer_baaa8732": 317, - "flash_card_65a2ea8f": 220, - "ai_task_instruction_generator_9bab8b37": 183, - "deep_dive_c0b846e4": 146, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 124, - "github_copilot_official_sdk_pipe_ce96f7b4": 90, - "folder_memory_auto_evolving_project_context_4a9875b2": 59, - "智能信息图_e04a48ff": 58, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 37, - "异步上下文压缩_5c0617cb": 33, - "闪记卡生成插件_4a31eac3": 27, - "精读_99830b0f": 24, - "github_copilot_sdk_files_filter_403a62ee": 5, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 262 }, { "date": "2026-02-10", @@ -1053,66 +330,15 @@ "total_upvotes": 230, "total_saves": 273, "followers": 220, - "points": 270, - "contributions": 47, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 951, - "smart_infographic_ad6f0c7f": 696, - "export_to_word_enhanced_formatting_fca6a315": 382, - "async_context_compression_b1655bc8": 362, - "export_mulit_table_to_excel_244b8f9d": 342, - "markdown_normalizer_baaa8732": 337, - "flash_card_65a2ea8f": 225, - "ai_task_instruction_generator_9bab8b37": 198, - "deep_dive_c0b846e4": 147, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 128, - "github_copilot_official_sdk_pipe_ce96f7b4": 105, - "folder_memory_auto_evolving_project_context_4a9875b2": 61, - "智能信息图_e04a48ff": 58, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 39, - "异步上下文压缩_5c0617cb": 33, - "闪记卡生成插件_4a31eac3": 27, - "精读_99830b0f": 24, - "github_copilot_sdk_files_filter_403a62ee": 16, - "github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293": 0, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 270 }, { "date": "2026-02-11", - "total_posts": 22, "total_downloads": 4161, "total_views": 45988, "total_upvotes": 231, "total_saves": 274, "followers": 220, - "points": 271, - "contributions": 48, - "posts": { - "turn_any_text_into_beautiful_mind_maps_3094c59a": 954, - "smart_infographic_ad6f0c7f": 710, - "export_to_word_enhanced_formatting_fca6a315": 383, - "async_context_compression_b1655bc8": 363, - "export_mulit_table_to_excel_244b8f9d": 342, - "markdown_normalizer_baaa8732": 341, - "flash_card_65a2ea8f": 226, - "ai_task_instruction_generator_9bab8b37": 202, - "deep_dive_c0b846e4": 147, - "导出为_word_支持公式流程图表格和代码块_8a6306c0": 128, - "github_copilot_official_sdk_pipe_ce96f7b4": 107, - "folder_memory_auto_evolving_project_context_4a9875b2": 61, - "智能信息图_e04a48ff": 58, - "智能生成交互式思维导图帮助用户可视化知识_8d4b097b": 39, - "异步上下文压缩_5c0617cb": 33, - "闪记卡生成插件_4a31eac3": 27, - "精读_99830b0f": 24, - "github_copilot_sdk_files_filter_403a62ee": 16, - "github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293": 0, - "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e": 0, - "review_of_claude_haiku_45_41b0db39": 0, - "debug_open_webui_plugins_in_your_browser_81bf7960": 0 - } + "points": 271 } ] \ No newline at end of file From 1192c71453a29fa775bb39b2b426f3a5c9f9d296 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 14:04:03 +0800 Subject: [PATCH 47/47] fix: merge Gist+local history and rebuild from community-stats.json --- .github/workflows/community-stats.yml | 1 + scripts/openwebui_stats.py | 98 +++++++++++++-------------- 2 files changed, 49 insertions(+), 50 deletions(-) diff --git a/.github/workflows/community-stats.yml b/.github/workflows/community-stats.yml index dee17dc..f8ac2c4 100644 --- a/.github/workflows/community-stats.yml +++ b/.github/workflows/community-stats.yml @@ -30,6 +30,7 @@ jobs: uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }} + fetch-depth: 0 - name: Set up Python uses: actions/setup-python@v5 diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index 78983ae..deceb51 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -95,9 +95,11 @@ class OpenWebUIStats: ] def load_history(self) -> list: - """加载历史记录 (优先尝试 Gist, 其次本地文件)""" - history = [] - # 尝试从 Gist 加载 + """加载历史记录 (合并 Gist + 本地文件, 取记录更多的)""" + gist_history = [] + local_history = [] + + # 1. 尝试从 Gist 加载 if self.gist_token and self.gist_id: try: url = f"https://api.github.com/gists/{self.gist_id}" @@ -108,66 +110,61 @@ class OpenWebUIStats: file_info = gist_data.get("files", {}).get(self.history_filename) if file_info: content = file_info.get("content") - print(f"✅ 已从 Gist 加载历史记录 ({self.gist_id})") - history = json.loads(content) + gist_history = json.loads(content) + print(f"✅ 已从 Gist 加载历史记录 ({len(gist_history)} 条)") except Exception as e: print(f"⚠️ 无法从 Gist 加载历史: {e}") - # 降级:从本地加载 - if not history and self.history_file.exists(): + # 2. 同时从本地文件加载 + if self.history_file.exists(): try: with open(self.history_file, "r", encoding="utf-8") as f: - history = json.load(f) + local_history = json.load(f) + print(f"✅ 已从本地加载历史记录 ({len(local_history)} 条)") except Exception as e: print(f"⚠️ 无法加载本地历史记录: {e}") - # 如果历史记录太少 (< 5条),尝试从 Git 历史重建 + # 3. 合并两个来源 (以日期为 key, 有冲突时保留更新的) + hist_dict = {} + for item in gist_history: + hist_dict[item["date"]] = item + for item in local_history: + hist_dict[item["date"]] = item # 本地数据覆盖 Gist (更可能是最新的) + + history = sorted(hist_dict.values(), key=lambda x: x["date"]) + print(f"📊 合并后历史记录: {len(history)} 条") + + # 4. 如果合并后仍然太少, 尝试从 Git 历史重建 if len(history) < 5 and os.path.isdir(".git"): print("📉 History too short, attempting Git rebuild...") git_history = self.rebuild_history_from_git() if len(git_history) > len(history): print(f"✅ Rebuilt history from Git: {len(git_history)} records") + for item in git_history: + if item["date"] not in hist_dict: + hist_dict[item["date"]] = item + history = sorted(hist_dict.values(), key=lambda x: x["date"]) - # 转成 dict以便合并 - hist_dict = {item["date"]: item for item in git_history} - for item in history: - hist_dict[item["date"]] = item # 覆盖/新增 - - # 转回 list 并排序 - new_history = list(hist_dict.values()) - new_history.sort(key=lambda x: x["date"]) - - history = new_history - - # 立即保存到本地 - with open(self.history_file, "w", encoding="utf-8") as f: - json.dump(history, f, ensure_ascii=False, indent=2) - print(f"✅ Rebuilt history saved to local file ({self.history_file})") - - # 如果有 Gist 配置,也同步到 Gist - if self.gist_token and self.gist_id: - try: - url = f"https://api.github.com/gists/{self.gist_id}" - headers = {"Authorization": f"token {self.gist_token}"} - payload = { - "files": { - self.history_filename: { - "content": json.dumps( - history, ensure_ascii=False, indent=2 - ) - } - } + # 5. 如果有新数据, 同步回 Gist + if len(history) > len(gist_history) and self.gist_token and self.gist_id: + try: + url = f"https://api.github.com/gists/{self.gist_id}" + headers = {"Authorization": f"token {self.gist_token}"} + payload = { + "files": { + self.history_filename: { + "content": json.dumps(history, ensure_ascii=False, indent=2) } - resp = requests.patch(url, headers=headers, json=payload) - if resp.status_code == 200: - print(f"✅ Rebuilt history synced to Gist ({self.gist_id})") - else: - print( - f"⚠️ Failed to sync rebuilt history to Gist: {resp.status_code} - {resp.text}" - ) - except Exception as e: - print(f"⚠️ Error syncing rebuilt history to Gist: {e}") + } + } + resp = requests.patch(url, headers=headers, json=payload) + if resp.status_code == 200: + print(f"✅ 历史记录已同步至 Gist ({len(history)} 条)") + else: + print(f"⚠️ Gist sync failed: {resp.status_code}") + except Exception as e: + print(f"⚠️ Error syncing history to Gist: {e}") return history @@ -310,14 +307,15 @@ class OpenWebUIStats: """从 Git 历史提交中重建统计数据""" history = [] try: - # 获取所有修改了 docs/stats-history.json 的 commit + # 从 docs/community-stats.json 的 Git 历史重建 (该文件历史最丰富) # 格式: hash date + target = "docs/community-stats.json" cmd = [ "git", "log", "--pretty=format:%H %ad", "--date=short", - str(self.history_file), + target, ] result = subprocess.run(cmd, capture_output=True, text=True, check=True) @@ -342,7 +340,7 @@ class OpenWebUIStats: # 读取该 commit 时的文件内容 # Note: The file name in git show needs to be relative to the repo root - show_cmd = ["git", "show", f"{commit_hash}:{self.history_file}"] + show_cmd = ["git", "show", f"{commit_hash}:{target}"] show_res = subprocess.run( show_cmd, capture_output=True, text=True, check=True )