← 返回 Skills 市场
tourmind

Hotel Social Automator

作者 Tourmind · GitHub ↗ · v1.0.1 · MIT-0
cross-platform ⚠ suspicious
62
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install hotel-social-automator
功能描述
Generate, review, and publish social media content through MCP with AgentAuth and workspace token authentication.
使用说明 (SKILL.md)

media.hotelmind

Calls MCP tools to generate, review, and publish social media content.


Prerequisites

Required Environment

Dependency Purpose Required
mcporter CLI Invoke MCP server tools Yes
curl Download images from URLs Yes
feishu-send at /usr/local/bin/feishu-send Send Feishu notifications No (only if Feishu notifications needed)
Write access to /root/.openclaw/workspace/ Store temporary images Yes

Note: If feishu-send is not available, the skill will still function but cannot send notifications via Feishu.

Required Configuration

This skill requires dual-token MCP authentication:

  • Authorization: Bearer hp_sk_*
  • X-Agent-User-Key: uk_*

Users must:

  1. Sign in to AgentAuth and copy a uk_*
  2. Sign in to HotelPost and create or copy a workspace hp_sk_*
  3. Put both tokens into the installed agent's MCP configuration

Full user onboarding guide:

  • references/user-onboarding.md

MCP server must be configured in your agent's MCP settings:

{
  "mcpServers": {
    "hotelpost": {
      "type": "streamable-http",
      "url": "https://mcp.example.com/api/mcp",
      "headers": {
        "Authorization": "Bearer \x3CAPI_KEY>",
        "X-Agent-User-Key": "\x3CAGENTAUTH_USER_KEY>"
      }
    }
  }
}

Required credentials:

  • API Key: Obtain from HotelPost Web admin panel → Settings → API Keys. Format: hp_sk_xxxxxxxx
  • AgentAuth User Key: Obtain from AgentAuth Dashboard after user login. Format: uk_xxxxxxxx
  • MCP now requires both tokens together: workspace hp_sk_* plus user uk_*

Credit System

Content generation consumes credits:

  • Each draft generation (up to 4 candidates) costs 40 credits
  • Each regeneration costs 10 credits

If credit quota is exceeded, the tool returns AIQuotaExceededError. Ensure sufficient credits before generating content. Credits can be managed in the HotelPost Web admin panel.

Multi-Tenant Isolation

This skill uses the HotelPost API key to resolve the target workspace and uses X-Agent-User-Key to verify the calling user. Both are required, and all operations remain scoped to the workspace bound to the hp_sk_* key.


Tool Invocation

Must use mcporter to call MCP server tools — do NOT use exec/curl!

Correct usage:

mcporter call hotelpost.\x3Ctool_name> \x3Cparameters>

Examples:

  • mcporter call hotelpost.list_scenarios — List marketing scenarios
  • mcporter call hotelpost.generate_content scenarioId=scenario_demo_001 — Generate content
  • mcporter call hotelpost.get_drafts draftId=draft_demo_001 — Get draft details

Forbidden: using exec/curl to access MCP API directly. Must use mcporter!

MCP Server Configuration

MCP server name is hotelpost. Server URL and both auth headers must be configured as described above.

For full user-side setup, token acquisition, and troubleshooting:

  • references/user-onboarding.md

When to Activate

  • User asks to generate social media posts or publish content
  • User asks to browse or select marketing scenarios
  • User asks to manage, view, or modify drafts
  • User asks to check publishing status or post list
  • User mentions HotelPost, hotel marketing, or social media publishing
  • User asks to schedule posts
  • Keywords: hotel, social media, post, publish, draft, marketing scenario, Instagram, X, Facebook, LinkedIn

Core Flow

list_scenarios → generate_content → get_drafts (polling) → [regenerate_draft] → publish_post / schedule_post

Step-by-Step

  1. Select Scenario — Call list_scenarios, display available scenarios, let user choose
  2. Generate Content — Call generate_content(scenarioId, language), submit async generation task
  3. Poll Drafts — Call get_drafts(scenarioId), wait for status to change from GENERATING to ACTIVE (usually 15-30 seconds)
  4. View/Modify — Call get_drafts(draftId) to view full content and images; use regenerate_draft(draftId, feedback) to modify
  5. Publish — Call list_connections first to confirm available accounts, then call publish_post or schedule_post
  6. Check Status — Call get_post_status(draftId) to confirm publishing result

