WotoHub Automation is a real creator outreach skill with OpenClaw-era integration roots and current in-place compatibility for existing workflows.
It connects:
Best fit:
Core design:
This skill is intentionally conservative around sending and reply automation.
Release note:
wotohub-automation is the only canonical publish directorywotohub-automation-release is a mirror/reference copy, not the primary release sourceIf you need deeper integration details, read:
references/integration-contract.mdreferences/runtime-guardrails.mdInstall dependencies:
bash
pip install -r requirements.txt
Environment variables:
WOTOHUB_API_KEY, required for authenticated actions such as send, inbox access, reply handling, and campaign cyclesWOTOHUB_BASE_URL, optional explicit API base override, defaults to productionWOTOHUB_STATE_DIR, optional state/log output directoryCredential scope:
WOTOHUB_API_KEY grants access to authenticated WotoHub user-state operationsopenSearch, but authenticated endpoints cannotRuntime expectations:
ssl availableInput can come from:
Typical outputs:
Supports:
Search modes:
openSearchclawSearchSupports:
Default behavior is to stop after recommendation and wait for explicit creator selection before email generation.
Supports:
Minimum campaign brief usually needs:
productNamesenderName or signoffofferType, such as sample, paid, or affiliateDefault send path is batch-oriented.
Characteristics:
Supports:
Anything involving price, payment, contract terms, exclusivity, shipping promises, or timing commitments should stay human-reviewed by default.
Supports:
success, blocked, and failed exit semanticsSearch does not require login by default.
openSearchclawSearchThese user-side steps require WOTOHUB_API_KEY:
If you publish, install, or review this skill, treat the credential requirement as part of the primary operating contract, not an optional convenience.
Optional preflight check:
bash
python3 scripts/preflight.py --token YOUR_API_KEY
For auth details, read appendix-auth.md.
Single entrypoint:
bash
python3 wotohub_skill.py
Important execution note:
scripts/build_search_payload.py now also injects router executor defaults before resolving URL inputproduct_resolve.py may emit hostUrlAnalysisRequest; scripts/build_search_payload.py now attempts automatic host URL analysis execution + writeback before continuingscripts/build_search_payload.py returns a structured needsUserInput / error payload instead of crashing on analysis=NonehostAnalysis / productSummary to bypass bridge execution when they already have host-side understandingMinimal request example:
json
{
"requestId": "task-1",
"action": "task",
"type": "product_analysis",
"input": {
"input": "wireless earbuds with noise cancellation"
},
"auth": {
"token": "YOUR_API_KEY"
}
}
Common action/type pairs:
task/product_analysistask/searchtask/recommendtask/generate_emailtask/send_emailtask/monitor_repliescampaign/cycleRecommended injected fields:
input.hostAnalysisinput.productSummaryinput.hostDraftsinput.replyModelAnalysisRecommended executor discovery order for host URL recovery / host semantic understanding:
config.hostAnalysisExecutorbrief.hostAnalysisExecutor / brief.scheduler.hostAnalysisExecutor for cycle flowsWOTOHUB_HOST_ANALYSIS_EXECUTOR (or compatibility HOST_ANALYSIS_EXECUTOR)Recommended executor discovery order for reply understanding:
config.hostReplyAnalysisExecutor / config.hostReplyBridgeExecutorbrief.scheduler.hostReplyBridgeExecutor when reply assist is driven from campaign runtimeWOTOHUB_HOST_REPLY_ANALYSIS_EXECUTOR (or compatibility HOST_REPLY_ANALYSIS_EXECUTOR)Recommended executor discovery order for host draft generation:
config.hostDraftExecutor / config.hostBridgeExecutorbrief.scheduler.hostBridgeExecutor when scheduled generation is usedWOTOHUB_HOST_DRAFT_EXECUTOR (or compatibility HOST_DRAFT_EXECUTOR)Canonical field rule:
host_drafts_per_cyclereferences/alias-normalization-matrix.md for the current canonical vs alias mappingURL host write-back rule:
scripts/product_resolve.py returns hostUrlAnalysisRequest, treat that as the canonical host-side recovery trigger for weak or blocked URL pageshostAnalysis + productSummary, then rerun the same task/product_analysis, task/search, task/recommend, or task/generate_email requestinput.hostAnalysis + input.productSummary; metadata.* / config.* remain compatibility surfaces onlypython3 scripts/product_resolve.py --input <url> currently only emits hostUrlAnalysisRequest; it does not auto-run browser/web recovery or auto-apply write-backhostAnalysisExecutor, not in the bare product_resolve.py pathTrust boundary:
Full integration details: references/integration-contract.md
Third-party quickstart: references/third-party-integration-guide.md
One-command launchers:
run_skill_with_router.pyrun_cycle_via_skill.py (now auto-wires router defaults for cycle runs)
Executor templates:scripts/host_executor_router.py (single-entry router for analysis / reply / drafts)scripts/host_analysis_executor_example.pyscripts/host_reply_analysis_executor_example.pyscripts/host_draft_executor_example.pyscripts/host_model_bridge_executor_example.py (cycle-oriented draft bridge example)Read steps/01-product-analysis.md
Suggested path:
bash
python3 scripts/product_resolve.py --input "推广一款美国市场的电动牙刷,价格$50,强调美白和口腔护理"
Read steps/02-influencer-search.md
Suggested path, build payload first, then run search:
bash
python3 scripts/build_search_payload.py --input '推广一款美国市场的电动牙刷,价格$50,强调美白和口腔护理'
python3 scripts/claw_search.py --payload-file /tmp/woto_payload.json
Or use one-shot execution:
bash
python3 scripts/build_search_payload.py --input '...' --run-search
python3 scripts/build_search_payload.py --input '...' --run-search --token YOUR_API_KEY
Read steps/03-influencer-recommend.md
The default flow returns a shortlist first, then waits for explicit creator selection.
Read steps/04-email-generation.md
Recommended only after:
Read steps/05-send-email.md
Send protocol:
prepare_only, prepare candidate emails onlymanual_send, send after human confirmationscheduled_send, send automatically in scheduled flowsDefault behavior:
prepare_onlyscheduled_send, which is the default real-send path for scheduled flowsRead steps/06-inbox-management.md
Main path:
scheduled_cycle, stop at waiting_for_host_analysis if the search leg lacks valid hostAnalysis--host-analysis-bridge-executor or emitted hostAnalysisRequest over stuffing near-final search payloads into the briefneedsUserInput=truehostUrlAnalysisRequest to obtain hostAnalysis / productSummary before falling back to user-supplied product fieldsinput.hostAnalysis + input.productSummary, then rerun the same task so the existing routing and compiler chain can continue naturallySKILL.md and the bundled Markdown prompt/reference files in this release, with no unicode bidi or control-character findings.wotohub_skill.py, skill entry adapterrun_campaign.py, public campaign entryrun_campaign_cycle.py, single-cycle scheduled entryrun_cycle_via_skill.py, short safe wrapper for cron / scheduler runs that should avoid complex inline JSON or heavy Python CLI quotingUseful scheduled bridge flags on run_campaign_cycle.py:
--host-analysis-bridge-executor--host-analysis-bridge-request--host-analysis-bridge-payload--host-bridge-executor--host-bridge-request--host-bridge-payloadUseful docs:
steps/01-product-analysis.mdsteps/02-influencer-search.mdsteps/03-influencer-recommend.mdsteps/04-email-generation.mdsteps/05-send-email.mdsteps/06-inbox-management.mdreferences/campaign-brief-schema.mdreferences/model-analysis-schema.mdreferences/conversation-analysis-schema.mdreferences/outreach-email-schema.mdreferences/search-params.mdreferences/integration-contract.mdreferences/runtime-guardrails.mdWotoHub Automation is a creator outreach skill for real marketing operations: model-first understanding, script-first execution, stable core workflows, and explicit safety boundaries around send and reply behavior.