Why don´t you also try getResources plugin? You can push from your custom resources a tv created by you and shown in a specifi template created bty you... well this is just an idea!!!! But i think you have your problem solved!!!!
http://rtfm.modx.com/display/ADDON/getResources
$text = str_replace('"', '', $text);
$text = str_replace('"', '"', $text);[[!getResourcesTag? &parents=`1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20` &elementClass=`modSnippet` &element=`getResources` &tagKey=`CLOUDkeywords` &tpl=`mytplseo` &tagRequsetParam=`tag` &toPlaceholder=`results`]]
[[DynamicDescription? &maxWordCount=`50`]]
If the descriptionTv TV is empty, the code uses the resource content, but I think your resource has no content at that that point since the DynaDescription tag is above the getResourcesTag tag. There’s nothing there but the getResourcesTag tag, which is removed.
I think your only option is to put something in the dectriptionTV TV.

[[If? &subject=`[[DynamicDescription? &maxWordCount=`80`]]` &operator=`EQ` &operand=`` &then=`[[*introtext]]` &else=`[[DynamicDescription? &maxWordCount=`80`]]`]]
The only alternative I can think of is to put the DynamicDescription code in a plugin connected to OnWebPagePrerender and have it inject the description into the header with $modx->regClientStartupHTMLBlock().
<?php
$resource =& $modx->resource;
$pid = $resource->get('id');
$mwc = $scriptProperties['maxWordCount'];
$maxWordCount = (!empty($mwc) && is_numeric($mwc)) ? $mwc : 25;
/**
* Function: getdynadescription()
* Returns: A string of text ready to be placed in a meta description tag
*/
if (!function_exists(getDynaDescription)) {
function getDynaDescription($text='',$excerpt_length=25)
{
global $modx;
$text = str_replace(']]>', ']]>', $text);
/* remove line breaks */
$text = str_replace("\n",' ',$text);
$text = str_replace("\r",' ',$text);
/* entify chars */
$text = htmlEntities($text);
/* remove special MODx tags - chunks, snippets, etc.
* If we don't do this they'll end up expanded in the description.
*/
$text = $modx->stripTags($text);
$words = preg_split ("/\s+/", $text,$excerpt_length+1);
if (count($words) > $excerpt_length) {
array_pop($words);
array_push($words, '...');
$text = implode(' ', $words);
}
return trim(stripslashes($text));
}
}
$output = '';
if ($scriptProperties['useResourceDescription']) {
/* If &useRessourceDescription is set, use that */
$output = $modx->resource->get('description');
} else if (!empty($descriptionTv)) {
/* Try the TV */
if (!empty ($scriptProperties['descriptionTv'])) {
$tv = $modx->getObject('modTemplateVar',array('name'=>$scriptProperties['descriptionTv']));
$output = $tv? $tv->getValue($pid) : '';
}
}
if (empty($output)) {
/* still empty, use the content field */
$content = $resource->getContent();
$output = getDynaDescription($content,$maxWordCount);
}
/* Create the full tag if &fullTag is set */
if ($fullTag == true) {
$output = '<meta name="description" content="' . $output . '">' . "\n";
}
$modx->regClientStartupHTMLBlock($output);