#427 App: AI Document Summarizer (doc_summarizer)
Description
Edit## Overview
Summarize documents and web pages using LLM, with email delivery of results.
## App Metadata
- **App Name:** doc_summarizer
- **Publisher:** platform
- **Version:** 1.0.0
- **Priority:** High
- **Complexity:** Low
- **Phase:** 1 (Quick wins for beta demo)
## Actions
### 1. summarize_text
**Description:** Summarize plain text content using LLM
**Parameters:**
- text (str, required): Text content to summarize
- max_length (int, default=500): Maximum summary length in words
- style (str, default='concise'): Summary style (concise|detailed|bullet_points)
- language (str, default='english'): Output language
**Returns:**
{
"summary": "...",
"original_length": 5000,
"summary_length": 450,
"key_points": ["point1", "point2"],
"model_used": "qwen3-vl:235b-instruct-cloud"
}
### 2. summarize_url
**Description:** Fetch URL content and summarize
**Parameters:**
- url (str, required): URL to fetch and summarize
- max_length (int, default=500): Maximum summary length
- style (str, default='concise'): Summary style
- extract_mode (str, default='article'): Content extraction (article|full|main)
**Returns:** Same as summarize_text plus {"source_url": "...", "page_title": "..."}
### 3. summarize_and_email
**Description:** Summarize content and email the result
**Parameters:**
- text (str, optional): Text to summarize (either text or url required)
- url (str, optional): URL to summarize
- recipient_email (str, required): Email to send summary to
- subject_prefix (str, default='Summary'): Email subject prefix
- include_original (bool, default=False): Include original text in email
**Returns:** {"summary": "...", "email_sent": true, "recipient": "..."}
## Example Workflow
builder = WorkflowBuilder(name='summarize_article', version='1.0.0')
builder.task(
task_id='summarize',
function='apps.platform.doc_summarizer.summarize_url',
kwargs={
'url': 'https://example.com/long-article',
'style': 'bullet_points',
'max_length': 300
},
result_key='summary_result'
)
builder.task(
task_id='email_summary',
function='apps.platform.doc_summarizer.summarize_and_email',
kwargs={
'text': '{{summary_result.summary}}',
'recipient_email': 'user@example.com',
'subject_prefix': 'Article Summary'
}
)
## Implementation Notes
- Use existing LLM tool (engine/tools/llm.py) for summarization
- Use httpx/BeautifulSoup for URL content extraction
- Consider readability library for article extraction
- Rate limit LLM calls to avoid quota issues
- Cache summaries by content hash to avoid re-processing
## LLM Prompt Template
"""
Summarize the following text in {style} format.
Maximum length: {max_length} words.
Language: {language}
Text:
{text}
Provide:
1. A {style} summary
2. 3-5 key points as bullet points
"""
## Configuration Schema
{
"default_max_length": 500,
"default_style": "concise",
"llm_model": "qwen3-vl:235b-instruct-cloud",
"llm_temperature": 0.3
}
## Secrets Config
None (LLM config from environment: OLLAMA_API_KEY, OLLAMA_BASE_URL)
## Dependencies
- engine/tools/llm.py (existing LLM integration)
- httpx for URL fetching
- beautifulsoup4 for HTML parsing
- Email sending (reuse SMTP config)
Comments
Loading comments...
Context
Loading context...
Audit History
View AllLoading audit history...