Hi @awilson9,
We thought about going down this path for a while a few years ago... I even have some javascript to insert "template" language (university policies, disability statement, etc) onto the syllabus page so faculty wouldn't have to worry about that anymore. They would just have needed to put in the academic things for their course. Unfortunately, this idea was scrapped because of some faculty feedback (basklash). As you basically stated, to make something like this work without getting super complex, content would all have to be entered in a similar way (we were going to go the HTML route, as that would be the best experience for students, and the easiest to archive). Our faculty don't want to be forced to use Canvas, especially in a specific way. I did understand the difficulty some faculty would have getting their fancily-formatted syllabi into Canvas without looking some of the "look and feel", but I personally feel like the information is more important than the layout (but I recognize this is just my opinion).
If you go this route, you can definitely get the HTML from the API, or even perhaps just fetching each course sylabus page and saving that (as that would save the class schedule auto-populated from Canvas. If you want to allow faculty to use files for their syllabi, that does make things more difficult. Hopefully you could require faculty to put a link to their file on the syllabus page so you could parse the HTML and find the file source to save, but that can get complicated if there are multiple links and you don't know which is the correct one.
I know this isn't much of a solution, but hopefully a confirmation of your thinking. If you'd like the code to insert content onto the syllabus page, you can find it on my github.
-Chris