← 返回 Skills 市场
dreamarc77

elsewhere-companion

作者 DreamArc77 · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
89
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install elsewhere
功能描述
A cross-space digital travel companion. Creates a virtual character (旅伴) who travels to real destinations and sends postcard-like updates with AI-generated i...
使用说明 (SKILL.md)

Elsewhere Companion

A digital travel companion who journeys to real places and sends you postcard-like updates.

Prerequisites

  1. Python 3 must be installed
  2. GEMINI_API_KEY environment variable must be set (create data/.env with GEMINI_API_KEY=...)
  3. Python packages: google-genai, jinja2, Pillow, python-dotenv (install via pip install -r requirements.txt)

Global Constraints

  • Language: Always communicate with the user in their language (the language they are using in the current conversation). Do not switch to other languages unless explicitly requested.

Workflow Overview

There are three phases: OnboardingTrip PlanningTraveling (automated).


Phase 1: Onboarding (First-time setup)

If data/persona.json does not exist or has an empty basic_info.name, the companion hasn't been created yet. Collect the following information from the user:

  1. name - the companion's name
  2. relation - relationship (e.g., childhood friend, penpal, imaginary sibling)
  3. personality - a few words (e.g., curious, poetic, a little clumsy)
  4. toneOfVoice - e.g., casual and warm, literary, playful
  5. appearance - hair, clothing style, vibe description

After collecting all information, create the persona file:

python -c "
import json, os
os.makedirs('data', exist_ok=True)
persona = {
    'basic_info': {
        'name': '\x3Cname>',
        'relation': '\x3Crelation>',
        'personality': '\x3Cpersonality>',
        'tone_of_voice': '\x3CtoneOfVoice>',
    },
    'appearance': {
        'description': '\x3Cappearance>',
        'reference_image_path': './assets/personas/persona_ref.png',
    },
}
with open('data/persona.json', 'w', encoding='utf-8') as f:
    json.dump(persona, f, ensure_ascii=False, indent=2)
print('Persona saved to data/persona.json')
"

Then ask the user to upload a reference photo and save it to assets/personas/persona_ref.png.


Phase 2: Trip Planning

Ask the user: "Where should {name} go next?"

Accept a destination suggestion, then generate the itinerary:

python $CLAUDE_SKILL_DIR/scripts/generate_itinerary.py \x3Cdestination> [--origin \x3Ccity>] [--days \x3Cnum>]

Show the generated itinerary to the user and ask for confirmation. Once confirmed, proceed to Phase 3.


Phase 3: Traveling (Automated)

Starting the journey

Start the heartbeat loop:

/loop 15m !`python $CLAUDE_SKILL_DIR/scripts/run_cron.py`

The loop runs run_cron.py every 15 minutes. It automatically:

  1. Checks the current time against the itinerary timeline
  2. Updates node statuses (PENDING → ACTIVE → COMPLETED)
  3. Generates text + image content via Gemini (when triggered by the state machine)
  4. Renders the appropriate Markdown template
  5. Prints the result for delivery

The state machine rules (from references/state_machine.md):

  • State transitions (PENDING→ACTIVE): always triggers a message
  • 45-minute interval: messages are separated by at least 45 minutes
  • Attraction first visit: always triggers
  • Attraction subsequent visits: 40% probability for 2nd, 10% for 3rd
  • Max 1 message per cron tick

Checking status

python $CLAUDE_SKILL_DIR/scripts/run_cron.py --check-only

Ending the journey

When all nodes are COMPLETED, stop the loop:

/loop stop

Tell the user the trip is over and ask if they'd like to plan a new one.


Manual postcard generation

If you need to generate a postcard for a specific node:

python $CLAUDE_SKILL_DIR/scripts/generate_post.py \x3Cnode_id>

Then render it with the template:

python $CLAUDE_SKILL_DIR/scripts/render_output.py --context '\x3Cjson_context>'

File reference

  • Scripts: $CLAUDE_SKILL_DIR/scripts/
  • Templates: $CLAUDE_SKILL_DIR/templates/
  • Runtime data: data/ (itinerary.json, persona.json)
  • Generated images: assets/generated/
