Okay. Figured out my own solution yesterday, using a a keyword trigger ("+@") for a "run script" action containing the following:
$name = trim("{query}");
$tag = "@".$name;
$file = file_get_contents('path-to-tags.json file', true);
$data = json_decode($file,true);
unset($file);
$data[] = array('name' => $name, 'tag' => $tag);
$result=json_encode($data);
file_put_contents('path-to-tags.json file', $result);
unset($result);
When I invoke Alfred, "@" pulls up a list of tags I've already pushed to the json file. If the tag doesn't already exist, I can cursor back to the beginning of the line and simply insert "+" to add it to the list.
I use this mostly in nvALT. It's better than text expansion because I don't have to remember exactly what the keywords are, thanks to filtering/auto-completion. While nvALT offers its own tagging system, tag keywords in text allow for compatibility with other text editors (for example, when I'm working on the same text files via iOS). Currently works like a dream. Probably wouldn't have arrived at this point without your solution as a starting point— apologies for hijacking the thread, but thanks so much for the solution.