{"id":19229000,"url":"https://github.com/caomeiyouren/push-all-in-one","last_synced_at":"2025-04-05T09:04:57.250Z","repository":{"id":37818481,"uuid":"342851325","full_name":"CaoMeiYouRen/push-all-in-one","owner":"CaoMeiYouRen","description":"Push All In One！支持 Server 酱(以及 Server 酱³)、自定义邮件、钉钉机器人、企业微信机器人、企业微信应用、飞书、pushplus、WxPusher、iGot 、Qmsg、息知、PushDeer、Discord、OneBot、Telegram、ntfy 等多种推送方式。","archived":false,"fork":false,"pushed_at":"2025-03-05T15:18:51.000Z","size":1294,"stargazers_count":136,"open_issues_count":0,"forks_count":12,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-29T08:03:12.966Z","etag":null,"topics":["dingtalk","discord","email","feishu","ntfy","onebot11","push","push-notifications","pushdeer","pushnotifications","pushplus","server-chan-turbo","serverchan","telegram","wechat","wxpusher"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CaoMeiYouRen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-27T12:27:34.000Z","updated_at":"2025-03-27T10:46:10.000Z","dependencies_parsed_at":"2024-05-05T22:26:23.163Z","dependency_job_id":"338041ee-a86d-45ce-8646-e573c2f29ab3","html_url":"https://github.com/CaoMeiYouRen/push-all-in-one","commit_stats":null,"previous_names":[],"tags_count":46,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaoMeiYouRen%2Fpush-all-in-one","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaoMeiYouRen%2Fpush-all-in-one/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaoMeiYouRen%2Fpush-all-in-one/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CaoMeiYouRen%2Fpush-all-in-one/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CaoMeiYouRen","download_url":"https://codeload.github.com/CaoMeiYouRen/push-all-in-one/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247312068,"owners_count":20918344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dingtalk","discord","email","feishu","ntfy","onebot11","push","push-notifications","pushdeer","pushnotifications","pushplus","server-chan-turbo","serverchan","telegram","wechat","wxpusher"],"created_at":"2024-11-09T15:31:40.096Z","updated_at":"2025-04-05T09:04:57.158Z","avatar_url":"https://github.com/CaoMeiYouRen.png","language":"TypeScript","funding_links":["https://patreon.com/CaoMeiYouRen"],"categories":[],"sub_categories":[],"readme":"\u003c!-- \u003cp\u003e\n   \u003cstrong\u003e中文\u003c/strong\u003e | \u003ca href=\"./README_EN.md\"\u003eEnglish\u003c/a\u003e\n\u003c/p\u003e --\u003e\n\u003ch1 align=\"center\"\u003epush-all-in-one \u003c/h1\u003e\n\u003cp\u003e\n  \u003ca href=\"https://www.npmjs.com/package/push-all-in-one\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Version\" src=\"https://img.shields.io/npm/v/push-all-in-one.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/push-all-in-one\" target=\"_blank\"\u003e\n    \u003cimg alt=\"npm publish\" src=\"https://img.shields.io/npm/dt/push-all-in-one?label=npm%20downloads\u0026color=yellow\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/CaoMeiYouRen/push-all-in-one/actions?query=workflow%3ARelease\" target=\"_blank\"\u003e\n    \u003cimg alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/CaoMeiYouRen/push-all-in-one/release.yml?branch=master\"\u003e\n  \u003c/a\u003e\n  \u003cimg alt=\"Node Current\" src=\"https://img.shields.io/node/v/push-all-in-one?color=blue\"\u003e\n  \u003ca href=\"https://github.com/CaoMeiYouRen/push-all-in-one#readme\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Documentation\" src=\"https://img.shields.io/badge/documentation-yes-brightgreen.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/CaoMeiYouRen/push-all-in-one/graphs/commit-activity\" target=\"_blank\"\u003e\n    \u003cimg alt=\"Maintenance\" src=\"https://img.shields.io/badge/Maintained%3F-yes-green.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/CaoMeiYouRen/push-all-in-one/blob/master/LICENSE\" target=\"_blank\"\u003e\n    \u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003e Push All In One！支持 Server 酱(以及 Server 酱³)、自定义邮件、钉钉机器人、企业微信机器人、企业微信应用、飞书、pushplus、WxPusher、iGot 、Qmsg、息知、PushDeer、Discord、OneBot、Telegram、ntfy 等多种推送方式。\n\u003e\n\u003e Push All In One! Supports multiple push methods including Server Chan (and Server Chan³), custom email, DingTalk robot, WeChat Work robot, WeChat Work application, Feishu, pushplus, WxPusher, iGot, Qmsg, XiZhi, PushDeer, Discord, OneBot, Telegram, ntfy and more.\n\u003e\n\u003e 温馨提示：出于安全考虑， **所有** 推送方式请在 **服务端** 使用！请勿在 **客户端(网页端)** 使用！\n\u003e\n\u003e Friendly Reminder: For security reasons, **all** push methods should be used on the **server side**! Do not use them on the **client side (web page)**!\n\u003e\n\u003e 基于 push-all-in-one 和 hono 开发的云函数推送服务——[push-all-in-cloud](https://github.com/CaoMeiYouRen/push-all-in-cloud) 。支持 nodejs/docker/vercel 等部署方式 ，可一键部署到 vercel 。\n\n**重大更新提示：** `push-all-in-one` v4 版本不兼容 v3 及以下低版本，请查看 [CHANGELOG](./CHANGELOG.md) 了解改动。\n\n**BREAKING CHANGES**: `push-all-in-one` v4 version is not compatible with v3 and lower versions. Please refer to [CHANGELOG](./CHANGELOG.md) for changes.\n\n建议根据 TypeScript 的类型提示进行修改。\n\nSuggest modifying according to TypeScript's type prompts.\n\n## 🏠 主页\n\n[https://github.com/CaoMeiYouRen/push-all-in-one#readme](https://github.com/CaoMeiYouRen/push-all-in-one#readme)\n\n## ✨ Demo\n\n[https://github.com/CaoMeiYouRen/push-all-in-one/tree/master/examples](https://github.com/CaoMeiYouRen/push-all-in-one/tree/master/examples)\n\n## 📦 依赖要求/Requirements\n\n\n- node \u003e=18\n\n## 🚀 安装/Installation\n\n```sh\nnpm i push-all-in-one -S\n```\n\n## 👨‍💻 使用/Usage\n\n所有推送方式均实现了 `send(title: string, desp?: string, options?: any):` 方法。\n\n`title` 为 `消息标题`，`desp` 为 `消息描述`，`options` 为该推送方式的`额外推送选项`，具体请参考各个推送渠道的注释。\n\n\u003e 不知道如何设置配置？请前往 [push-all-in-cloud 配置生成器](https://push.cmyr.dev/) 在线生成 `push-all-in-one` 和 `push-all-in-cloud` 通用配置。\n\n调用方式举例：\n\n```ts\nimport { ServerChanTurbo, ServerChanV3, CustomEmail, Dingtalk, WechatRobot, WechatApp, PushPlus, WxPusher, IGot, Qmsg, XiZhi, PushDeer, Discord, OneBot, Telegram, Feishu, Ntfy, runPushAllInOne } from 'push-all-in-one'\n\n// 通过 runPushAllInOne 统一调用\nrunPushAllInOne('测试推送', '测试推送', {\n    type: 'ServerChanTurbo',\n    config: {\n        SERVER_CHAN_TURBO_SENDKEY: '',\n    },\n    option: {\n    },\n})\n\n\n// Server酱·Turbo。官方文档：https://sct.ftqq.com/r/13172\nconst SCTKEY = 'SCTxxxxxxxxxxxxxxxxxxx'\nconst serverChanTurbo = new ServerChanTurbo({\n    SERVER_CHAN_TURBO_SENDKEY: SCTKEY,\n})\nserverChanTurbo.send('你好', '你好，我很可爱 - Server酱·Turbo', {})\n\n// 【推荐】Server酱³\n// Server酱3。官方文档：https://sc3.ft07.com/doc\nconst SERVER_CHAN_V3_SENDKEY = 'sctpXXXXXXXXXXXXXXXXXXXXXXXX'\nconst serverChanV3 = new ServerChanV3({\n    SERVER_CHAN_V3_SENDKEY,\n})\nserverChanV3.send('你好', '你好，我很可爱 - Server酱³', {})\n\n// 【推荐】自定义邮件，基于 nodemailer 实现，官方文档: https://github.com/nodemailer/nodemailer\nconst customEmail = new CustomEmail({\n    EMAIL_TYPE: 'text',\n    EMAIL_TO_ADDRESS: 'xxxxx@qq.com',\n    EMAIL_AUTH_USER: 'yyyyy@qq.com',\n    EMAIL_AUTH_PASS: '123456',\n    EMAIL_HOST: 'smtp.qq.com',\n    EMAIL_PORT: 465,\n})\ncustomEmail.send('你好', '你好，我很可爱 - 自定义邮件', {})\n\n// 【推荐】钉钉机器人。官方文档：https://developers.dingtalk.com/document/app/custom-robot-access\nconst DINGTALK_ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxx'\nconst DINGTALK_SECRET = 'SECxxxxxxxxxxxxxxxx'\nconst dingtalk = new Dingtalk({\n    DINGTALK_ACCESS_TOKEN,\n    DINGTALK_SECRET,\n})\ndingtalk.send('你好', '你好，我很可爱 - 钉钉机器人', { msgtype: 'markdown' })\n\n// 企业微信群机器人。官方文档：https://developer.work.weixin.qq.com/document/path/91770\n// 企业微信群机器人的使用需要两人以上加入企业，如果个人使用微信推送建议使用 企业微信应用+微信插件 推送。虽然需要配置的内容更多了，但是无需下载企业微信，网页端即可完成操作。\nconst WECHAT_ROBOT_KEY = 'xxxxxxxxxxxxxxxxxxxxxxx'\nconst wechatRobot = new WechatRobot({\n    WECHAT_ROBOT_KEY,\n})\nwechatRobot.send('你好，我很可爱- 企业微信群机器人', '', { msgtype: 'text' })\n\n// 【推荐】企业微信应用推送，官方文档：https://developer.work.weixin.qq.com/document/path/90664\n// 微信插件 https://work.weixin.qq.com/wework_admin/frame#profile/wxPlugin\n// 参数的介绍请参考：https://developer.work.weixin.qq.com/document/path/90665\n// 支持 text 和 markdown 格式，但 markdown 格式仅可在企业微信中查看\nconst wechatApp = new WechatApp({\n    WECHAT_APP_CORPID: 'wwxxxxxxxxxxxxxxxxxxxx',\n    WECHAT_APP_AGENTID: 10001, // 请更换为自己的 AGENTID\n    WECHAT_APP_SECRET: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',\n})\nwechatApp.send('你好，我很可爱 - 企业微信应用推送', '', {\n    msgtype: 'text',\n    touser: '@all',\n})\n\n// 【推荐】飞书 推送。官方文档：https://open.feishu.cn/document/home/index\nconst feishu = new Feishu({\n    FEISHU_APP_ID: 'xxxxxxx',\n    FEISHU_APP_SECRET: 'yyyyyyyy',\n})\nfeishu.send('你好，我很可爱 - 飞书', '', {\n    receive_id_type: 'open_id',\n    receive_id: 'zzzzzzzzzzzzzzzz',\n    msg_type: 'text',\n})\n\n// pushplus 推送，官方文档：https://www.pushplus.plus/doc/\nconst PUSH_PLUS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxx'\nconst pushplus = new PushPlus({ PUSH_PLUS_TOKEN })\npushplus.send('你好', '你好，我很可爱 - PushPlus', {\n    template: 'html',\n    channel: 'wechat',\n})\n\n// iGot 推送，官方文档：http://hellyw.com/#/\nconst I_GOT_KEY = 'xxxxxxxxxx'\nconst iGot = new IGot({ I_GOT_KEY })\niGot.send('你好', '你好，我很可爱 - iGot', {\n    url: 'https://github.com/CaoMeiYouRen/push-all-in-one',\n    topic: 'push-all-in-one',\n})\n\n// Qmsg 酱 推送，官方文档：https://qmsg.zendee.cn\nconst QMSG_KEY = 'xxxxxxxxxxxx'\nconst qmsg = new Qmsg({ QMSG_KEY })\nqmsg.send('你好，我很可爱 - Qmsg', '', {\n    type: 'send',\n    qq: '123456,654321',\n}) // msg：要推送的消息内容；qq：指定要接收消息的QQ号或者QQ群，多个以英文逗号分割，例如：12345,12346\n\n\n// 息知 推送，官方文档：https://xz.qqoq.net/#/index\nconst XI_ZHI_KEY = 'xxxxxxxxxxxxx'\nconst xiZhi = new XiZhi({ XI_ZHI_KEY })\nxiZhi.send('你好', '你好，我很可爱 - XiZhi')\n\n// PushDeer 推送，官方文档：https://github.com/easychen/pushdeer\nconst PUSH_DEER_PUSH_KEY = 'xxxxxxxxxx'\nconst pushDeer = new PushDeer({ PUSH_DEER_PUSH_KEY })\npushDeer.send('你好', '你好，我很可爱 - PushDeer', {\n    type: 'markdown',\n})\n\n// 【推荐】Discord Webhook 推送，官方文档：https://support.discord.com/hc/zh-tw/articles/228383668-%E4%BD%BF%E7%94%A8%E7%B6%B2%E7%B5%A1%E9%89%A4%E6%89%8B-Webhooks-\n// [Recommended] Discord Webhook push. Official documentation: https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks\nconst DISCORD_WEBHOOK = 'https://discord.com/api/webhooks/xxxxxxxxxxxxxxxxxxxxxxxxxxx'\nconst DISCORD_USERNAME = 'My Bot'\nconst PROXY_URL = 'http://127.0.0.1:8101'\nconst discord = new Discord({ DISCORD_WEBHOOK, PROXY_URL })\n// Discord 也支持以下方式添加代理地址\n// Discord also supports adding proxy addresses in the following ways\n// discord.proxyUrl = 'http://127.0.0.1:8101'\ndiscord.send('你好，我很可爱 - Discord', '', {\n    username: DISCORD_USERNAME,\n})\n\n// 【推荐】Telegram Bot 推送。官方文档：https://core.telegram.org/bots/api#making-requests\n// [Recommended] Telegram Bot push. Official documentation: https://core.telegram.org/bots/api#making-requests\nconst telegram = new Telegram({\n    TELEGRAM_BOT_TOKEN: '111111:xxxxxxxxxxxxxx',\n    TELEGRAM_CHAT_ID: 100000,\n    // PROXY_URL: 'http://127.0.0.1:8101',\n})\n// Telegram 也支持以下方式添加代理地址\n// Telegram also supports adding proxy addresses in the following ways\n// telegram.proxyUrl = 'http://127.0.0.1:8101'\ntelegram.send('你好，我很可爱 - Telegram', '', {\n    disable_notification: true,\n})\n\n// OneBot 推送。官方文档：https://github.com/botuniverse/onebot-11\n// 本项目实现的版本为 OneBot 11\n// 在 mirai 环境下实现的插件版本可参考：https://github.com/yyuueexxiinngg/onebot-kotlin\nconst ONE_BOT_BASE_URL = 'http://127.0.0.1:5700'\nconst ONE_BOT_ACCESS_TOKEN = 'xxxxxxxxxxx'\nconst oneBot = new OneBot({ ONE_BOT_BASE_URL, ONE_BOT_ACCESS_TOKEN })\noneBot.send('你好，我很可爱 - OneBot 11', '', {\n    message_type: 'private',\n    user_id: 123456789,\n})\n\n// 【推荐】Ntfy 推送。官方文档：https://ntfy.sh/docs/publish/\nconst ntfy = new Ntfy({\n    NTFY_URL: 'https://ntfy.sh',\n    NTFY_TOPIC: 'push_all_in_one_test',\n})\nawait ntfy.send('Ntfy - 标题支持中文', '你好，我很可爱 - Ntfy', {\n})\n\n// WxPusher 推送。官方文档：https://wxpusher.zjiecode.com/docs\n// WxPusher 是一个开源的微信消息推送平台，支持多种消息格式，包括文本、HTML、Markdown\n// 使用前需要：\n// 1. 在 https://wxpusher.zjiecode.com/admin/main/app/appToken 申请 appToken\n// 2. 在 https://wxpusher.zjiecode.com/admin/main/wxuser/list 获取接收消息用户的 uid\nconst WX_PUSHER_APP_TOKEN = 'xxxxxxxxxxxxxxxxxx'\nconst WX_PUSHER_UID = 'yyyyyyyyyyyyyyyyyyy'\nconst wxPusher = new WxPusher({\n    WX_PUSHER_APP_TOKEN,\n    WX_PUSHER_UID,\n})\n\n// 基础用法\nwxPusher.send('你好', '你好，我很可爱 - WxPusher')\n\n// 高级用法\nwxPusher.send('你好', '你好，我很可爱 - WxPusher', {\n    contentType: 3, // 内容类型：1=文本，2=HTML，3=Markdown，默认为1\n    summary: '消息摘要', // 显示在微信聊天页面的消息摘要，限制长度20，不传则自动截取content\n    url: 'https://wxpusher.zjiecode.com', // 点击消息时打开的链接，可选\n    topicIds: [123], // 发送目标的主题ID数组，可以实现群发，可选\n    save: 1, // 是否保存消息：0=不保存，1=保存，默认0\n    verifyPayload: 'test', // 验证负载，仅针对text消息类型有效，可选\n})\n\n// HTML 格式示例\nwxPusher.send('HTML 消息', '\u003ch1\u003e标题\u003c/h1\u003e\u003cp style=\"color:red;\"\u003e红色文字\u003c/p\u003e', {\n    contentType: 2,\n    summary: 'HTML示例',\n})\n\n// Markdown 格式示例\nwxPusher.send('Markdown 消息', '## 二级标题\\n- 列表项1\\n- 列表项2', {\n    contentType: 3,\n    summary: 'Markdown示例',\n})\n\n// 群发示例\nwxPusher.send('群发消息', '这是一条群发消息', {\n    contentType: 1,\n    topicIds: [123, 456], // 可以发送给多个主题\n    uids: ['UID_1', 'UID_2'], // 可以同时发送给多个用户\n})\n\n更多例子请参考 [examples](https://github.com/CaoMeiYouRen/push-all-in-one/tree/master/examples)\n\n**代理支持**\n\n| 环境变量    | 作用                                       | 例子                   |\n| ----------- | ------------------------------------------ | ---------------------- |\n| NO_PROXY    | 设置是否禁用代理                           | true                   |\n| HTTP_PROXY  | 设置 http/https 代理                       | http://127.0.0.1:8101  |\n| HTTPS_PROXY | 设置 http/https 代理                       | http://127.0.0.1:8101  |\n| SOCKS_PROXY | 通过 socks/socks5 协议设置 http/https 代理 | socks://127.0.0.1:8100 |\n\n本项目通过环境变量来支持请求代理\n\n```ts\n// 在 nodejs 项目中可通过直接设置环境变量来设置代理\nprocess.env.HTTP_PROXY = 'http://127.0.0.1:8101' // 当请求是 http/https 的时候走 HTTP_PROXY\nprocess.env.HTTPS_PROXY = 'http://127.0.0.1:8101' // 当请求是 http/https 的时候走 HTTPS_PROXY，HTTPS_PROXY 优先\nprocess.env.SOCKS_PROXY = 'socks://127.0.0.1:8100' // 当 HTTP_PROXY 设置时走 SOCKS_PROXY\n// process.env.NO_PROXY = true // 设置 NO_PROXY 可禁用代理\n```\n\n在命令行中可手动设置环境变量\n\n```sh\nset HTTP_PROXY='http://127.0.0.1:8101' # Windows\nexport HTTP_PROXY='http://127.0.0.1:8101' # Linux\ncross-env HTTP_PROXY='http://127.0.0.1:8101' # 通过 cross-env 这个包来跨平台\n```\n\n## 🛠️ 开发/Development\n\n本项目采用 TypeScript 开发，使用 tsup 打包，可以完美实现类型提示和摇树优化，对于未使用到的模块，会在编译阶段去除。\n\n```sh\nnpm run dev\n```\n\n## 🐛 debug\n\n本项目使用 `debug` 这个包来 debug ，如果要开启调试则设置环境变量为 `DEBUG=push:*` 即可，例如\n\n```sh\ncross-env DEBUG=push:* NODE_ENV=development ts-node-dev test/index.test.ts # 因为一些原因该文件未上传，可自行编写测试用例\n```\n\n## 🔧 编译/Build\n\n```sh\nnpm run build\n```\n\n## 🔍 Lint\n\n```sh\nnpm run lint\n```\n\n## 💾 Commit\n\n```sh\nnpm run commit\n```\n\n## 👤 作者/Author\n\n**CaoMeiYouRen**\n\n* Website: [https://blog.cmyr.ltd/](https://blog.cmyr.ltd/)\n* GitHub: [@CaoMeiYouRen](https://github.com/CaoMeiYouRen)\n\n## 🤝 贡献/Contribution\n\n欢迎 贡献、提问或提出新功能！\u003cbr /\u003e如有问题请查看 [issues page](https://github.com/CaoMeiYouRen/push-all-in-one/issues). \u003cbr/\u003e贡献或提出新功能可以查看[contributing guide](https://github.com/CaoMeiYouRen/push-all-in-one/blob/master/CONTRIBUTING.md).\n\nWelcome to contribute, ask questions or propose new features! \u003cbr /\u003eIf you have any questions, please check the  [issues page](https://github.com/CaoMeiYouRen/push-all-in-one/issues). \u003cbr/\u003e For contributions or new feature proposals, please refer to the [contributing guide](https://github.com/CaoMeiYouRen/push-all-in-one/blob/master/CONTRIBUTING.md).\n\n## 💰 支持/Support\n\n如果觉得这个项目有用的话请给一颗⭐️，非常感谢。\n\nIf you find this project useful, please give it a ⭐️. Thank you very much.\n\n\u003ca href=\"https://afdian.com/@CaoMeiYouRen\"\u003e\n  \u003cimg src=\"https://cdn.jsdelivr.net/gh/CaoMeiYouRen/image-hosting-01@master/images/202306192324870.png\" width=\"312px\" height=\"78px\" alt=\"在爱发电支持我\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://patreon.com/CaoMeiYouRen\"\u003e\n    \u003cimg src=\"https://cdn.jsdelivr.net/gh/CaoMeiYouRen/image-hosting-01@master/images/202306142054108.svg\" width=\"312px\" height=\"78px\" alt=\"become a patreon\"/\u003e\n\u003c/a\u003e\n\n## 🌟 Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=CaoMeiYouRen/push-all-in-one\u0026type=Date)](https://star-history.com/#CaoMeiYouRen/push-all-in-one\u0026Date)\n\n## 📝 License\n\nCopyright © 2022 [CaoMeiYouRen](https://github.com/CaoMeiYouRen).\u003cbr /\u003e\nThis project is [MIT](https://github.com/CaoMeiYouRen/push-all-in-one/blob/master/LICENSE) licensed.\n\n***\n_This README was generated with ❤️ by [cmyr-template-cli](https://github.com/CaoMeiYouRen/cmyr-template-cli)_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaomeiyouren%2Fpush-all-in-one","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaomeiyouren%2Fpush-all-in-one","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaomeiyouren%2Fpush-all-in-one/lists"}