{"id":28194237,"url":"https://github.com/lopinx/wechatmpcopilot","last_synced_at":"2025-06-11T03:33:17.612Z","repository":{"id":290189725,"uuid":"973639168","full_name":"lopinx/WeChatMPCopilot","owner":"lopinx","description":"一个微信/网站发文自动化工具。该工具支持从关键词或标题生成文章内容，并通过 AI 模型（如 GPT）生成高质量的文章并进行发布和本地保存。","archived":false,"fork":false,"pushed_at":"2025-05-11T05:36:17.000Z","size":292,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-11T06:28:32.341Z","etag":null,"topics":["automation","bm25","chatgpt","keybert","textrank","tf-idf","wechat","weixin"],"latest_commit_sha":null,"homepage":"https://www.lopins.cn","language":"Python","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/lopinx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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,"zenodo":null}},"created_at":"2025-04-27T12:28:31.000Z","updated_at":"2025-05-11T05:36:20.000Z","dependencies_parsed_at":"2025-04-27T13:43:44.271Z","dependency_job_id":null,"html_url":"https://github.com/lopinx/WeChatMPCopilot","commit_stats":null,"previous_names":["lopinx/wechatmpcopilot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lopinx%2FWeChatMPCopilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lopinx%2FWeChatMPCopilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lopinx%2FWeChatMPCopilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lopinx%2FWeChatMPCopilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lopinx","download_url":"https://codeload.github.com/lopinx/WeChatMPCopilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lopinx%2FWeChatMPCopilot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259191971,"owners_count":22819409,"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":["automation","bm25","chatgpt","keybert","textrank","tf-idf","wechat","weixin"],"created_at":"2025-05-16T13:11:41.925Z","updated_at":"2025-06-11T03:33:17.588Z","avatar_url":"https://github.com/lopinx.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/lopinx/crawl4geo\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.lightpanda.io/assets/images/logo/lpd-logo.png\" alt=\"Logo\" height=170\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003e微信公众号助手\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://github.com/lopinx/WeChatMPCopilot\"\u003e微信公众号助手\u003c/a\u003e\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![KeyBERT](https://img.shields.io/github/stars/MaartenGr/KeyBERT)](https://github.com/MaartenGr/KeyBERT)\n[![jieba](https://img.shields.io/github/stars/fxsjy/jieba)](https://github.com/fxsjy/jieba)\n[![NLTK](https://img.shields.io/github/stars/nltk/nltk)](https://github.com/nltk/nltk)\n\n\u003c/div\u003e\n\n---\n\n## 项目概述\n\n`WeChatMPCopilot` 是一个自动化工具，旨在帮助用户通过微信公众平台 API 自动发布文章。该工具支持从关键词或标题生成文章内容，并通过 AI 模型（如 GPT）生成高质量的文章。此外，它还集成了图片上传、草稿保存和文章发布的完整流程。\n\n主要功能包括：\n\n- **关键词提取**：基于 KeyBERT 和 TextRank 算法提取文章关键词。\n\n- **AI 内容生成**：通过 OpenAI 或其他大模型生成文章标题和内容。\n\n- **微信公众号集成**：自动上传图片、保存草稿并发布文章。\n\n- **多语言支持**：支持中文和英文内容生成。\n\n- **SEO 优化**：生成的内容符合 SEO 最佳实践，提升文章曝光率。\n\n---\n\n## 安装依赖\n\n### 使用 `uv` 工具安装依赖\n\n1. 安装 `uv` 工具（如果尚未安装）：\n\n   ```bash\n   pip install uv\n   ```\n\n2. 使用 `uv` 添加依赖包：\n\n   ```bash\n   uv add httpx[http2,http3] keybert scikit-learn jieba nltk fuzzywuzzy python-Levenshtein markdown pygments pymdown-extensions markdownify openai pandas\n   ```\n\n3. 或者使用 `requirements.txt` 安装依赖：\n\n   ```bash\n   uv pip install -r requirements.txt\n   ```\n\n4. 导出依赖包：\n\n   ```bash\n   uv pip freeze | uv pip compile - -o requirements.txt\n   ```\n\n### 手动安装依赖\n\n你也可以手动安装所有依赖包：\n\n```bash\npip install httpx[http2,http3] keybert scikit-learn jieba nltk fuzzywuzzy python-Levenshtein markdown pygments pymdown-extensions markdownify openai pandas\n```\n\n---\n\n## 配置文件说明\n\n### `config.json`\n\n`config.json` 文件包含项目的全局配置信息，包括微信公众号 API 的凭据、GPT 模型的配置以及文章生成的相关参数。以下是一个示例配置：\n\n``` json5\n{\n    \"gpts\": [\n      {\n        \"baseurl\": \"http://127.0.0.1:11434/v1\", //API接口地址，/chat/completions 前部分\n        \"apikey\": [\n          \"EMPTY\"\n        ],\n        \"models\": [\n          \"deepseek-r1:latest\"                  // GPT模型,列表引入，可以多个\n        ]\n      }\n    ],\n    \"stopk\": {\n      \"cn\": \"ChineseStopWords.txt\",             // 停用词文件路径\n      \"en\": \"EnglishStopWords.txt\"              // 停用词文件路径\n    },\n    \"mps\": [\n      {\n        \"name\": \"吴罗平\",                       // 公众号名称\n        \"appid\": \"\",                            // 公众号 AppID\n        \"secret\": \"\",                           // 公众号 AppSecret\n        \"baseurl\": \"https://api.weixin.qq.com\", // 微信公众号 API 接口地址\n        \"lang\": \"中文\",                          // 文章语言类型\n        \"aitags\": true,                         // 是否使用GPT生成标签\n        \"aiexcerpt\": true,                      // 是否使用GPT生成摘要\n        \"draft\": false,                         // 是否上传草稿\n        \"publish\": false,                       // 是否发布文章\n        \"keys\": \"keywords.txt\",                  // 关键词文件路径\n        // reqkeys: 核心关键词列表（影响分词结果，不是必须）\n        \"reqkeys\": [\n          \"SEO\",\n          \"网站建设\",\n          \"网络营销\",\n          \"网站优化\",\n          \"网站推广\",\n          \"网站流量\",\n          \"网站运营\",\n          \"微信公众号\"\n        ],\n        \"number\": 3,                            // 每次最多生成文章数量\n        \"source_url\": \"\",                         // 阅读原文 链接\n        \"author\": \"lopins\",                      // 文章作者\n        // 图片素材，从微信公众号素材库上传的图片素材ID（需要自己获取，本项目不提供：因为不是所有人都需要，关键词：素材ID）\n        \"media_ids\": {\n          \"睡眠障碍（失眠）\": \"noV6uipu7YVLwbb16HbFYSJcwovsmrtAZjWhdKD_C1iCmv93lLTq6R7SdX3nOGN4\",\n          \"尿毒症\": \"noV6uipu7YVLwbb16HbFYYhQUy0at2Acn1ht3318BxHkwLmRrbuQuDu8Lzr59ERI\",\n          \"夫妻生活（两性）\": \"noV6uipu7YVLwbb16HbFYQVpJtBLVwJKybqkKFpo96Os5RohFpI5rCPeKELn_o1S\",\n          \"糖尿病（胰岛素）\": \"noV6uipu7YVLwbb16HbFYe9djnLaHk18OCw4cknHNsJ0VbRar092a4bIPwUc0f7w\",\n          \"美容抗衰 （国内）\": \"noV6uipu7YVLwbb16HbFYQzLytsMtfsdzQyCjZpNcVEs0WiB7Lo1v32QdzgbMnKc\",\n          \"关节炎（膝关节）\": \"noV6uipu7YVLwbb16HbFYey40BtXdboB-AMCY676hm03DHYL75xQZRgkoyUG05sZ\",\n          \"肝硬化\": \"noV6uipu7YVLwbb16HbFYT7zdck2-QW976rR7GOf8SrdtKgrmYYA9sQXoxoAdSvJ\",\n          \"肺（慢阻肺）\": \"noV6uipu7YVLwbb16HbFYWCcrIMhAqoJy5rI8E1cPfNLKxkipA_UKuJXuDcG00AF\",\n          \"干细胞VS免疫细胞\": \"noV6uipu7YVLwbb16HbFYWG-pc3sXRiIfHbob7hOL_AKHzEy5KTRYWxz1rXK9mT7\",\n          \"糖尿病\": \"noV6uipu7YVLwbb16HbFYaPeSVbgF2YVuNkmlANgjfNuEtg6kAk-O1Y4Si1UEAMx\",\n          \"癌症\": \"noV6uipu7YVLwbb16HbFYXKd9m8rHIRJDmZypQ7vtLIAz_hBgVKY8QRLRwHax9Wv\",\n          \"肺病\": \"noV6uipu7YVLwbb16HbFYcgFYLcRdkb3qhzX3QLVCrYdFNfvXDGFSiFLIbLRWNhH\",\n          \"干细胞\": \"noV6uipu7YVLwbb16HbFYXtLjpxmeESofvTgSA9NuT223w2qciBmsIV0rnue5XsF\",\n          \"好孕、怀孕、备孕\": \"noV6uipu7YVLwbb16HbFYelF4g4clOcXSvhh0_DD1Mku_-aDB7g0Ry7zGJtrisa3\",\n          \"医院\": \"noV6uipu7YVLwbb16HbFYSUwXbLJ_IaR3SMK1SrOEdD4LF5O9TEKV6SyE2U4EKcN\"\n        },\n        \"service_ad\": \"\",                        // 服务广告（HTML源码：注意转义防止json识别报错）\n        \"contact_us\": \"\",                        // 联系我们（HTML源码：注意转义防止json识别报错）\n        \"bottom_ad_top\": \"\",                     // 底部广告（HTML源码：注意转义防止json识别报错）\n        \"bottom_ad_bottom\": \"\",                  // 底部广告（HTML源码：注意转义防止json识别报错）\n        \"followme\": \"\"                           // 公众号关注Banner（HTML源码：从公众号编辑器F12方式获取，注意转义防止json识别报错）\n      }\n    ]\n  }\n```\n\n#### 配置字段说明\n\n- **`gpts`**: 包含 GPT 模型的配置，如 API 地址、密钥、模型列表等。\n- **`mps`**: 包含微信公众平台的配置，如 AppID、AppSecret、媒体 ID 映射等。\n- **`stopk`**: 停用词文件路径，用于分词和关键词提取。\n\n---\n\n## 使用说明\n\n### 运行脚本\n\n1. **确保已安装所有依赖**。\n\n2. **配置 `config.json` 文件**，填写正确的微信公众平台凭据和 GPT 模型信息。\n\n3. 运行脚本：\n\n   ```bash\n   python main.py\n   ```\n\n### 日志记录\n\n日志信息将输出到控制台，方便调试和监控程序运行状态。\n\n---\n\n## 功能详解\n\n### 1. 获取 Access Token\n\n通过微信公众平台 API 获取 Access Token，用于后续的草稿上传和文章发布操作。\n\n```python\ntoken_status, token = wechat.get_wechatmp_token()\nif not token_status:\n    logging.error(\"获取 Access Token 失败\")\n```\n\n### 2. 上传图片\n\n将本地图片上传至微信公众平台，并返回媒体 ID。\n\n```python\nimage_status, media_id = upload_wechatmp_image(token, \"path/to/image.jpg\")\nif not image_status:\n    logging.error(\"图片上传失败\")\n```\n\n### 3. 生成文章内容\n\n通过 AI 模型生成文章标题和内容，并提取 SEO 关键词。\n\n```python\ntitle = Extensions.get_gpt_generation(keyword=\"人工智能\", lang=\"zh\", mode=\"title\")\ncontent = Extensions.get_gpt_generation(keyword=title, lang=\"zh\", mode=\"body\")\ntags = Extensions.extract_keywords(content, require_words=[\"人工智能\", \"机器学习\"])\n```\n\n### 4. 保存草稿\n\n将生成的文章保存为微信公众平台的草稿。\n\n```python\ndraft_status, draft_id = wechat.get_wechatmp_draft(articles)\nif not draft_status:\n    logging.error(\"保存草稿失败\")\n```\n\n### 5. 发布文章\n\n将草稿发布为正式文章。\n\n```python\npublish_status, publish_id = wechat.get_wechatmp_publish(draft_id)\nif not publish_status:\n    logging.error(\"文章发布失败\")\n```\n\n---\n\n## 代码结构\n\n```\nWeChatMP-AutoPost/\n├── main.py                  # 主程序入口\n├── config.json              # 配置文件\n├── ChineseStopWords.txt     # 中文停用词文件\n├── EnglishStopWords.txt     # 英文停用词文件\n├── keywords.txt             # 关键词列表\n├── required_keywords.txt    # 必要关键词列表\n└── article/                 # 生成的文章备份目录\n```\n\n---\n\n## 常见问题\n\n### Q: 如何添加新的 GPT 模型？\n\nA: 编辑 `config.json` 文件，在 `gpts` 字段中添加新的模型配置。例如：\n\n```json\n{\n    \"baseurl\": \"https://new-model-provider.com/api\",\n    \"apikey\": [\"new-api-key\"],\n    \"models\": [],\n    \"fee_type\": \"free\",\n    \"from_type\": \"text\",\n    \"to_type\": \"text\",\n    \"min_tokens\": 4096\n}\n```\n\n**后四个参数为非必填项，可自行添加。**\n\n### Q: 如何处理图片？\n\nA: 脚本会自动上传图片并返回媒体 ID。确保图片路径正确，或者在 `config.json` 中配置媒体 ID 映射（从微信公众平台通过API获取）。\n\n### Q: 如何调整文章生成逻辑？\n\nA: 修改 `Extensions.get_gpt_generation` 方法中的提示模板（`prompts`），以适应不同的写作风格和需求。\n\n---\n\n## 贡献指南\n\n1. **Fork** 项目到你的 GitHub 账户。\n\n2. **Clone** 你的 Fork 到本地：\n\n   ```bash\n   git clone https://github.com/yourusername/WeChatMP-AutoPost.git\n   cd WeChatMP-AutoPost\n   ```\n\n3. **创建** 一个新的分支：\n\n   ```bash\n   git checkout -b feature/your-feature\n   ```\n\n4. **提交** 你的更改：\n\n   ```bash\n   git add .\n   git commit -m \"Add your feature\"\n   ```\n\n5. **Push** 到你的分支：\n\n   ```bash\n   git push origin feature/your-feature\n   ```\n   \n6. 打开一个 **Pull Request** 到 `main` 分支。\n\n---\n\n## 许可证\n\n本项目采用 [MIT 许可证](LICENSE)。\n\n---\n\n希望这个 `README.md` 文档能够帮助用户更好地理解和使用你的项目！如果有任何补充或修改需求，请随时告知。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flopinx%2Fwechatmpcopilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flopinx%2Fwechatmpcopilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flopinx%2Fwechatmpcopilot/lists"}