[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-zhuifengshen--DingtalkChatbot":3,"tool-zhuifengshen--DingtalkChatbot":64},[4,23,32,40,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":22},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,2,"2026-04-05T10:45:23",[13,14,15,16,17,18,19,20,21],"图像","数据工具","视频","插件","Agent","其他","语言模型","开发框架","音频","ready",{"id":24,"name":25,"github_repo":26,"description_zh":27,"stars":28,"difficulty_score":29,"last_commit_at":30,"category_tags":31,"status":22},2181,"OpenHands","OpenHands\u002FOpenHands","OpenHands 是一个专注于 AI 驱动开发的开源平台，旨在让智能体（Agent）像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点，通过自动化流程显著提升开发速度。\n\n无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员，还是需要快速原型验证的技术团队，都能从中受益。OpenHands 提供了灵活多样的使用方式：既可以通过命令行（CLI）或本地图形界面在个人电脑上轻松上手，体验类似 Devin 的流畅交互；也能利用其强大的 Python SDK 自定义智能体逻辑，甚至在云端大规模部署上千个智能体并行工作。\n\n其核心技术亮点在于模块化的软件智能体 SDK，这不仅构成了平台的引擎，还支持高度可组合的开发模式。此外，OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩，证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能，支持与 Slack、Jira 等工具集成，并提供细粒度的权限管理，适合从个人开发者到大型企业的各类用户场景。",70626,3,"2026-04-05T22:51:36",[19,17,20,16],{"id":33,"name":34,"github_repo":35,"description_zh":36,"stars":37,"difficulty_score":10,"last_commit_at":38,"category_tags":39,"status":22},3074,"gpt4free","xtekky\u002Fgpt4free","gpt4free 是一个由社区驱动的开源项目，旨在聚合多种可访问的大型语言模型（LLM）和媒体生成接口，让用户能更灵活、便捷地使用前沿 AI 能力。它解决了直接调用各类模型时面临的接口分散、门槛高或成本昂贵等痛点，通过统一的标准将不同提供商的资源整合在一起。\n\n无论是希望快速集成 AI 功能的开发者、需要多模型对比测试的研究人员，还是想免费体验最新技术的普通用户，都能从中受益。gpt4free 提供了丰富的使用方式：既包含易于上手的 Python 和 JavaScript 客户端库，也支持部署本地图形界面（GUI），更提供了兼容 OpenAI 标准的 REST API，方便无缝替换现有应用后端。\n\n其技术亮点在于强大的多提供商支持架构，能够动态调度包括 Opus、Gemini、DeepSeek 等多种主流模型资源，并支持 Docker 一键部署及本地推理。项目秉持社区优先原则，在降低使用门槛的同时，也为贡献者提供了扩展新接口的便利框架，是探索和利用多样化 AI 资源的实用工具。",65970,"2026-04-04T01:02:03",[16,19,17],{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":10,"last_commit_at":46,"category_tags":47,"status":22},51,"gstack","garrytan\u002Fgstack","gstack 是 Y Combinator CEO Garry Tan 亲自开源的一套 AI 工程化配置，旨在将 Claude Code 升级为你的虚拟工程团队。面对单人开发难以兼顾产品战略、架构设计、代码审查及质量测试的挑战，gstack 提供了一套标准化解决方案，帮助开发者实现堪比二十人团队的高效产出。\n\n这套配置特别适合希望提升交付效率的创始人、技术负责人，以及初次尝试 Claude Code 的开发者。gstack 的核心亮点在于内置了 15 个具有明确职责的 AI 角色工具，涵盖 CEO、设计师、工程经理、QA 等职能。用户只需通过简单的斜杠命令（如 `\u002Freview` 进行代码审查、`\u002Fqa` 执行测试、`\u002Fplan-ceo-review` 规划功能），即可自动化处理从需求分析到部署上线的全链路任务。\n\n所有操作基于 Markdown 和斜杠命令，无需复杂配置，完全免费且遵循 MIT 协议。gstack 不仅是一套工具集，更是一种现代化的软件工厂实践，让单人开发者也能拥有严谨的工程流程。",64604,"2026-04-05T23:10:16",[17,16],{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":10,"last_commit_at":54,"category_tags":55,"status":22},193,"meilisearch","meilisearch\u002Fmeilisearch","Meilisearch 是一个开源的极速搜索服务，专为现代应用和网站打造，开箱即用。它能帮助开发者快速集成高质量的搜索功能，无需复杂的配置或额外的数据预处理。传统搜索方案往往需要大量调优才能实现准确结果，而 Meilisearch 内置了拼写容错、同义词识别、即时响应等实用特性，并支持 AI 驱动的混合搜索（结合关键词与语义理解），显著提升用户查找信息的体验。\n\nMeilisearch 特别适合 Web 开发者、产品团队或初创公司使用，尤其适用于需要快速上线搜索功能的场景，如电商网站、内容平台或 SaaS 应用。它提供简洁的 RESTful API 和多种语言 SDK，部署简单，资源占用低，本地开发或生产环境均可轻松运行。对于希望在不依赖大型云服务的前提下，为用户提供流畅、智能搜索体验的团队来说，Meilisearch 是一个高效且友好的选择。",56972,"2026-04-05T22:34:33",[13,17,14,20,16,18],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":22},4022,"awesome-claude-skills","ComposioHQ\u002Fawesome-claude-skills","awesome-claude-skills 是一个精心整理的开源资源库，旨在帮助用户挖掘和扩展 Claude AI 的潜力。它不仅仅是一份列表，更提供了实用的“技能（Skills）”模块，让 Claude 从单纯的文本生成助手，进化为能执行复杂工作流的智能代理。\n\n许多用户在使用 AI 时，常受限于其无法直接操作外部软件或处理特定格式文件的痛点。awesome-claude-skills 通过预设的工作流解决了这一问题：它不仅能教会 Claude 专业地处理 Word、PDF 等文档，进行代码开发与数据分析，还能借助 Composio 插件连接 Slack、邮箱及数百种常用应用，实现发送邮件、创建任务等自动化操作。这使得重复性任务变得标准化且可复用，极大提升了工作效率。\n\n无论是希望优化日常办公流程的普通用户、需要处理复杂文档的研究人员，还是寻求将 AI 深度集成到开发管线中的开发者，都能从中找到适合的解决方案。其独特的技术亮点在于“技能”的可定制性与强大的应用连接能力，让用户无需编写复杂代码，即可通过简单的配置让 Claude 具备跨平台执行真实任务的能力。如果你希望让 Claude",51312,"2026-04-05T19:04:23",[17,16],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":80,"owner_email":81,"owner_twitter":82,"owner_website":82,"owner_url":83,"languages":84,"stars":89,"forks":90,"last_commit_at":91,"license":92,"difficulty_score":93,"env_os":94,"env_gpu":95,"env_ram":94,"env_deps":96,"category_tags":100,"github_topics":82,"view_count":10,"oss_zip_url":82,"oss_zip_packed_at":82,"status":22,"created_at":101,"updated_at":102,"faqs":103,"releases":144},4068,"zhuifengshen\u002FDingtalkChatbot","DingtalkChatbot","钉钉群自定义机器人消息Python封装","DingtalkChatbot 是一款专为 Python 开发者打造的钉钉群自定义机器人消息发送库。它旨在解决官方仅仅提供 Java 封装、而 Python 用户在自动化项目中调用不便的痛点，让开发者能轻松将各类第三方服务信息聚合到钉钉群中。\n\n无论是同步 Github 代码更新、推送 JIRA 项目进度，还是发送运维报警、自动化测试报告乃至日常日程提醒，DingtalkChatbot 都能通过简洁的代码实现。它全面支持文本、链接、Markdown、图片表情、ActionCard 及 FeedCard 等多种消息格式，并内置了@指定用户或@所有人的功能。\n\n该工具特别适合后端工程师、运维人员及热衷于办公自动化的开发者使用。其技术亮点在于不仅兼容 Python 2 和 Python 3，还贴心地集成了钉钉官方的消息频率限制机制（每分钟 20 条），有效避免触发限流；同时支持新版机器人的“加签”加密设置，保障消息发送安全。此外，它还允许自定义消息链接在 PC 端侧边栏打开，并具备发送失败自动通知机制，极大提升了集成的稳定性和开发效率。只需几行代码，即可让你的钉钉群变身高效的信息枢纽。","一、钉钉自定义机器人介绍\n==========================\n\n钉钉机器人是钉钉群的一个高级扩展功能，但使用起来却非常简单，只需要注册一个钉钉账号，就可以将第三方服务信息聚合到钉钉群中，实现信息的自动同步。\n\n常见的使用场景：\n\n1、聚合Github、Gitlab等源码管理服务，实现源码更新同步；\n\n2、聚合Trello、JIRA等项目协调服务，实现项目信息同步；\n\n3、机器人支持Webhook自定义接入，就可以实现更多可能性，例如：将运维报警、产品数据、自动化测试报告、工作&生活日程安排（上班打卡、下班吃饭、健身、读书、生日、纪念日...）的提醒；\n\n目前自定义机器人支持文本（text）、链接（link）、markdown三种消息格式，五种消息类型，详细信息请参考\\ `自定义机器人官方文档 \u003Chttps:\u002F\u002Fopen.dingtalk.com\u002Fdocument\u002Fgroup\u002Fcustom-robot-access>`__\n\n二、安装使用\n============\n\n这么好用的功能，只要在钉钉群中添加机器人，得到Webhoo地址即可。接下来，我们先在命令行终端一睹为快吧：\n\n::\n\n    curl 'https:\u002F\u002Foapi.dingtalk.com\u002Frobot\u002Fsend?access_token=xxxxxxxx' \\\n       -H 'Content-Type: application\u002Fjson' \\\n       -d '\n      {\"msgtype\": \"text\",\n        \"text\": {\n            \"content\": \"我就是我, 是不一样的烟火\"\n         }\n      }'\n\n由于各种消息调用，官方只提供Java语言的封装，平时使用Python比较多，为了更方便平时自动化项目的使用，周末花了点时间用Python语言对各种消息类型进行了一一封装，代码已开源在GitHub上，同时也上传了PyPI。\n\n| 1、项目源码地址如下：\\ `DingtalkChatbot \u003Chttps:\u002F\u002Fgithub.com\u002Fzhuifengshen\u002FDingtalkChatbot>`__\n| 2、安装和更新命令如下：\n\n::\n\n    pip install DingtalkChatbot\n    pip install -U DingtalkChatbot\n\n3、支持功能如下：\n\n-  支持Text消息；\n-  支持Link消息；\n-  支持image表情消息；\n-  支持Markdown消息；\n-  支持ActionCard消息；\n-  支持消息发送失败时自动通知（默认fail_notice=False不通知，开发者可直接根据返回的消息发送结果自行处理）\n-  支持设置消息链接打开方式（默认pc_slide=False跳转至浏览器打开；pc_slide=True则在PC端侧边栏打开）\n-  支持钉钉官方消息发送频率限制，即每个机器人每分钟最多发送20条，不用担心触发限流；\n-  支持新版钉钉机器人加密设置；\n-  支持Python2、Python3；\n-  支持钉钉企业内部机器人\\ `即outgoing机器人的消息发送 \u003Chttps:\u002F\u002Fopen.dingtalk.com\u002Fdocument\u002Fgroup\u002Fenterprise-created-chatbot>`__；\n\n\n三、各消息类型使用示例\n======================\n\n|image0|\n\n.. code:: python\n\n    from dingtalkchatbot.chatbot import DingtalkChatbot, ActionCard, CardItem\n    # WebHook地址\n    webhook = 'https:\u002F\u002Foapi.dingtalk.com\u002Frobot\u002Fsend?access_token=这里填写自己钉钉群自定义机器人的token'\n    secret = 'SEC11b9...这里填写自己的加密设置密钥'  # 可选：创建机器人勾选“加签”选项时使用\n    # 初始化机器人小丁\n    xiaoding = DingtalkChatbot(webhook)  # 方式一：通常初始化方式\n    xiaoding = DingtalkChatbot(webhook, secret=secret)  # 方式二：勾选“加签”选项时使用（v1.5以上新功能）\n    xiaoding = DingtalkChatbot(webhook, pc_slide=True)  # 方式三：设置消息链接在PC端侧边栏打开（v1.5以上新功能）\n    # Text消息@所有人\n    xiaoding.send_text(msg='我就是小丁，小丁就是我！', is_at_all=True)\n\n|image1|\n\n.. code:: python\n\n    # Text消息之@指定用户\n    at_mobiles = ['这里填写需要提醒的用户的手机号码，字符串或数字都可以']\n    xiaoding.send_text(msg='我就是小丁，小丁就是我！', at_mobiles=at_mobiles)\n\n\n|image9|\n\n.. code:: python\n\n    # image表情消息\n    xiaoding.send_image(pic_url='http:\u002F\u002Fuc-test-manage-00.umlife.net\u002Fjenkins\u002Fpic\u002Fflake8.png')\n\n\n|image2|\n\n.. code:: python\n\n    # Link消息\n    xiaoding.send_link(title='万万没想到，李小璐竟然...', text='故事是这样子的...', message_url='http:\u002F\u002Fwww.kwongwah.com.my\u002F?p=454748\", pic_url=\"https:\u002F\u002Fpbs.twimg.com\u002Fmedia\u002FCEwj7EDWgAE5eIF.jpg')\n\n|image3|\n\n.. code:: python\n\n    # Markdown消息@所有人\n    xiaoding.send_markdown(title='氧气文字', text='#### 广州天气\\n'\n                               '> 9度，西北风1级，空气良89，相对温度73%\\n\\n'\n                               '> ![美景](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhuifengshen_DingtalkChatbot_readme_4e14b0a460e0.jpg)\\n'\n                               '> ###### 10点20分发布 [天气](http:\u002F\u002Fwww.thinkpage.cn\u002F) \\n',\n                               is_at_all=True)\n\n|image4|\n\n.. code:: python\n\n        # Markdown消息@指定用户\n        xiaoding.send_markdown(title='氧气文字', text='#### 广州天气 @1882516xxxx\\n'\n                               '> 9度，西北风1级，空气良89，相对温度73%\\n\\n'\n                               '> ![美景](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhuifengshen_DingtalkChatbot_readme_4e14b0a460e0.jpg)\\n'\n                               '> ###### 10点20分发布 [天气](http:\u002F\u002Fwww.thinkpage.cn\u002F) \\n',\n                               at_mobiles=at_mobiles)\n\n|image5|\n\n.. code:: python\n\n    # FeedCard消息类型（注意：当发送FeedCard时，pic_url需要传入参数值，必选）\n    card1 = CardItem(title=\"氧气美女\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\", pic_url=\"https:\u002F\u002Funzippedtv.com\u002Fwp-content\u002Fuploads\u002Fsites\u002F28\u002F2016\u002F02\u002Fasian.jpg\")\n    card2 = CardItem(title=\"氧眼美女\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\", pic_url=\"https:\u002F\u002Funzippedtv.com\u002Fwp-content\u002Fuploads\u002Fsites\u002F28\u002F2016\u002F02\u002Fasian.jpg\")\n    card3 = CardItem(title=\"氧神美女\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\", pic_url=\"https:\u002F\u002Funzippedtv.com\u002Fwp-content\u002Fuploads\u002Fsites\u002F28\u002F2016\u002F02\u002Fasian.jpg\")\n    cards = [card1, card2, card3]\n    xiaoding.send_feed_card(cards)\n\n|image6|\n\n.. code:: python\n\n    # ActionCard整体跳转消息类型\n    btns1 = [CardItem(title=\"查看详情\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\")]\n    actioncard1 = ActionCard(title='万万没想到，竟然...',\n                                 text='![选择](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhuifengshen_DingtalkChatbot_readme_9a80d59c9f74.png) \\n### 故事是这样子的...',\n                                 btns=btns1,\n                                 btn_orientation=1,\n                                 hide_avatar=1)\n    xiaoding.send_action_card(actioncard1)\n\n|image7|\n\n.. code:: python\n\n    # ActionCard独立跳转消息类型（双选项）\n    btns2 = [CardItem(title=\"支持\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\"), CardItem(title=\"反对\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\")]\n    actioncard2 = ActionCard(title='万万没想到，竟然...',\n                                 text='![选择](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhuifengshen_DingtalkChatbot_readme_9a80d59c9f74.png) \\n### 故事是这样子的...',\n                                 btns=btns2,\n                                 btn_orientation=1,\n                                 hide_avatar=1)\n    xiaoding.send_action_card(actioncard2)\n\n|image8|\n\n.. code:: python\n\n    # ActionCard独立跳转消息类型（列表选项）\n    btns3 = [CardItem(title=\"支持\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\"), CardItem(title=\"中立\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\"), CardItem(title=\"反对\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\")]\n    actioncard3 = ActionCard(title='万万没想到，竟然...',\n                                 text='![选择](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhuifengshen_DingtalkChatbot_readme_9a80d59c9f74.png) \\n### 故事是这样子的...',\n                                 btns=btns3,\n                                 btn_orientation=1,\n                                 hide_avatar=1)\n    xiaoding.send_action_card(actioncard3)\n\n\n四、常见注意事项\n===========================\n\n-  1、at_mobiles列表上的手机号默认自动添加到消息文本末尾，才有@的效果，如需自定义在消息文本@的位置，可将参数is_auto_at设置为False即可，同时支持@多个手机号；\n-  2、如果钉钉机器人消息中的图片链接使用Http协议，可以在钉钉客户端正常加载显示，但无法在钉钉网页版显示，需要更改为Https协议；\n-  3、钉钉机器人消息中的链接默认跳转至浏览器打开（即：pc_slide=False），如果需要直接在客户端侧边栏打开，设置pc_slide为True即可；\n-  4、当前钉钉自定义机器人官方尚不支持应答机制（即在群里成员在聊天@机器人），此功能需要使用钉钉企业内部开发机器人实现（即Outgoing机器人；\n\n\n\n**哥们，更多使用场景，现在尽情展开想象吧...**\n\n（如果对你有帮助的话，欢迎**star**）\n\n.. |image0| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Ftext_at_all.png\n.. |image1| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Ftext_at_one.png\n.. |image2| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Flink.png\n.. |image3| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Fmarkdown_at_all.png\n.. |image4| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Fmarkdown_at_one.png\n.. |image5| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Ffeedcard.png\n.. |image6| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Fglobal_actioncard.png\n.. |image7| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Fselect_actioncard.png\n.. |image8| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Fmulti_actioncard.png\n.. |image9| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Fimage_msg.png\n","一、钉钉自定义机器人介绍\n==========================\n\n钉钉机器人是钉钉群的一个高级扩展功能，但使用起来却非常简单，只需要注册一个钉钉账号，就可以将第三方服务信息聚合到钉钉群中，实现信息的自动同步。\n\n常见的使用场景：\n\n1、聚合Github、Gitlab等源码管理服务，实现源码更新同步；\n\n2、聚合Trello、JIRA等项目协调服务，实现项目信息同步；\n\n3、机器人支持Webhook自定义接入，就可以实现更多可能性，例如：将运维报警、产品数据、自动化测试报告、工作&生活日程安排（上班打卡、下班吃饭、健身、读书、生日、纪念日...）的提醒；\n\n目前自定义机器人支持文本（text）、链接（link）、markdown三种消息格式，五种消息类型，详细信息请参考\\ `自定义机器人官方文档 \u003Chttps:\u002F\u002Fopen.dingtalk.com\u002Fdocument\u002Fgroup\u002Fcustom-robot-access>`__\n\n二、安装使用\n============\n\n这么好用的功能，只要在钉钉群中添加机器人，得到Webhoo地址即可。接下来，我们先在命令行终端一睹为快吧：\n\n::\n\n    curl 'https:\u002F\u002Foapi.dingtalk.com\u002Frobot\u002Fsend?access_token=xxxxxxxx' \\\n       -H 'Content-Type: application\u002Fjson' \\\n       -d '\n      {\"msgtype\": \"text\",\n        \"text\": {\n            \"content\": \"我就是我, 是不一样的烟火\"\n         }\n      }'\n\n由于各种消息调用，官方只提供Java语言的封装，平时使用Python比较多，为了更方便平时自动化项目的使用，周末花了点时间用Python语言对各种消息类型进行了一一封装，代码已开源在GitHub上，同时也上传了PyPI。\n\n| 1、项目源码地址如下：\\ `DingtalkChatbot \u003Chttps:\u002F\u002Fgithub.com\u002Fzhuifengshen\u002FDingtalkChatbot>`__\n| 2、安装和更新命令如下：\n\n::\n\n    pip install DingtalkChatbot\n    pip install -U DingtalkChatbot\n\n3、支持功能如下：\n\n-  支持Text消息；\n-  支持Link消息；\n-  支持image表情消息；\n-  支持Markdown消息；\n-  支持ActionCard消息；\n-  支持消息发送失败时自动通知（默认fail_notice=False不通知，开发者可直接根据返回的消息发送结果自行处理）\n-  支持设置消息链接打开方式（默认pc_slide=False跳转至浏览器打开；pc_slide=True则在PC端侧边栏打开）\n-  支持钉钉官方消息发送频率限制，即每个机器人每分钟最多发送20条，不用担心触发限流；\n-  支持新版钉钉机器人加密设置；\n-  支持Python2、Python3；\n-  支持钉钉企业内部机器人\\ `即outgoing机器人的消息发送 \u003Chttps:\u002F\u002Fopen.dingtalk.com\u002Fdocument\u002Fgroup\u002Fenterprise-created-chatbot>`__；\n\n\n三、各消息类型使用示例\n======================\n\n|image0|\n\n.. code:: python\n\n    from dingtalkchatbot.chatbot import DingtalkChatbot, ActionCard, CardItem\n    # WebHook地址\n    webhook = 'https:\u002F\u002Foapi.dingtalk.com\u002Frobot\u002Fsend?access_token=这里填写自己钉钉群自定义机器人的token'\n    secret = 'SEC11b9...这里填写自己的加密设置密钥'  # 可选：创建机器人勾选“加签”选项时使用\n    # 初始化机器人小丁\n    xiaoding = DingtalkChatbot(webhook)  # 方式一：通常初始化方式\n    xiaoding = DingtalkChatbot(webhook, secret=secret)  # 方式二：勾选“加签”选项时使用（v1.5以上新功能）\n    xiaoding = DingtalkChatbot(webhook, pc_slide=True)  # 方式三：设置消息链接在PC端侧边栏打开（v1.5以上新功能）\n    # Text消息@所有人\n    xiaoding.send_text(msg='我就是小丁，小丁就是我！', is_at_all=True)\n\n|image1|\n\n.. code:: python\n\n    # Text消息之@指定用户\n    at_mobiles = ['这里填写需要提醒的用户的手机号码，字符串或数字都可以']\n    xiaoding.send_text(msg='我就是小丁，小丁就是我！', at_mobiles=at_mobiles)\n\n\n|image9|\n\n.. code:: python\n\n    # image表情消息\n    xiaoding.send_image(pic_url='http:\u002F\u002Fuc-test-manage-00.umlife.net\u002Fjenkins\u002Fpic\u002Fflake8.png')\n\n\n|image2|\n\n.. code:: python\n\n    # Link消息\n    xiaoding.send_link(title='万万没想到，李小璐竟然...', text='故事是这样子的...', message_url='http:\u002F\u002Fwww.kwongwah.com.my\u002F?p=454748\", pic_url=\"https:\u002F\u002Fpbs.twimg.com\u002Fmedia\u002FCEwj7EDWgAE5eIF.jpg\")\n\n|image3|\n\n.. code:: python\n\n    # Markdown消息@所有人\n    xiaoding.send_markdown(title='氧气文字', text='#### 广州天气\\n'\n                               '> 9度，西北风1级，空气良89，相对温度73%\\n\\n'\n                               '> ![美景](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhuifengshen_DingtalkChatbot_readme_4e14b0a460e0.jpg)\\n'\n                               '> ###### 10点20分发布 [天气](http:\u002F\u002Fwww.thinkpage.cn\u002F) \\n',\n                               is_at_all=True)\n\n|image4|\n\n.. code:: python\n\n        # Markdown消息@指定用户\n        xiaoding.send_markdown(title='氧气文字', text='#### 广州天气 @1882516xxxx\\n'\n                               '> 9度，西北风1级，空气良89，相对温度73%\\n\\n'\n                               '> ![美景](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhuifengshen_DingtalkChatbot_readme_4e14b0a460e0.jpg)\\n'\n                               '> ###### 10点20分发布 [天气](http:\u002F\u002Fwww.thinkpage.cn\u002F) \\n',\n                               at_mobiles=at_mobiles)\n\n|image5|\n\n.. code:: python\n\n    # FeedCard消息类型（注意：当发送FeedCard时，pic_url需要传入参数值，必选）\n    card1 = CardItem(title=\"氧气美女\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\", pic_url=\"https:\u002F\u002Funzippedtv.com\u002Fwp-content\u002Fuploads\u002Fsites\u002F28\u002F2016\u002F02\u002Fasian.jpg\")\n    card2 = CardItem(title=\"氧眼美女\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\", pic_url=\"https:\u002F\u002Funzippedtv.com\u002Fwp-content\u002Fuploads\u002Fsites\u002F28\u002F2016\u002F02\u002Fasian.jpg\")\n    card3 = CardItem(title=\"氧神美女\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\", pic_url=\"https:\u002F\u002Funzippedtv.com\u002Fwp-content\u002Fuploads\u002Fsites\u002F28\u002F2016\u002F02\u002Fasian.jpg\")\n    cards = [card1, card2, card3]\n    xiaoding.send_feed_card(cards)\n\n|image6|\n\n.. code:: python\n\n    # ActionCard整体跳转消息类型\n    btns1 = [CardItem(title=\"查看详情\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\")]\n    actioncard1 = ActionCard(title='万万没想到，竟然...',\n                                 text='![选择](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhuifengshen_DingtalkChatbot_readme_9a80d59c9f74.png) \\n### 故事是这样子的...',\n                                 btns=btns1,\n                                 btn_orientation=1,\n                                 hide_avatar=1)\n    xiaoding.send_action_card(actioncard1)\n\n|image7|\n\n.. code:: python\n\n    # ActionCard独立跳转消息类型（双选项）\n    btns2 = [CardItem(title=\"支持\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\"), CardItem(title=\"反对\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\")]\n    actioncard2 = ActionCard(title='万万没想到，竟然...',\n                                 text='![选择](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhuifengshen_DingtalkChatbot_readme_9a80d59c9f74.png) \\n### 故事是这样子的...',\n                                 btns=btns2,\n                                 btn_orientation=1,\n                                 hide_avatar=1)\n    xiaoding.send_action_card(actioncard2)\n\n|image8|\n\n.. code:: python\n\n    # ActionCard独立跳转消息类型（列表选项）\n    btns3 = [CardItem(title=\"支持\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\"), CardItem(title=\"中立\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\"), CardItem(title=\"反对\", url=\"https:\u002F\u002Fwww.dingtalk.com\u002F\")]\n    actioncard3 = ActionCard(title='万万没想到，竟然...',\n                                 text='![选择](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhuifengshen_DingtalkChatbot_readme_9a80d59c9f74.png) \\n### 故事是这样子的...',\n                                 btns=btns3,\n                                 btn_orientation=1,\n                                 hide_avatar=1)\n    xiaoding.send_action_card(actioncard3)\n\n\n四、常见注意事项\n===========================\n\n-  1、at_mobiles列表上的手机号默认自动添加到消息文本末尾，才有@的效果，如需自定义在消息文本@的位置，可将参数is_auto_at设置为False即可，同时支持@多个手机号；\n-  2、如果钉钉机器人消息中的图片链接使用Http协议，可以在钉钉客户端正常加载显示，但无法在钉钉网页版显示，需要更改为Https协议；\n-  3、钉钉机器人消息中的链接默认跳转至浏览器打开（即：pc_slide=False），如果需要直接在客户端侧边栏打开，设置pc_slide为True即可；\n-  4、当前钉钉自定义机器人官方尚不支持应答机制（即在群里成员在聊天@机器人），此功能需要使用钉钉企业内部开发机器人实现（即Outgoing机器人；\n\n\n\n**哥们，更多使用场景，现在尽情展开想象吧...**\n\n（如果对你有帮助的话，欢迎**star**）\n\n.. |image0| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Ftext_at_all.png\n.. |image1| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Ftext_at_one.png\n.. |image2| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Flink.png\n.. |image3| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Fmarkdown_at_all.png\n.. |image4| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Fmarkdown_at_one.png\n.. |image5| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Ffeedcard.png\n.. |image6| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Fglobal_actioncard.png\n.. |image7| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Fselect_actioncard.png\n.. |image8| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Fmulti_actioncard.png\n.. |image9| image:: https:\u002F\u002Fraw.githubusercontent.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fmaster\u002Fimg\u002Fimage_msg.png","# DingtalkChatbot 快速上手指南\n\n## 环境准备\n- **系统要求**：支持 Linux、macOS、Windows。\n- **Python 版本**：兼容 Python 2 和 Python 3。\n- **前置依赖**：\n  - 已注册钉钉账号并拥有可操作的钉钉群。\n  - 已在钉钉群中添加“自定义机器人”，获取 `Webhook` 地址（若开启“加签”安全设置，需同时获取 `Secret`）。\n\n## 安装步骤\n推荐使用 pip 进行安装，国内用户可指定清华镜像源加速下载：\n\n```bash\npip install DingtalkChatbot -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n如需更新到最新版本：\n\n```bash\npip install -U DingtalkChatbot -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 基本使用\n\n### 1. 初始化机器人\n导入库并使用获取到的 Webhook 地址初始化实例。若机器人开启了“加签”验证，需传入 `secret` 参数。\n\n```python\nfrom dingtalkchatbot.chatbot import DingtalkChatbot\n\n# WebHook 地址\nwebhook = 'https:\u002F\u002Foapi.dingtalk.com\u002Frobot\u002Fsend?access_token=这里填写自己钉钉群自定义机器人的 token'\n# secret = 'SEC11b9...这里填写自己的加密设置密钥'  # 可选：创建机器人勾选“加签”选项时使用\n\n# 方式一：通常初始化方式\nxiaoding = DingtalkChatbot(webhook)\n\n# 方式二：勾选“加签”选项时使用\n# xiaoding = DingtalkChatbot(webhook, secret=secret)\n```\n\n### 2. 发送文本消息\n最简单的用法是发送纯文本消息，支持 `@所有人` 或 `@指定成员`。\n\n```python\n# 发送文本消息并 @所有人\nxiaoding.send_text(msg='我就是小丁，小丁就是我！', is_at_all=True)\n\n# 发送文本消息并 @指定用户（需填入手机号）\nat_mobiles = ['13800138000']\nxiaoding.send_text(msg='我就是小丁，小丁就是我！', at_mobiles=at_mobiles)\n```\n\n### 3. 发送其他类型消息\n库还支持 Markdown、链接、图片及卡片消息，示例如下：\n\n```python\n# 发送 Markdown 消息\nxiaoding.send_markdown(title='氧气文字', text='#### 广州天气\\n> 9 度，西北风 1 级\\n')\n\n# 发送链接消息\nxiaoding.send_link(title='万万没想到...', text='故事是这样子的...', message_url='http:\u002F\u002Fexample.com', pic_url='http:\u002F\u002Fexample.com\u002Fpic.jpg')\n\n# 发送图片消息\nxiaoding.send_image(pic_url='http:\u002F\u002Fexample.com\u002Fimage.png')\n```","某电商公司的运维团队需要实时监控夜间自动化测试结果，并在发现严重故障时立即通知值班开发人员介入处理。\n\n### 没有 DingtalkChatbot 时\n- 运维脚本只能将日志输出到服务器文件，值班人员必须定时手动登录服务器查看，极易错过最佳修复窗口。\n- 若需集成报警功能，开发者需直接用 `curl` 拼接复杂的 JSON 报文和加密签名，代码冗长且难以维护。\n- 报警信息仅为纯文本，无法展示错误堆栈截图或跳转链接，开发人员收到消息后仍需二次排查才能定位问题。\n- 在高并发测试场景下，频繁调用官方接口容易触发每分钟 20 条的频率限制，导致关键报警丢失。\n- 无法精准@特定模块的负责人，往往造成“狼来了”效应，所有人群发消息却无人响应。\n\n### 使用 DingtalkChatbot 后\n- 测试脚本通过 DingtalkChatbot 一键发送 Markdown 格式报告，自动包含错误日志、堆栈截图及构建详情链接，信息一目了然。\n- 内置的 Python 封装自动处理 Webhook 请求与加签逻辑，开发者仅需几行代码即可实现稳定发送，大幅降低接入门槛。\n- 工具原生支持频率限制控制与失败重试机制，确保在大规模测试中报警消息不拥堵、不丢失。\n- 利用 `at_mobiles` 参数精准@后端或前端值班人员的手机号，确保责任人第一时间收到强提醒并介入处理。\n- 支持配置消息在 PC 端侧边栏直接打开，开发人员无需切换窗口即可查看详细文档或重启服务，提升响应速度。\n\nDingtalkChatbot 将繁琐的报警通知转化为标准化的自动化流程，让运维监控从“被动查阅”升级为“主动触达”，显著缩短了故障平均修复时间。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhuifengshen_DingtalkChatbot_438740d8.png","zhuifengshen","Devin","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fzhuifengshen_2325443c.jpg","宁静 致远，爱智 求真.","YouMi","Guangzhou","zhangchuzhao@dingtalk.com",null,"https:\u002F\u002Fgithub.com\u002Fzhuifengshen",[85],{"name":86,"color":87,"percentage":88},"Python","#3572A5",100,1310,288,"2026-04-03T06:45:00","MIT",1,"未说明","不需要 GPU",{"notes":97,"python":98,"dependencies":99},"该工具为钉钉机器人 Python SDK，通过 pip 安装（pip install DingtalkChatbot）。主要功能依赖钉钉 Webhook 地址和可选的加密密钥（secret）。支持文本、链接、图片、Markdown、ActionCard 等多种消息格式。需注意图片链接建议使用 HTTPS 协议以兼容网页版，且官方限制每个机器人每分钟最多发送 20 条消息。","Python 2, Python 3",[],[16],"2026-03-27T02:49:30.150509","2026-04-06T09:25:37.750476",[104,109,114,119,124,129,134,139],{"id":105,"question_zh":106,"answer_zh":107,"source_url":108},18525,"钉钉机器人支持发送本地图片吗？","不支持。钉钉机器人只支持发送网络图片链接（URL），不支持直接发送本地路径的图片文件。如果需要发送本地图片，必须先将其上传到可公开访问的网络服务器，获取链接后再通过机器人发送。","https:\u002F\u002Fgithub.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fissues\u002F49",{"id":110,"question_zh":111,"answer_zh":112,"source_url":113},18523,"遇到 ImportError: cannot import name JSONDecodeError 报错怎么办？","该错误通常是因为在 Python 2 环境下使用了不兼容的类。维护者已修复此问题，原因是上次更新引入了 Python 2 不兼容的类。解决方法是升级库到最新版本，或者将运行环境升级到 Python 3（建议在 Python 3.5.2 及以上版本运行）。","https:\u002F\u002Fgithub.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fissues\u002F4",{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},18524,"使用示例代码时提示 NameError: name 'CardItem' is not defined 如何解决？","这是因为没有正确导入所需的类。需要在代码文件头部显式导入相关模块，具体代码如下：\nfrom dingtalkchatbot.chatbot import DingtalkChatbot\nfrom dingtalkchatbot.chatbot import CardItem\nfrom dingtalkchatbot.chatbot import ActionCard","https:\u002F\u002Fgithub.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fissues\u002F36",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},18526,"如何在 Markdown 格式消息中成功 @指定用户？","仅在 at_mobiles 列表中填写手机号是不够的。必须在消息的 text 内容中也包含对应的手机号（例如：@13800138000），否则无法触发 @提醒。这是因为 @的位置可以在文本中自定义，且支持同时 @多人，以便突出对应的人关注特定内容。","https:\u002F\u002Fgithub.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fissues\u002F19",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},18527,"初始化 DingtalkChatbot 时提示 TypeError: __init__() got an unexpected keyword argument 'secret' 怎么办？","这是因为当前安装的库版本过低，不支持 secret 参数。请将库更新到最新版（v1.5.0 或更高版本），即可正常使用 secret 参数进行签名验证。","https:\u002F\u002Fgithub.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fissues\u002F21",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},18528,"自定义机器人支持发送文件吗？","目前不支持。根据钉钉官方文档，当前自定义机器人仅支持文本 (text)、链接 (link)、markdown(markdown)、ActionCard 和 FeedCard 这几种消息类型，尚未开放文件发送功能。","https:\u002F\u002Fgithub.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fissues\u002F32",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},18529,"机器人能接收消息或监听端口做自动化回复吗？","钉钉自定义机器人本身不具备接收消息的功能，无法像微信那样自动处理收到的消息。如果需要实现类似功能（如接收 Prometheus 告警），需要自行搭建一个服务来接收外部消息，然后调用 DingtalkChatbot 库将处理后的消息发送出去。","https:\u002F\u002Fgithub.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fissues\u002F33",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},18530,"在服务器上运行时报错 SSLCertVerificationError (certificate verify failed) 如何解决？","这通常是由于服务器上的 CA 证书过期或缺失导致的。请尝试更新服务器操作系统上的 CA 证书包（例如在 Linux 上运行 update-ca-certificates 或重新安装 ca-certificates 包），以确保能正确验证钉钉 API 的 HTTPS 证书。","https:\u002F\u002Fgithub.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fissues\u002F43",[145],{"id":146,"version":147,"summary_zh":148,"released_at":149},109095,"v1.5.7","1. 支持消息中的 `atUserIds` 新字段，详情请参见：https:\u002F\u002Fgithub.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fpull\u002F48；\r\n2. 修复新建连接失败的问题，详情请参见：https:\u002F\u002Fgithub.com\u002Fzhuifengshen\u002FDingtalkChatbot\u002Fissues\u002F53；\r\n3. 完善测试用例和文档；","2022-12-07T10:24:16"]