ChatGPT to Markdown 工具发布完整流程
能把整个流程梳理一遍吗?我备份下,方便下次查阅。(第一性原则)
后面我找时间推送到GitHub
txt
# ChatGPT to Markdown
一个简单的工具,将ChatGPT导出的zip文件转换为漂亮的Markdown文件。
使用方法
chatgpt-to-md --help
# 基本用法
chatgpt-to-md conversation.zip
# 指定输出目录
chatgpt-to-md conversation.zip -o ./my_chats
# Python中使用
from chatgpt_to_md import convert
convert("conversation.zip", "./output")
# 功能特点
- ✅ 自动解压zip文件
- ✅ 转换所有对话为独立的Markdown文件
- ✅ 包含YAML front matter元数据
- ✅ 按时间排序对话消息
- ✅ 自动处理文件名中的非法字符
第一性原则:从零到发布的本质步骤
核心认知
- 目标:将本地Python脚本转化为全球可安装的包
- 本质:创建标准化结构 + 配置元数据 + 构建分发 + 发布
- 关键 :遵循Python包标准,让
pip
能识别和安装
第一阶段:项目标准化
1.1 创建项目结构
chatgpt-to-md/ # 项目根目录
├── src/ # 源代码目录
│ └── chatgpt_to_md/ # 包目录(与项目名对应)
│ ├── __init__.py # 包初始化文件
│ └── core.py # 核心功能代码
├── tests/ # 测试目录(可选)
├── pyproject.toml # 项目配置(核心)
├── README.md # 项目说明
└── LICENSE # 许可证文件
1.2 核心文件内容
src/chatgpt_to_md/__init__.py
python
"""ChatGPT to Markdown Converter"""
__version__ = "0.1.0"
__author__ = "Your Name"
from .core import convert, main
__all__ = ["convert", "main"]
src/chatgpt_to_md/core.py
python
import json
import zipfile
import os
from datetime import datetime
import re
def convert(zip_path, output_dir="./chatgpt_output"):
"""主转换函数"""
# 你的核心代码在这里
pass
def main():
"""命令行入口点"""
import argparse
# 命令行解析代码
pass
if __name__ == "__main__":
main()
pyproject.toml
(项目心脏)
toml
[build-system]
requires = ["setuptools>=45", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "chatgpt-md-export" # 包名(必须唯一)
version = "0.1.0" # 版本号
description = "将ChatGPT导出的对话转换为Markdown文件"
authors = [{name = "Your Name", email = "your.email@example.com"}]
readme = "README.md"
license = {text = "MIT"}
requires-python = ">=3.7"
[project.urls]
Homepage = "https://github.com/yourusername/chatgpt-to-md"
[project.scripts]
chatgpt-to-md = "chatgpt_to_md.core:main"
README.md
markdown
# ChatGPT to Markdown
简单易用的ChatGPT对话导出工具
## 安装
```bash
pip install chatgpt-md-export
使用
bash
chatgpt-to-md conversation.zip
#### `LICENSE`
```text
MIT License内容...
第二阶段:本地开发测试
2.1 开发模式安装
bash
# 在项目根目录执行
pip install -e .
2.2 测试功能
bash
# 测试命令行
chatgpt-to-md --help
# 测试实际功能
chatgpt-to-md test_conversation.zip -o ./test_output
第三阶段:构建分发包
3.1 安装构建工具
bash
pip install build
3.2 执行构建
bash
# 清理环境(重要!)
rm -rf dist/ build/ src/*.egg-info/
# 构建分发包
python -m build
3.3 验证构建结果
- 检查
dist/
目录生成两个文件:.tar.gz
源码包.whl
二进制包
第四阶段:发布到PyPI
4.1 准备认证信息
获取API Token(推荐):
- 访问 https://pypi.org/
- 注册/登录账户
- 账户设置 → API tokens → Create token
- 复制token(以
pypi-
开头)


4.2 安装上传工具
bash
pip install twine
4.3 检查包文件
bash
twine check dist/*
4.4 执行上传
bash
# 使用API Token上传
twine upload dist/* -u __token__ -p pypi-你的token内容
4.5 验证发布
- 访问
https://pypi.org/project/你的包名/
- 测试安装:
pip install 你的包名
第五阶段:版本更新
5.1 更新版本号
修改 pyproject.toml
:
toml
version = "0.1.1" # 递增版本号
5.2 重新发布流程
bash
# 清理
rm -rf dist/ build/ src/*.egg-info/
# 构建
python -m build
# 上传
twine upload dist/* -u __token__ -p pypi-你的token
故障排除手册
问题1:认证失败
症状 :403 Forbidden
或 Invalid authentication
解决:
- 确认使用
__token__
作为用户名 - 确认token以
pypi-
开头 - 检查token是否有发布权限
问题2:包名冲突
症状 :403 Forbidden
或包名已存在
解决:
- 修改
pyproject.toml
中的name
- 选择更独特的包名
- 重新构建上传
问题3:构建警告
症状 :许可证格式警告
解决:
- 使用新的许可证格式:
license = {text = "MIT"}
问题4:依赖冲突
症状 :安装时版本冲突
解决:
- 确保只使用Python标准库
- 避免不必要的外部依赖
快速参考命令集
bash
# 开发测试
pip install -e .
chatgpt-to-md --help
# 构建发布
pip install build twine
rm -rf dist/ build/ src/*.egg-info/
python -m build
twine check dist/*
twine upload dist/* -u __token__ -p pypi-你的token
# 用户安装
pip install 你的包名
核心要点总结
- 结构标准化 :
src/包名/
+pyproject.toml
- 入口明确 :通过
[project.scripts]
定义命令行工具 - 元数据完整:名称、版本、描述、作者、许可证
- 构建清洁:每次发布前清理旧构建
- 认证安全:使用API Token而非密码
- 测试先行:先在TestPyPI测试,再发正式版
这个流程适用于任何Python工具的发布,只需替换核心功能代码即可。记住:标准化结构是成功发布的关键!