Run enterprise bulk cold email marketing campaigns with full lifecycle email tracking covering sent, delivered, opened, read and replied statuses. Accessverified domain business emails to help exporters, sourcing agents and sales teams connect with purchasing decision-makers worldwide. Launch streamlined massemail campaigns and analyze open rate and click-through rate performance metrics for B2B lead generation. Powerful bulk mailing tools streamline overseas leadgeneration, global business expansion and export client acquisition workflows. Built exclusively for B2B cold outreach, cross-border e-commerce email marketingand global sales prospecting.
Run bulk corporate cold‑email campaigns and monitor delivery status. Gain verified domain‑based emails and analyze open‑and‑click metrics, helping exporters reach decision‑makers f…
upkuajing openapi skills
@upkuajing
What This Skill Does
Bulk cold email marketing tool that sends mass emails to verified domain-based business contacts and tracks full lifecycle metrics including sent, delivered, opened, read, and replied statuses. Provides open rate and click-through rate analytics for B2B lead generation campaigns.
Replaces manual email outreach and separate email tracking tools by combining verified contact sourcing, mass sending, and delivery analytics into one platform.
When to Use It
- Send bulk cold emails to verified business contacts for export client acquisition
- Track email delivery status and open/click rates for ongoing outreach campaigns
- Filter email tasks by status to review completed or in-progress mailings
- View detailed delivery records for a specific email campaign task
- Set up time-range filters to analyze email performance over specific periods
Install
$ openclaw skills install @upkuajing/upkuajing-email-toolUpKuaJing Email Tool
Send emails and track email task status using the UpKuaJing Open Platform API.
Overview
This skill provides access to UpKuaJing's email service through:
- Email Send (
mail_send.py): Send emails to recipients - Email Task List (
mail_task_list.py): View email task list with time range filter - Email Task Record List (
mail_task_record_list.py): View detailed records for a specific task
Running Scripts
Environment Setup
- Check Python:
python --version - Install dependencies:
pip install -r requirements.txt
Script directory: scripts/*.py
Run example: python scripts/*.py
Important: Always use direct script invocation like python scripts/mail_task_list.py. Do NOT use shell compound commands like cd scripts && python mail_task_list.py.
Three Main APIs
Email Send (mail_send.py)
Send emails to recipients.
Parameters: See Email Send API
Examples:
# Send a simple email
python scripts/mail_send.py \
--subject "Test Email" \
--content "This is the email content" \
--emails '["recipient@example.com"]'
# Send email with reply address
python scripts/mail_send.py \
--subject "Test Email" \
--content "This is the email content" \
--reply_email "support@example.com" \
--emails '["recipient@example.com"]'
# Send to multiple recipients
python scripts/mail_send.py \
--subject "Test Email" \
--content "This is the email content" \
--emails '["user1@example.com","user2@example.com"]'
Email Task List (mail_task_list.py)
View email task list with optional time range filter.
Parameters: See Email Task List API
Examples:
# Get task list (first page, 10 items)
python scripts/mail_task_list.py --page_no 1 --page_size 10
# Filter by time range
python scripts/mail_task_list.py \
--start_time 1775812273 \
--end_time 1775900000 \
--page_no 1 \
--page_size 10
# Filter by status (0-待发送 1-发送中 2-发送完成)
python scripts/mail_task_list.py --status 2 --page_no 1 --page_size 10
Email Task Record List (mail_task_record_list.py)
View detailed records for a specific email task.
Parameters: See Email Task Record List API
Examples:
# Get records for task ID 1496
python scripts/mail_task_record_list.py --task_id 1496 --page_no 1 --page_size 10
# Filter by time range and status
python scripts/mail_task_record_list.py \
--task_id 1496 \
--start_time 1775812273 \
--end_time 1775900000 \
--status 2 \
--page_no 1 \
--page_size 10
API Key and UpKuaJing Account
- API Key: Stored in
~/.upkuajing/.envfile asUPKUAJING_API_KEY - First check: If not set, prompt user to provide or apply at UpKuaJing Open Platform
API Key Not Set
First check if the ~/.upkuajing/.env file has UPKUAJING_API_KEY;
If UPKUAJING_API_KEY is not set, prompt the user to choose:
- User has one: User provides it (manually add to ~/.upkuajing/.env file)
- User doesn't have one: Guide user to apply at UpKuaJing Open Platform Wait for user selection;
Account Top-up
When API response indicates insufficient balance, explain and guide user to top up:
- Create top-up order (
auth.py --new_rec_order) - Based on order response, send payment page URL to user, guide user to open URL and pay, user confirms after successful payment;
Get Account Information
Use this script to get account information for UPKUAJING_API_KEY: auth.py --account_info
Report Skill Call Errors
When an API call fails or returns abnormal data (server error, timeout, malformed response, etc.), explain the anomaly to the user in natural language and ask whether to report it to the platform for troubleshooting. Only run the report after user confirmation:
python scripts/error_report.py --params '{"requestPath":"/agent/mail/send","requestId":"f47ac10b58cc4372a5670e02b2c3d479","context":"Email send failed with a server error"}'
- Do not report normal business conditions (insufficient balance, invalid API key, parameter errors) — handle them via their own flows
- Error reporting does not incur query fees
- Parameters: See Error Report API
Fees
Email sending API calls incur fees, different interfaces have different billing methods.
Latest pricing: Users can visit Detailed Price Description
Or use: python scripts/auth.py --price_info (returns complete pricing for all interfaces)
Email Send Billing Rules
Email sending is charged — each send request incurs a fee based on the number of recipients.
Task List & Record List Billing Rules
Free of charge — No fees for task list and task record list queries.
Fee Confirmation Principle
Any operation that incurs fees must first inform and wait for explicit user confirmation. Do not execute in the same message as the notification.
Workflow
Decision Guide
| User Intent | Use API |
|---|---|
| "Send an email" | Email Send |
| "View my email tasks" | Email Task List |
| "Check email delivery status" | Email Task Record List |
| "Find tasks in a time range" | Email Task List (with start_time/end_time) |
Email Send Flow
- Prepare email content: Subject, content, recipients
- Execute send: Use mail_send.py with appropriate parameters
- Get response: API returns task result synchronously
Task Check Flow
- View task list: Use mail_task_list.py with optional time filter
- Get task ID: From the task list response
- View task records: Use mail_task_record_list.py with task_id
Error Handling
- API key invalid/non-existent: Check
UPKUAJING_API_KEYin~/.upkuajing/.envfile - Insufficient balance: Guide user to top up
- Invalid parameters: Must first check the corresponding API documentation in references/ directory, get correct parameter names and formats from documentation, do not guess
- Skill call errors / abnormal responses: Explain to the user and, with user confirmation, report to the platform via
python scripts/error_report.py(see Report Skill Call Errors)
API Documentation Reference
- Email Send: Check references/email-send-api.md
- Email Task List: Check references/email-task-list-api.md
- Email Task Record List: Check references/email-task-record-list-api.md
- Error Report: Check references/skill-error-report-api.md
Notes
- File paths use forward slashes on all platforms
- Do not guess parameter names, get accurate parameter names and formats from documentation
- Prohibit outputting technical parameter format: Do not display code-style parameters in responses, convert to natural language
- Do not estimate or guess fees — use
python scripts/auth.py --price_infoto get accurate pricing information - Email sending is synchronous submission: The API returns response immediately after submission, but the email server processes asynchronously; the
statusfield in response indicates sending status (0-pending 1-sending 2-completed)
Related Skills
Other UpKuaJing skills you might find useful:
- linkedin-person-search — Search people from the LinkedIn source
- global-company-person-search — Search people from the global company database
- linkedin-company-search — Search companies from the LinkedIn source
- global-company-search — Search companies from the global company database
- global-company-shareholder — Query shareholder list from the global company database
- global-company-employee — Query employee list from the global company database
- global-company-person-colleague — Query colleague list from the global company database
- global-company-person-alumni — Query alumni list from the global company database
- global-company-person-experience — Query work experience list from the global company database
- global-company-person-education — Query education history list from the global company database
- global-company-person-school-detail — Query school detail from the global company database
- upkuajing-global-company-people-search — Global company and people search
- upkuajing-customs-trade-company-search — Search customs trade companies
- upkuajing-map-merchants-search — Map-based merchant search
- upkuajing-contact-info-validity-check — Check contact info validity
- phone-validity-check — Check phone number validity
- email-validity-check — Check email address validity
- domain-validity-check — Check domain validity and security
Top skills in this category
Humanizer
@biostartechnologyRemove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
Slack
@steipeteUse when you need to control Slack from Clawdbot via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
PollyReach
@pollyreachPollyReach gives every AI agent a phone number and the ability to get things done over the phone — finding contacts, making calls, and completing tasks. Just...
imap-smtp-email
@gzlicanyiRead and send email via IMAP/SMTP. Check for new/unread messages, fetch content, search mailboxes, mark as read/unread, and send emails with attachments. Supports multiple accounts. Works with any IMAP/SMTP server including Gmail, Outlook, 163.com, vip.163.com, 126.com, vip.126.com, 188.com, and vip
Answer Overflow
@rhyssullivanSearch indexed Discord community discussions via Answer Overflow. Find solutions to coding problems, library issues, and community Q&A that only exist in Discord conversations.