I wanted an EPUB version of *Kubernetes The Hard Way*, but I did not want to manually rebuild it whenever the upstream project changed.
I used OpenAI to help me design and build a project that handles the entire process. I provided the requirements, reviewed the results, tested the generated books, and kept refining the project when I found formatting or security problems.
The finished project tracks the current upstream default branch and checks for changes every six hours. When the source changes, it builds a new EPUB, validates it, and updates the GitHub release.
OpenAI helped with the Python builder, EPUB structure, responsive styling, GitHub Actions workflow, tests, documentation, and release automation. It was especially useful for working through EPUB details that I did not want to handle manually, such as manifests, navigation, metadata, archive layout, and light and dark mode compatibility.
I also wanted the result to have a strong security model. The generated EPUB cannot contain JavaScript, executable files, unsafe embedded content, remote resources, encrypted files, or suspicious archive structures. Every release passes a custom security scanner and official EPUBCheck validation. It also includes an SHA 256 checksum, source provenance, and a GitHub build attestation.
Calibre is not required. The EPUB is constructed directly with Python and should work with any standards compliant reader.
The project is here:
[https://github.com/terrytrent/kubernetes-the-hard-way-epub-builder\](https://github.com/terrytrent/kubernetes-the-hard-way-epub-builder)
The current EPUB is here:
[https://github.com/terrytrent/kubernetes-the-hard-way-epub-builder/releases/tag/epub-master\](https://github.com/terrytrent/kubernetes-the-hard-way-epub-builder/releases/tag/epub-master)
This was a useful example of using AI as a development partner instead of asking it for a single block of code. Most of the value came from reviewing the output, finding problems, adding requirements, testing again, and continuing until the complete workflow worked reliably.