change_tag table?
Seems straightforward. The only thing is that we may not want to show some of those automatic tags by default, so we would have to introduce a new concept of a 'hidden' tag. There are several ways to accomplish that, a list in the configuration, adding a new column, storing it in ct_params, or just using a convention in the tag name for hidden ones.