| name | x-persona-management |
| description | Manage X persona lifecycle, feed configuration, content generation, and draft workflows via x-persona-mcp tools. Covers persona creation, feed setup with watched accounts/subjects/schedules, content generation via Agent SDK, and the approve→publish pipeline. |
X Persona & Feed Management Skill
Manage the full persona-to-publication pipeline: create personas, configure feeds, generate content, review drafts, and publish via GeeLark.
When to Use This Skill
- Creating or editing X personas (character definitions, voice, topics)
- Configuring feed monitoring (watched accounts, subjects, trending)
- Setting up content generation schedules
- Reviewing, approving, or rejecting generated drafts
- Publishing approved content to X via GeeLark
- Configuring agent settings (model, max turns)
Tool Discovery (Run First)
search_tools({ query: "xp_" })
search_tools({ query: "geelark_post" })
search_tools({ query: "vault_" })
Core Concepts
Persona
An ElizaOS-compatible character definition with name, bio, topics, style, and optional agent settings. Personas generate content independently -- they do NOT require a linked Twitter account.
Feed Config
One-to-one with a persona. Controls monitoring intervals, daily generation limits, and Telegram notifications. Has child entities: watched accounts, subjects, schedules.
Draft Lifecycle
generated → approved → published
↘ rejected
Persona Management
Create a Persona
xp_create_persona({
character: {
name: "CryptoAnalyst",
bio: "On-chain analyst tracking DeFi protocols and market structure. Data-driven, contrarian, concise.",
username: "cryptoanalyst",
topics: ["defi", "on-chain analytics", "market structure"],
adjectives: ["analytical", "concise", "contrarian", "data-driven"],
postExamples: [
"TVL doesn't lie. Three protocols just crossed $1B with zero token incentives. That's real demand.",
"Everyone's watching price. Nobody's watching the funding rate divergence. This happened twice before — both times preceded 30%+ moves."
],
style: {
all: ["Use data and metrics to support claims", "Be concise — tweets under 200 chars preferred"],
post: ["No hashtags", "No emojis", "Thread for complex analysis"],
reply: ["Be conversational", "Reference the original tweet's key point"],
quote_tweet: ["Add original insight, don't just agree"],
article: ["Use headers and data tables", "Cite sources"],
long_form: ["Build a narrative arc", "End with actionable takeaway"]
},
settings: {
model: "claude-sonnet-4-6",
maxTurns: 10,
mcpServers: {
"signal8": {
type: "stdio",
command: "node",
args: ["/path/to/sec-saas/packages/mcp-server/dist/stdio.js"],
env: { "SIGNAL8_API_KEY": "sk_live_xxx" }
}
}
}
},
account_ids: []
})
Update a Persona (Partial)
xp_update_persona({
persona_id: "uuid",
character: {
topics: ["defi", "on-chain analytics", "market structure", "MEV"],
settings: { model: "claude-opus-4-6", maxTurns: 15 }
}
})
Link Accounts to a Persona
xp_update_persona({
persona_id: "uuid",
account_ids: ["vault-account-uuid-1", "vault-account-uuid-2"]
})
List / Get / Delete
xp_list_personas({ include_stats: true })
xp_get_persona({ persona_id: "uuid" })
xp_delete_persona({ persona_id: "uuid" })
Feed Configuration
Create a Feed Config
xp_create_feed_config({
persona_id: "uuid",
monitor_interval_minutes: 30,
trending_interval_minutes: 60,
max_daily_generations: 20,
enabled: true,
telegram_chat_id: "-1001234567890",
telegram_enabled: false
})
Update Feed Config
xp_update_feed_config({
config_id: "feed-config-uuid",
max_daily_generations: 10,
telegram_enabled: true
})
Get / List / Delete
xp_get_feed_config({ persona_id: "uuid" })
xp_get_feed_config({ config_id: "feed-config-uuid" })
xp_list_feed_configs({ enabled_only: true })
xp_delete_feed_config({ config_id: "uuid" })
Watched Accounts
Monitor X accounts for tweets and replies that could trigger content generation.
xp_add_watched_account({
feed_config_id: "uuid",
x_username: "elonmusk",
monitor_tweets: true,
monitor_replies: false
})
xp_list_watched_accounts({ feed_config_id: "uuid" })
xp_update_watched_account({
account_id: "watched-account-uuid",
monitor_replies: true
})
xp_remove_watched_account({ account_id: "watched-account-uuid" })
Subjects
Define topic areas with keywords for trending topic filtering.
xp_add_feed_subject({
feed_config_id: "uuid",
subject: "DeFi",
keywords: ["defi", "tvl", "yield", "liquidity", "protocol"],
enabled: true
})
xp_list_feed_subjects({ feed_config_id: "uuid" })
xp_remove_feed_subject({ subject_id: "uuid" })
Schedules
Cron-based automated content generation triggers.
xp_add_feed_schedule({
feed_config_id: "uuid",
cron_expression: "0 9 * * *",
content_type: "tweet",
prompt_template: "Write a tweet about the latest developments in {subject}",
enabled: true
})
xp_update_feed_schedule({
schedule_id: "uuid",
cron_expression: "0 8,12,18 * * *",
enabled: true
})
xp_list_feed_schedules({ feed_config_id: "uuid" })
xp_remove_feed_schedule({ schedule_id: "uuid" })
Content Generation
Generate a Tweet
xp_generate_tweet({
persona_id: "uuid",
topic: "DeFi yield farming trends",
context: "Aave just launched v4 with unified liquidity",
recent_tweets: ["Previous tweet 1", "Previous tweet 2"]
})
Generate a Reply
xp_generate_reply({
persona_id: "uuid",
target_tweet_id: "1234567890",
target_tweet_text: "The original tweet text to reply to",
target_tweet_author: "vitalikbuterin",
tone: "add_value"
})
Create a Draft Directly (No AI)
xp_create_draft({
persona_id: "uuid",
type: "tweet",
content: "Manually written tweet content",
topic: "DeFi",
reasoning: "Timely response to breaking news"
})
Draft Management
Review Drafts
xp_list_drafts({ persona_id: "uuid", status: "generated" })
xp_get_draft({ draft_id: "uuid" })
Approve / Reject
xp_approve_draft({ draft_id: "uuid" })
xp_reject_draft({
draft_id: "uuid",
reason: "Too promotional, needs more data points"
})
Publish (After Approval)
Publishing requires a linked account with GeeLark:
const persona = xp_get_persona({ persona_id: "uuid" })
const account = vault_get_account({ account_id: "vault-account-uuid" })
const { job_id } = geelark_post_tweet({
account_id: account.id,
phone_id: account.phone_id,
text: draft.content,
auto_stop: true
})
xp_mark_published({
draft_id: "uuid",
tweet_id: "returned_tweet_id",
account_id: account.id
})
Cleanup
xp_expire_old_drafts({ max_age_hours: 72 })
Feed Items
Feed items track everything that flows through the feed: monitored tweets, trending items, generated content, schedule triggers.
xp_list_feed_items({
feed_config_id: "uuid",
item_type: "generated_content",
limit: 20,
offset: 0
})
xp_count_feed_items({
feed_config_id: "uuid",
item_type: "generated_content",
since: "2026-03-18T00:00:00Z"
})
xp_create_feed_item({
feed_config_id: "uuid",
item_type: "monitored_tweet",
source_tweet_id: "1234567890",
source_username: "elonmusk",
source_text: "Tweet text here"
})
Complete Setup Flow
Full pipeline from scratch:
const persona = xp_create_persona({
character: { name: "MyPersona", bio: "...", topics: ["ai", "tech"] }
})
const config = xp_create_feed_config({
persona_id: persona.id,
monitor_interval_minutes: 30,
max_daily_generations: 10
})
xp_add_watched_account({ feed_config_id: config.id, x_username: "openai" })
xp_add_watched_account({ feed_config_id: config.id, x_username: "anthropaborgs" })
xp_add_feed_subject({
feed_config_id: config.id,
subject: "AI",
keywords: ["llm", "gpt", "claude", "transformer", "agi"]
})
xp_add_feed_schedule({
feed_config_id: config.id,
cron_expression: "0 9,17 * * *",
content_type: "tweet",
prompt_template: "Write a tweet about recent AI developments"
})
xp_update_persona({ persona_id: persona.id, account_ids: ["vault-uuid"] })
Agent Settings Reference
Persona character.settings controls the content generation agent:
| Setting | Default | Description |
|---|
model | claude-sonnet-4-6 | Claude model for generation |
maxTurns | 10 | Max agent research/thinking turns |
Available models:
claude-sonnet-4-6 — Best balance of speed, quality, cost (recommended)
claude-opus-4-6 — Highest quality, slower, more expensive
claude-haiku-4-5-20251001 — Fastest, cheapest, lower quality
Dashboard UI
All operations above are also available via the dashboard:
- X Ops → Personas: Create/edit personas, agent settings
- Feeds: Timeline view, settings (config, accounts, subjects, schedules), approve/reject/publish