So how would one proceed to develop a more useful WL macro generator?
There are least several general approaches for this; selecting which one to use depends on the scope of what we want to accomplish.
Given the Wolfram Alpha example you posted we can take a conversational engine approach -- see for example this Mathematica Stack Exchange post : "Programming of a natural language interface". The package "FunctionalParsers.m" is an example of meta-programming -- it generates the Mathematica code for parsers from Extended Backus Naur Form (EBNF) grammar specifications.
