Files
Fu-Jie_openwebui-extensions/docs/plugins/actions/index.md
fujie 7fb5c243fa feat(export-to-word): add S3 object storage support
- Add boto3 direct download for S3/MinIO stored images
- Implement 6-level file fallback: DB → S3 → Local → URL → API → Attributes
- Sync S3 support to Chinese version (export_to_word_cn.py)
- Update version to 0.4.2
- Rewrite README.md and README_CN.md following standard format
- Update docs version numbers
- Add file storage access guidelines to copilot-instructions.md
2026-01-07 20:59:33 +08:00

4.6 KiB

Action Plugins

Action plugins add custom buttons below messages in the chat interface, allowing you to trigger specific functionalities with a single click.

What are Actions?

Actions are interactive plugins that:

  • :material-gesture-tap: Add buttons to the message action bar
  • :material-export: Generate and export content (mind maps, charts, files)
  • :material-api: Interact with external services and APIs
  • :material-animation-play: Create visualizations and interactive content

Available Action Plugins

  • :material-brain:{ .lg .middle } Smart Mind Map


    Intelligently analyzes text content and generates interactive mind maps with beautiful visualizations.

    Version: 0.8.0

    :octicons-arrow-right-24: Documentation

  • :material-chart-bar:{ .lg .middle } Smart Infographic


    Transform text into professional infographics using AntV visualization engine with various templates.

    Version: 1.4.0

    :octicons-arrow-right-24: Documentation

  • :material-card-text:{ .lg .middle } Knowledge Card


    Quickly generates beautiful learning memory cards, perfect for studying and memorization.

    Version: 0.2.2

    :octicons-arrow-right-24: Documentation

  • :material-file-excel:{ .lg .middle } Export to Excel


    Export chat conversations to Excel spreadsheet format for analysis and archiving.

    Version: 0.3.7

    :octicons-arrow-right-24: Documentation

  • :material-file-word-box:{ .lg .middle } Export to Word (Enhanced Formatting)


    Export the current conversation to a formatted Word doc with syntax highlighting, native math equations, Mermaid diagrams, citations, and enhanced table formatting.

    Version: 0.4.2

    :octicons-arrow-right-24: Documentation

  • :material-text-box-search:{ .lg .middle } Summary


    Generate concise summaries of long text content with key points extraction.

    Version: 0.1.0

    :octicons-arrow-right-24: Documentation

  • :material-image-text:{ .lg .middle } Infographic to Markdown


    AI-powered infographic generator that renders SVG and embeds it as Markdown Data URL image.

    Version: 1.0.0

    :octicons-arrow-right-24: Documentation


Quick Installation

  1. Download the desired plugin .py file
  2. Navigate to Admin PanelSettingsFunctions
  3. Upload the file and configure settings
  4. Use the action button in chat messages

Development Template

Want to create your own Action plugin? Use our template:

"""
title: My Custom Action
author: Your Name
version: 1.0.0
description: Description of your action plugin
"""

from pydantic import BaseModel, Field
from typing import Optional, Dict, Any

class Action:
    class Valves(BaseModel):
        # Add your configuration options here
        show_status: bool = Field(
            default=True,
            description="Show status updates during processing"
        )
    
    def __init__(self):
        self.valves = self.Valves()
    
    async def action(
        self,
        body: dict,
        __user__: Optional[Dict[str, Any]] = None,
        __event_emitter__: Optional[Any] = None,
        __request__: Optional[Any] = None,
    ) -> Optional[dict]:
        """
        Main action method triggered when user clicks the action button.
        
        Args:
            body: Message body containing conversation data
            __user__: Current user information
            __event_emitter__: For sending notifications and status updates
            __request__: FastAPI request object
        
        Returns:
            Modified body dict or None
        """
        # Send status update
        if __event_emitter__ and self.valves.show_status:
            await __event_emitter__({
                "type": "status",
                "data": {"description": "Processing...", "done": False}
            })
        
        # Your plugin logic here
        messages = body.get("messages", [])
        if messages:
            last_message = messages[-1].get("content", "")
            # Process the message...
        
        # Complete status
        if __event_emitter__ and self.valves.show_status:
            await __event_emitter__({
                "type": "status",
                "data": {"description": "Done!", "done": True}
            })
        
        return body

For more details, check our Plugin Development Guide.