I'm going to try http://keepachangelog.com/ and need some tiny improvements for autogenerating CHANGELOG.md.
As I see:
- Need to parse somehow CHANGELOG.md to get sections with commits list;
- Remove already added commit from import;
- Split commits list to different sections;
- Generate new release section for unreleased section since last tag (or since passed --start-ref).
- Replace old unreleased with the new one.
Also it can be an option to finalize unreleased section with some tag (in that way we need to fetch 2 tags: previous and the last, and use them as start and end refs).