ATH-MaaS/Pixelle-Video · error · Exception
No description generated from video analysis
Error message
No description generated from video analysis
What it means
After a "completed" workflow run, the analyzer parses result.outputs/result.texts (including following URL references to fetch the text) and raises if no description string could be extracted. It means the workflow technically succeeded but produced no usable text output.
Source
Thrown at pixelle_video/services/video_analysis.py:197
if not description and result.outputs and 'raw_data' in result.outputs:
raw_data = result.outputs['raw_data']
if raw_data and len(raw_data) > 0:
# Find text file entry
for item in raw_data:
if item.get('fileType') == 'txt' and 'fileUrl' in item:
# Download text content from URL
import aiohttp
async with aiohttp.ClientSession() as session:
async with session.get(item['fileUrl']) as resp:
if resp.status == 200:
description = await resp.text()
description = description.strip()
logger.debug(f"Downloaded description from URL: {description[:100]}...")
break
if not description:
logger.error(f"No text found in result. Status: {result.status}, Outputs: {result.outputs}, Texts: {result.texts}")
raise Exception("No description generated from video analysis")
logger.info(f"✅ Video analyzed: {description[:100]}...")
return description
except Exception as e:
logger.error(f"Video analysis error: {e}")
raise
View on GitHub (pinned to 848b054e4f)
Solutions
- Log/inspect result.outputs and result.texts (the error logs them) to see what shape came back
- Update the workflow JSON so its output node emits texts in the expected format
- Check network/proxy access if the description is delivered via URL download
- Test the same video directly against the workflow console to confirm it can produce a description
Example fix
// before
description = parse_outputs(result) # raises if empty
// after
if not result.texts:
raise RuntimeError(f'no texts in result: outputs={result.outputs}')
description = result.texts[0] Defensive patterns
Strategy: validation
Validate before calling
def result_has_text(result) -> bool:
texts = getattr(result, 'texts', None) or []
return any(t and t.strip() for t in texts) Type guard
def has_description(result) -> bool:
texts = getattr(result, 'texts', None)
return isinstance(texts, list) and len(texts) > 0 and bool(texts[0]) Try / catch
try:
description = await analyzer(video_path=vp)
except Exception as e:
if 'No description generated' in str(e):
logger.error(f'empty workflow output, result={result.outputs}')
raise WorkflowOutputError(result) from e
raise Prevention
- Pin and test the workflow JSON so output keys stay compatible with the parser
- Monitor model responses for empty outputs and alert on them
- Ensure outbound network access for URL-based description delivery
When it happens
Trigger: The analyse_video workflow completed but returned empty/absent texts — e.g. workflow output node renamed so result.texts is empty, the model returned an empty response, or the description was only reachable via a URL that failed to download.
Common situations: Workflow JSON updated so the output key no longer matches what this code parses; vision model returning blank output for low-information videos; network failure when downloading a URL-hosted description.
Related errors
- Video analysis failed: {error_msg}
- API workflow '{workflow}' not found. Available API workflows
- No default workflow configured for {self.service_name}. Plea
- Workflow '{workflow}' not found. Available workflows: {avail
- Video file not found: {video_path}
AI-assisted analysis of ATH-MaaS/Pixelle-Video@848b054e4f (2026-08-30).
Data as JSON: /api/errors/07764f01b0f6b605.
Report an issue: GitHub.