Plugins System and Configuration
Built-in Plugins List
| Plugin | Function |
|---|---|
| add_category | AI analyzes email and automatically adds category labels |
| move_to_folder | AI analyzes content to determine which folder to move the email to |
| create_appointment | AI analyzes email content to create a calendar appointment |
| event_table | AI analyzes email content and appends event information to an Excel spreadsheet (includes Outlook open link) |
| write_file | Save email data as a JSON file |
| summary_file | AI generates an email summary and appends it to a CSV table |
Path rule: If
output_dir/output_fileuse relative paths, they will be relative to the current configuration file directory (the directory containingconfig/config.yaml). 💡 The actual configuration file is located atC:\Users\{username}\AppData\Roaming\mailslide\config\plugins\
Individual Plugin Configuration
write_file Plugin Configuration
It is recommended to edit this by selecting write_file in Configuration → Plugin Settings; you can also manually edit config/plugins/write_file.yaml:
enabled: true
output_dir: "output" # Output directory
filename_format: "{subject}_{timestamp}" # Filename format
include_fields: # Fields to include
- subject
- sender
- received
- body
- tables
include_fields: Fields are fixed and cannot be modified
event_table Plugin Configuration
It is recommended to edit this by selecting event_table in Configuration → Plugin Settings; you can also manually edit config/plugins/event_table.yaml:
enabled: true
output_file: "output/events.xlsx" # Single Excel file, default job-level batch flush
open_command_match_sender: false # Whether outlook_open_command should additionally match the sender
The Excel columns are fixed by the program, in the following order:
email_subject, email_sender, email_received, email_entry_id,
outlook_open_command, event_subject, start, end, location, body, logged_at.
email_entry_id: Outlook Email EntryIDoutlook_open_command: An open-email command that can be copied and executed in PowerShell (opens the email via Outlook COM by EntryID or by searching subject/time)
outlook_open_command will search for the email using "Subject + Receive Time (default ±1 day)"; if you want to reduce false positives, you can set open_command_match_sender to true to add sender matching.
Note: If the email source cannot obtain an
EntryID, theoutlook_open_commandfield will be left blank. If you want to revert to writing item-by-item in real-time, you can setbatch_flush_enabled: falsein the corresponding job. When setting up scheduled execution, note that the Excel file cannot be opened, otherwise the job will fail to write the file and report an error.
summary_file Plugin Configuration
enabled: true
output_file: "output/email_summaries.csv" # Single CSV
The CSV columns are fixed by the program, in the following order:
email_subject, email_sender, email_received, summary, priority,
logged_at.
Example of the LLM response format for summary_file (the create field is not needed):
{
"action": "summary",
"summary": "This email is primarily to confirm the contract version and signing schedule. The other party wishes for a reply by this Friday.",
"priority": "high"
}
The priority field can be omitted; if provided, it is recommended to use high, medium, low.
Multiple Prompts per Plugin (Prompt Profiles)
The same plugin can define multiple system prompts (called "profiles"), allowing different Jobs to use different prompts to do different things.
LLM plugins with built-in support for Prompt Profiles:
- add_category
- move_to_folder
- create_appointment
- event_table
- summary_file
1. Plugin Configuration (config/plugins/<name>.yaml)
# Define multiple prompt profiles
default_prompt_profile: general_v1
prompt_profiles:
general_v1:
version: 1
description: "General classification"
system_prompt: |
You are an email classification assistant...
invoice_v1:
version: 1
description: "Invoice handling"
system_prompt: |
You are an invoice classifier. Prioritize payment intent...
2. Job Configuration (config/config.yaml)
jobs:
- name: "Process General Mail"
plugins:
- add_category
- name: "Process Invoices"
plugins:
- add_category
plugin_prompt_profiles:
add_category: invoice_v1 # Specify using the invoice_v1 profile
Resolution Order
1. job.plugin_prompt_profiles[plugin] → The system_prompt of the corresponding profile
2. plugin.default_prompt_profile → If the job doesn't specify, use the default profile
3. plugin.system_prompt → Fallback when there are no profiles at all