# ChatGPT to Markdown
一个简单的工具,将ChatGPT导出的zip文件转换为漂亮的Markdown文件。
## 安装
```bash
pip install chatgpt-to-md
```
## 使用方法
### 命令行使用
```bash
# 基本用法
chatgpt-to-md conversation.zip
# 指定输出目录
chatgpt-to-md conversation.zip -o ./my_chats
```
### Python中使用
```python
from chatgpt_to_md import convert
convert("conversation.zip", "./output")
```
## 功能特点
- ✅ 自动解压zip文件
- ✅ 转换所有对话为独立的Markdown文件
- ✅ 包含YAML front matter元数据
- ✅ 按时间排序对话消息
- ✅ 自动处理文件名中的非法字符
## 许可证
MIT
```
## 5. 许可证文件 (`LICENSE`)
```text
MIT License
Copyright (c) 2024 Your Name
Permission is hereby granted...
```
## 发布流程
### 1. 本地开发和测试
```bash
# 进入项目目录
cd chatgpt-to-md
# 安装为开发模式
pip install -e .
# 测试功能
chatgpt-to-md test_conversation.zip -o ./test_output
```
### 2. 构建包
```bash
# 安装构建工具
pip install build
# 构建包
python -m build
```
这会生成 `dist/` 目录,包含 `.whl` 和 `.tar.gz` 文件。
### 3. 发布到 PyPI
```bash
# 安装上传工具
pip install twine
# 上传到 PyPI
twine upload dist/*
```
## 使用方式
### 作为用户安装使用
```bash
# 从PyPI安装
pip install chatgpt-to-md
# 使用
chatgpt-to-md my_chatgpt_data.zip -o ./conversations
```
### 作为开发者使用
```python
from chatgpt_to_md import convert
# 在代码中使用
convert("path/to/chatgpt.zip", "./output_directory")
```
## 项目特点
1. **最简依赖**: 只使用Python标准库,无外部依赖
2. **单一功能**: 专注完成一个核心任务
3. **易于理解**: 代码结构清晰,便于学习和修改
4. **即装即用**: 安装后直接通过命令行使用
5. **标准化**: 符合Python包发布标准
这个架构让你能够:
- ✅ 快速理解整个发布流程
- ✅ 轻松维护和扩展
- ✅ 让其他用户方便安装使用
- ✅ 符合Python生态系统标准
Raw data
{
"_id": null,
"home_page": null,
"name": "chatgpt-to-md",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "chatgpt, markdown, export, converter",
"author": null,
"author_email": "Your Name <your.email@example.com>",
"download_url": "https://files.pythonhosted.org/packages/9e/45/6cc3f5db45e4814233d6ce548a975cc24480eac1b20c51c66223b0eaf539/chatgpt_to_md-0.1.0.tar.gz",
"platform": null,
"description": "# ChatGPT to Markdown\r\n\r\n\u4e00\u4e2a\u7b80\u5355\u7684\u5de5\u5177\uff0c\u5c06ChatGPT\u5bfc\u51fa\u7684zip\u6587\u4ef6\u8f6c\u6362\u4e3a\u6f02\u4eae\u7684Markdown\u6587\u4ef6\u3002\r\n\r\n## \u5b89\u88c5\r\n\r\n```bash\r\npip install chatgpt-to-md\r\n```\r\n\r\n## \u4f7f\u7528\u65b9\u6cd5\r\n\r\n### \u547d\u4ee4\u884c\u4f7f\u7528\r\n\r\n```bash\r\n# \u57fa\u672c\u7528\u6cd5\r\nchatgpt-to-md conversation.zip\r\n\r\n# \u6307\u5b9a\u8f93\u51fa\u76ee\u5f55\r\nchatgpt-to-md conversation.zip -o ./my_chats\r\n```\r\n\r\n### Python\u4e2d\u4f7f\u7528\r\n\r\n```python\r\nfrom chatgpt_to_md import convert\r\n\r\nconvert(\"conversation.zip\", \"./output\")\r\n```\r\n\r\n## \u529f\u80fd\u7279\u70b9\r\n\r\n- \u2705 \u81ea\u52a8\u89e3\u538bzip\u6587\u4ef6\r\n- \u2705 \u8f6c\u6362\u6240\u6709\u5bf9\u8bdd\u4e3a\u72ec\u7acb\u7684Markdown\u6587\u4ef6\r\n- \u2705 \u5305\u542bYAML front matter\u5143\u6570\u636e\r\n- \u2705 \u6309\u65f6\u95f4\u6392\u5e8f\u5bf9\u8bdd\u6d88\u606f\r\n- \u2705 \u81ea\u52a8\u5904\u7406\u6587\u4ef6\u540d\u4e2d\u7684\u975e\u6cd5\u5b57\u7b26\r\n\r\n## \u8bb8\u53ef\u8bc1\r\n\r\nMIT\r\n```\r\n\r\n## 5. \u8bb8\u53ef\u8bc1\u6587\u4ef6 (`LICENSE`)\r\n\r\n```text\r\nMIT License\r\n\r\nCopyright (c) 2024 Your Name\r\n\r\nPermission is hereby granted...\r\n```\r\n\r\n## \u53d1\u5e03\u6d41\u7a0b\r\n\r\n### 1. \u672c\u5730\u5f00\u53d1\u548c\u6d4b\u8bd5\r\n\r\n```bash\r\n# \u8fdb\u5165\u9879\u76ee\u76ee\u5f55\r\ncd chatgpt-to-md\r\n\r\n# \u5b89\u88c5\u4e3a\u5f00\u53d1\u6a21\u5f0f\r\npip install -e .\r\n\r\n# \u6d4b\u8bd5\u529f\u80fd\r\nchatgpt-to-md test_conversation.zip -o ./test_output\r\n```\r\n\r\n### 2. \u6784\u5efa\u5305\r\n\r\n```bash\r\n# \u5b89\u88c5\u6784\u5efa\u5de5\u5177\r\npip install build\r\n\r\n# \u6784\u5efa\u5305\r\npython -m build\r\n```\r\n\r\n\u8fd9\u4f1a\u751f\u6210 `dist/` \u76ee\u5f55\uff0c\u5305\u542b `.whl` \u548c `.tar.gz` \u6587\u4ef6\u3002\r\n\r\n### 3. \u53d1\u5e03\u5230 PyPI\r\n\r\n```bash\r\n# \u5b89\u88c5\u4e0a\u4f20\u5de5\u5177\r\npip install twine\r\n\r\n# \u4e0a\u4f20\u5230 PyPI\r\ntwine upload dist/*\r\n```\r\n\r\n## \u4f7f\u7528\u65b9\u5f0f\r\n\r\n### \u4f5c\u4e3a\u7528\u6237\u5b89\u88c5\u4f7f\u7528\r\n\r\n```bash\r\n# \u4ecePyPI\u5b89\u88c5\r\npip install chatgpt-to-md\r\n\r\n# \u4f7f\u7528\r\nchatgpt-to-md my_chatgpt_data.zip -o ./conversations\r\n```\r\n\r\n### \u4f5c\u4e3a\u5f00\u53d1\u8005\u4f7f\u7528\r\n\r\n```python\r\nfrom chatgpt_to_md import convert\r\n\r\n# \u5728\u4ee3\u7801\u4e2d\u4f7f\u7528\r\nconvert(\"path/to/chatgpt.zip\", \"./output_directory\")\r\n```\r\n\r\n## \u9879\u76ee\u7279\u70b9\r\n\r\n1. **\u6700\u7b80\u4f9d\u8d56**: \u53ea\u4f7f\u7528Python\u6807\u51c6\u5e93\uff0c\u65e0\u5916\u90e8\u4f9d\u8d56\r\n2. **\u5355\u4e00\u529f\u80fd**: \u4e13\u6ce8\u5b8c\u6210\u4e00\u4e2a\u6838\u5fc3\u4efb\u52a1\r\n3. **\u6613\u4e8e\u7406\u89e3**: \u4ee3\u7801\u7ed3\u6784\u6e05\u6670\uff0c\u4fbf\u4e8e\u5b66\u4e60\u548c\u4fee\u6539\r\n4. **\u5373\u88c5\u5373\u7528**: \u5b89\u88c5\u540e\u76f4\u63a5\u901a\u8fc7\u547d\u4ee4\u884c\u4f7f\u7528\r\n5. **\u6807\u51c6\u5316**: \u7b26\u5408Python\u5305\u53d1\u5e03\u6807\u51c6\r\n\r\n\u8fd9\u4e2a\u67b6\u6784\u8ba9\u4f60\u80fd\u591f\uff1a\r\n- \u2705 \u5feb\u901f\u7406\u89e3\u6574\u4e2a\u53d1\u5e03\u6d41\u7a0b\r\n- \u2705 \u8f7b\u677e\u7ef4\u62a4\u548c\u6269\u5c55\r\n- \u2705 \u8ba9\u5176\u4ed6\u7528\u6237\u65b9\u4fbf\u5b89\u88c5\u4f7f\u7528\r\n- \u2705 \u7b26\u5408Python\u751f\u6001\u7cfb\u7edf\u6807\u51c6\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "\u5c06ChatGPT\u5bfc\u51fa\u7684\u5bf9\u8bdd\u8f6c\u6362\u4e3aMarkdown\u6587\u4ef6",
"version": "0.1.0",
"project_urls": {
"Homepage": "https://github.com/yourusername/chatgpt-to-md"
},
"split_keywords": [
"chatgpt",
" markdown",
" export",
" converter"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "f80a67afefddc9c722847d9de0b81538acdf566dda171981088fb9da37094715",
"md5": "2b0e9c063c90647b520aebc35c719511",
"sha256": "badf7f47c676fb56042359d89234bbfb3933e7a3293eb75d2b10c575259ebd4d"
},
"downloads": -1,
"filename": "chatgpt_to_md-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2b0e9c063c90647b520aebc35c719511",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 4910,
"upload_time": "2025-10-20T06:04:06",
"upload_time_iso_8601": "2025-10-20T06:04:06.557998Z",
"url": "https://files.pythonhosted.org/packages/f8/0a/67afefddc9c722847d9de0b81538acdf566dda171981088fb9da37094715/chatgpt_to_md-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9e456cc3f5db45e4814233d6ce548a975cc24480eac1b20c51c66223b0eaf539",
"md5": "e4e89488514114a600e10b5be8c12f13",
"sha256": "82983768861ea95c56250718e88cf4acdf414755f3a2dcf560558b75065b9341"
},
"downloads": -1,
"filename": "chatgpt_to_md-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "e4e89488514114a600e10b5be8c12f13",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 4415,
"upload_time": "2025-10-20T06:04:07",
"upload_time_iso_8601": "2025-10-20T06:04:07.796496Z",
"url": "https://files.pythonhosted.org/packages/9e/45/6cc3f5db45e4814233d6ce548a975cc24480eac1b20c51c66223b0eaf539/chatgpt_to_md-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-20 06:04:07",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yourusername",
"github_project": "chatgpt-to-md",
"github_not_found": true,
"lcname": "chatgpt-to-md"
}