I have to admit I don’t fully understand all the ramifications of quasi-quotations, but:
The API for quasi-quotations does not obviously allow for the content to be a normal string. Instead it seems to be some opaque term created by the builtin parser.
Would it be possible/desirable to extend this API so either the content could be a string, or to support a predicate to convert a normal string to such an opaque term? In essence, is there a way to decouple the builtin Prolog parser from the individual QQ parsers so QQ content could come from somewhere else?