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

  1. Log/inspect result.outputs and result.texts (the error logs them) to see what shape came back
  2. Update the workflow JSON so its output node emits texts in the expected format
  3. Check network/proxy access if the description is delivered via URL download
  4. 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

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


AI-assisted analysis of ATH-MaaS/Pixelle-Video@848b054e4f (2026-08-30). Data as JSON: /api/errors/07764f01b0f6b605. Report an issue: GitHub.