Loading...
Loading...
Post and schedule content to X/Twitter. Use when batch processing social posts, promoting podcasts/blogs, or scheduling content. Handles guest tagging, template matching, and getlate.dev API integration.
npx skill4agent add cdeistopened/opened-vault x-postingGETLATE_API_KEY.env# Find recent podcasts
ls "Content/Master Content Database/Podcasts/" | head -20
# Find recent blog posts
ls "Content/Master Content Database/Blog Posts/" | head -20url:"[Guest Name] [Company] Twitter X account"Studio/Social_Scheduling.mdYou are writing X/Twitter posts for OpenEd. Your job is DEEP FRAMEWORK FITTING - matching this concept to proven templates that amplify it.
## Source Content
[Paste the full content or key excerpts]
## Guest Info
- Name: [Guest Name]
- X Handle: @[handle]
- Company: [Company] (@[company_handle] if applicable)
## URL (use exactly)
[URL from frontmatter]
## Your Task
### Phase 1: Concept Extraction
Extract from this content:
1. Core insight (one sentence)
2. Emotional hook (what feeling does this evoke?)
3. Most quotable moment
4. Surprising fact or statistic
5. Contrarian angle (what does this challenge?)
### Phase 2: Template Review
Read the FULL post-structures.md file. Do not skim.
For this concept, evaluate AT LEAST these template categories:
- Commentary (quote + translation + explanation)
- Contrast Evaluation (X overrated, Y underrated)
- Paradox Hook (present contradiction)
- Comparison with percentages (numbers + question)
- Personal Story (setup → conflict → resolution)
- One Sentence Comparison
- Behavior Dichotomy
- Binary Framing Hook
- Counterintuitive Statement Hook
For each potentially fitting template:
1. Name the template
2. Explain WHY it might work for this concept
3. Rate fit: Strong / Moderate / Weak
4. Draft a quick test version
### Phase 3: Select and Write
Choose 2-3 BEST fitting templates. Write full post variations using the EXACT template structure.
### Phase 4: Voice Validation
For each draft, check against AI-tells:
HARD BLOCKS (reject and rewrite if present):
- Correlative constructions ("X isn't just Y - it's Z")
- Split correlatives ("It wasn't about X. It was about Y.")
- Staccato fragments ("No X. No Y. Just Z.")
- Setup phrases ("Here's the thing:", "The best part?")
- Triple adjective patterns
- Thesaurus words (utilize, leverage, comprehensive, crucial)
VOICE CHECK:
- Does this sound like a person talking or performing "good writing"?
- Is this something you'd actually text to a friend?
- Does it follow the template structure or drift into generic copy?
### Output Format
For each post option:
1. Template used: [Name]
2. Why this template: [1-2 sentences]
3. Post:
> [The actual post text]
>
> [link]
4. Voice validation: [Pass/Fail with notes]Studio/Social_Scheduling.md# X Post Scheduling Queue
**Created:** [date]
**Status:** Awaiting approval
---
### 1. [Content Title] - @[guest_handle]
**URL:** [actual URL from source]
**Option A - [Template Name]:**
> [Post content]
>
> [link]
Template reasoning: [Why this template fits]
- [ ] Approve Option A
**Option B - [Template Name]:**
> [Post content]
>
> [link]
Template reasoning: [Why this template fits]
- [ ] Approve Option B[X]{NOTES: ...}python3 agents/post_tweet.py '[tweet content]'import os
import requests
from pathlib import Path
from dotenv import load_dotenv
load_dotenv(Path(__file__).parent.parent / ".env")
api_key = os.getenv("GETLATE_API_KEY")
base_url = "https://getlate.dev/api/v1"
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
# Get account ID
response = requests.get(f"{base_url}/accounts", headers=headers)
accounts = response.json().get("accounts", [])
twitter_account = next((a for a in accounts if a.get("platform") == "twitter"), None)
account_id = twitter_account.get("_id")
# Schedule post (9am ET = 14:00 UTC in winter)
post_data = {
"platforms": [{"platform": "twitter", "accountId": account_id}],
"content": "Your tweet content here",
"scheduledFor": "2026-01-15T14:00:00Z" # ISO 8601 format
}
response = requests.post(f"{base_url}/posts", headers=headers, json=post_data)| Endpoint | Method | Purpose |
|---|---|---|
| GET | List connected accounts |
| POST | Create/schedule post |
{
"platforms": [{"platform": "twitter", "accountId": "..."}],
"content": "Tweet text",
"publishNow": true, // OR
"scheduledFor": "ISO-8601" // for scheduling
}| File | Purpose | Tokens |
|---|---|---|
| 100+ template structures | ~4000 |
| Voice constraints | ~200 |
| Voice examples | ~1500 |
| Source content file | The actual content to promote | varies |
text-contentai-tellsghostwriteragents/post_tweet.pyagents/test_tweet.pyStudio/Social_Scheduling.md