You could do it with a plugin tied to OnBeforeDocFormSave.
I don’t think you can use a standard modx tag ( [[ . . . ]]) because it will have been removed by then, but your example (%12%) should work.
It would look something like this (untested):
<?php
/* ReplaceLinks plugin */
/* Connect to OnBeforeDocFormSave */
$pattern = "/\(%(.*)%\)/";
$replacement = '<a href="http://www.externalsite.com/index.php?id=$1">Read more here</a>;
$content = $resource->getContent()
$newContent = preg_replace($pattern, $replacement, $content);
$resource->setContent($newContent);