Tool Reference

Tool Purpose Key Parameters
list_scenarios List marketing scenarios none
generate_content Generate draft based on scenario scenarioId, language?
get_drafts Query draft status/details scenarioId or draftId
regenerate_draft Regenerate with feedback, supports language/platform draftId, feedback?, language?, platform?
list_connections List bound social media accounts none
publish_post Publish immediately draftId, connectionIds[]
schedule_post Schedule for later draftId, connectionIds[], scheduledAt
list_posts List posts status?, page?, pageSize?
get_post_status Get publishing status postId or draftId

regenerate_draft Language Options

  • zh — Chinese (default)
  • en — English
  • th — Thai
  • ms — Malay
  • ja — Japanese

regenerate_draft Platform Options

  • x — X (Twitter)
  • facebook — Facebook
  • instagram — Instagram
  • linkedin — LinkedIn

list_posts Status Options

  • SCHEDULED — Scheduled posts
  • PUBLISHING — Currently publishing
  • PUBLISHED — Successfully published
  • PARTIAL_SUCCESS — Partially succeeded
  • FAILED — Failed

Important Rules

Information Display

  • Do NOT expose internal info to users: Cards should NOT contain draft IDs, internal numbers, etc. Only show content and images the user needs to see.

Performance Optimization

  • Image URL optimization: The first get_drafts(scenarioId) response includes image URLs in the draft list. Do NOT call get_drafts(draftId) again to fetch URLs — use the URLs directly from the first call to save time.
  • Parallel processing:
    • Download images in parallel with & (curl -o "1.png" url1 & curl -o "2.png" url2 & wait)
    • Send multiple images in parallel (with rate limiting, 3-5 at a time recommended)
    • Avoid serial operations; parallelize whenever possible

Send Order

  • Send content first, wait, then send images. Do not send all content at once followed by images — users cannot correlate them.

General Rules

  • Must select a scenario before generating. Do NOT skip list_scenarios.
  • Generation is async. After generate_content returns, you MUST poll get_drafts at 10-15 second intervals, up to 3 times.
  • Drafts include image assets. No need for users to provide images.
  • Before publishing, must confirm account by calling list_connections to get connectionId.
  • If user says "post to Instagram", find INSTAGRAM platform ID from connections.
  • language defaults to zh (Chinese). Pass en when user requests English.
  • If user is not satisfied with draft, use regenerate_draft with feedback.
  • regenerate_draft supports specifying language (zh/en/th/ms/ja) and platform (x/facebook/instagram/linkedin). If not specified, regenerates for all platforms.

Image Handling

  1. Ensure /root/.openclaw/workspace/ directory exists before downloading
  2. Download images with random filenames like hotelpost_xxx.png
    • Do NOT save to /tmp/ — some platforms don't support it
  3. Image URLs must include full signature parameters! Truncated URLs will be inaccessible.
  4. Clean up temporary files after sending.

Workspace Directory

Before downloading images, ensure the workspace directory exists:

mkdir -p /root/.openclaw/workspace/

Platform Publishing

After publishing, send notifications via the appropriate IM platform. See the platform-specific guide in references/:

  • feishu-guide.md — Feishu platform sending guide (card/image format, ID selection rules)

Note: Feishu notification is optional. The skill functions without it, but users won't receive push notifications.

Conversation Examples

See references/conversation-examples.md

Error Handling

See references/error-handling.md

