If the chapters are projects (or nested sub-projects), and you have a unique tag for each character ( @Jim etc ) you would only have to use each character’s tag once per chapter to get a chapter list for each character.
The saved listing filter for showing Jim’s chapters, for example, might be:
i.e. “list the ancestors of type ‘project’ for all instances of @jim”
( if the @jim tag occurs at several points in the project or nested sub-project, that project will still only be listed once)
You might even just be able to match mentions of a character’s name (rather than tag) (unless it turns up as a sub-string of common words)