安全使用建议
Before installing, consider the following: - Metadata mismatch: The skill needs GEMINI_API_KEY but the registry metadata does not list any required env vars. Ensure you know where to store the API key — the code loads a top-level .env (PROJECT_ROOT/.env) but SKILL.md tells you to create data/.env; this mismatch can cause misconfiguration. - Missing files: SKILL.md mentions requirements.txt and references/state_machine.md but these files aren't in the package. You will need to create a requirements.txt (google-genai, jinja2, Pillow, python-dotenv) or otherwise install those packages yourself. - Privacy risk: The skill will upload any reference photo you provide and persona/itinerary data to the Gemini API and use Google Search grounding. If the reference image contains sensitive information or faces you don't want sent to a cloud API, do not upload it. - Environment leakage: run_cron.py launches subprocesses that inherit the current environment. Avoid running this skill in an environment that already contains unrelated secrets (AWS keys, tokens). Prefer running in an isolated environment or container with only the GEMINI_API_KEY set. - Verification: Because the source and homepage are unknown, consider inspecting the code locally and running it in a sandbox before giving it network access or your real Gemini API key. If you proceed, place only the Gemini key (and no other secrets) in the .env the code actually reads, and confirm which .env path is used. Given these inconsistencies and privacy-sensitive behavior, treat the skill cautiously. The issues look like sloppy packaging and documentation rather than overtly malicious code, but the lack of clear metadata and the fact that user images and environment variables are transmitted to external services justify caution.
功能分析
Type: OpenClaw Skill Name: elsewhere Version: 1.0.0 The skill bundle implements a 'digital travel companion' that uses the Gemini API to simulate a character traveling to real-world destinations. It uses standard OpenClaw patterns, such as the `/loop` command for periodic status checks and local JSON files for state management. While the `SKILL.md` contains instructions for the agent to execute Python commands to initialize data and the scripts use `subprocess` to coordinate tasks, these actions are transparent and strictly aligned with the stated functionality. No evidence of data exfiltration, credential theft, or malicious prompt injection was found.
能力评估
Purpose & Capability
The skill is a travel companion that legitimately needs an LLM/image API key and local files; the code indeed requires GEMINI_API_KEY and uses google-genai. However the published registry metadata lists no required env vars or config paths, which is inconsistent with the runtime instructions and scripts. The skill also asks the user to upload a persona reference image (used for image generation) — that is consistent with the stated purpose but should have been declared in metadata.
Instruction Scope
SKILL.md instructs the agent and user to run local Python scripts that read/write data/persona.json and data/itinerary.json and to upload a reference photo to assets/personas/persona_ref.png. The scripts send user-provided persona images and itinerary context to the Gemini API (and use a Google Search grounding tool). The docs instruct creating a .env in data/ (data/.env) but the code loads PROJECT_ROOT/.env — a concrete mismatch that can lead to misconfiguration. The SKILL.md also references files (requirements.txt and references/state_machine.md) that are not present in the manifest.
Install Mechanism
There is no automated install spec (instruction-only install), which reduces installation risk. But the instructions require pip installing packages via a requirements.txt that is not included. The code depends on google-genai, jinja2, Pillow, python-dotenv — installing those is expected for the declared functionality.
Credentials
The scripts require a GEMINI_API_KEY (sensitive credential) which is necessary for Gemini API usage; however the registry metadata did not declare this required env var. Child processes are launched with a copy of the current os.environ (env={**os.environ, 'SKILL_DIR': ...}), so any other environment variables present in the agent environment would also be available to the skill's subprocesses. User-provided images and persona/itinerary data are transmitted to Google GenAI as part of content/image generation — this is expected but privacy-sensitive and not clearly warned in SKILL.md.
Persistence & Privilege
The skill does not request always: true and does not modify other skills. It stores local state in data/ (persona.json, itinerary.json) and generates assets in assets/generated/ — that is consistent with its purpose and within normal bounds for a local skill.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install elsewhere
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /elsewhere 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Elsewhere Companion 1.0.0 — Initial Release - Introduces an AI-driven digital travel companion that sends postcard-style updates based on real-world itineraries, time, and weather. - Supports onboarding to customize your companion’s name, personality, appearance, and relationship. - Enables trip planning with automated itinerary generation and confirmation workflow. - Runs an automated travel simulation, generating and sending updates throughout the companion’s journey. - Allows checking trip status and generating individual postcards manually as needed. - Communicates in the user’s active language by default.
元数据
Slug elsewhere
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

elsewhere-companion 是什么?

A cross-space digital travel companion. Creates a virtual character (旅伴) who travels to real destinations and sends postcard-like updates with AI-generated i... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 89 次。

如何安装 elsewhere-companion?

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

elsewhere-companion 是免费的吗?

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

elsewhere-companion 支持哪些平台?

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

谁开发了 elsewhere-companion?

由 DreamArc77(@dreamarc77)开发并维护,当前版本 v1.0.0。

💬 留言讨论