安全使用建议
Do not install blindly. Before using this skill: 1) Confirm the mcporter server URL in the MCP config is the legitimate HotelPost endpoint you expect (the SKILL.md's example domains look generic). 2) Only place the required tokens (hp_sk_* and uk_*) in the agent MCP server headers if you trust HotelPost and the AgentAuth service; these are powerful credentials and should be scoped and rotated appropriately. 3) Inspect and vet any external helper (feishu-send) before installing—ask the publisher for its source and verify it doesn't leak other agent credentials. 4) Prefer running this skill in a sandboxed agent or non-root environment; the instruction to write to /root/.openclaw/workspace/ is privileged—ask the maintainer to allow a non-root workspace path. 5) Ask the skill author to fix contradictions (curl listed as required but the tool usage forbids exec/curl) and to update registry metadata to declare required env vars/config paths. 6) If you cannot verify the feishu-send origin or the true MCP endpoints, test in an isolated environment and avoid putting permanent, high-privilege secrets into the agent config.
功能分析
Type: OpenClaw Skill Name: hotel-social-automator Version: 1.0.1 The skill bundle is a legitimate social media automation tool for the HotelPost platform, designed to generate and publish content via MCP. It follows security best practices by mandating the use of the `mcporter` CLI for tool calls instead of raw shell commands and restricts file operations to a specific workspace directory (`/root/.openclaw/workspace/`). No evidence of data exfiltration, malicious execution, or harmful prompt injection was found across the documentation or instructions.
能力标签
requires-sensitive-credentialsposts-externally
能力评估
Purpose & Capability
The skill legitimately needs HotelPost workspace API key (hp_sk_*) and AgentAuth user key (uk_*), and mcporter to call MCP — this aligns with the description. However, the package registry metadata lists no required environment variables or config paths while SKILL.md demands both tokens be placed in the agent MCP config and requires write access to /root/.openclaw/workspace/. That mismatch (metadata vs runtime instructions) and the requirement to write to a root-owned path are disproportionate and unexpected for a user-level skill.
Instruction Scope
SKILL.md is the runtime behavior. It instructs only using mcporter for MCP calls (forbids exec/curl), yet elsewhere lists curl as a required binary for downloading images — a direct contradiction that grants unclear agent discretion. It also instructs writing images to /root/.openclaw/workspace/ and, for Feishu notifications, using a local feishu-send tool which 'automatically reads credentials from OpenClaw config' (implying the skill expects access to agent config/credentials). Those file and config accesses extend beyond a simple publish workflow and should be clarified.
Install Mechanism
This is instruction-only (no install spec, no code), so nothing is written or downloaded by default. That lowers install-time risk. However, it implicitly depends on external binaries (mcporter, optional feishu-send) that must be installed separately by the operator; the origin of feishu-send is not provided and should be vetted.
Credentials
SKILL.md requires two tokens (hp_sk_* workspace API key and uk_* user key) to be placed in the agent MCP server headers. Those are appropriate for HotelPost MCP access, but the registry metadata did not declare them, making required secrets opaque. Additionally, the Feishu sending path claims feishu-send 'will automatically read credentials from OpenClaw config', which implies access to other agent-stored secrets/config that are not declared or scoped — this is disproportionate and potentially exposes unrelated credentials.
Persistence & Privilege
The skill is not force-installed (always:false) and is user-invocable, which is normal. But it requires write access to /root/.openclaw/workspace/ (a global/root-owned path) and expects the agent config to contain MCP headers and possibly Feishu credentials. Requesting write access to a root workspace and implicit read access to OpenClaw config increases privilege and persistence risk if the instructions are followed on a shared or privileged host.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install hotel-social-automator
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /hotel-social-automator 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.1
- Updated skill name to "media.hotelmind" and clarified description to emphasize MCP-based social media workflow with AgentAuth and workspace token authentication. - Completely revised and expanded setup and usage documentation, including prerequisites, required configuration, credit system, and multi-tenant isolation. - Provides step-by-step invocation instructions and core flow for generating, reviewing, and publishing hotel social media content. - Strictly enforces use of the mcporter CLI for all tool invocations (no direct exec/curl to MCP APIs). - Adds detailed operational rules for draft/image handling, parallelism, content display restrictions, and multi-platform support. - Outlines specific scenarios for skill activation and includes a comprehensive reference for all supported tool actions and parameters.
元数据
Slug hotel-social-automator
版本 1.0.1
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Hotel Social Automator 是什么?

Generate, review, and publish social media content through MCP with AgentAuth and workspace token authentication. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 62 次。

如何安装 Hotel Social Automator?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install hotel-social-automator」即可一键安装,无需额外配置。

Hotel Social Automator 是免费的吗?

是的,Hotel Social Automator 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Hotel Social Automator 支持哪些平台?

Hotel Social Automator 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Hotel Social Automator?

由 Tourmind(@tourmind)开发并维护,当前版本 v1.0.1。

💬 留言讨论