Voice Builder
charlie947/social-media-skills
Build a personalised voice profile inside a Codex or Claude project from a short interview plus 3 to 5 sample pieces of writing.
Imports an X (Twitter) account's post history in bulk through x.pcstyle.dev: hundreds to thousands of posts in one request, replies and reposts included, JSON or NDJSON, with per-account archiving…
$ npx skills add pc-style/x-md --skill import-x-history -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pc-style/x-md import-x-history --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/pc-style/x-md.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/import-x-history .claude/skills/import-x-history && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "import-x-history" agent skill from https://github.com/pc-style/x-md/tree/main/skills/import-x-history into .claude/skills/import-x-history/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "import-x-history", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/pc-style/x-md/tree/main/skills/import-x-historyType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add pc-style/x-md --skill import-x-history -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pc-style/x-md import-x-history --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pc-style/x-md.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/import-x-history .agents/skills/import-x-history && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "import-x-history" agent skill from https://github.com/pc-style/x-md/tree/main/skills/import-x-history into .agents/skills/import-x-history/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "import-x-history", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pc-style/x-md --skill import-x-history -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pc-style/x-md import-x-history --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pc-style/x-md.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/import-x-history .cursor/skills/import-x-history && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "import-x-history" agent skill from https://github.com/pc-style/x-md/tree/main/skills/import-x-history into .cursor/skills/import-x-history/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "import-x-history", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/pc-style/x-md.git --path skills/import-x-history--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add pc-style/x-md --skill import-x-history -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pc-style/x-md import-x-history --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pc-style/x-md.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/import-x-history .gemini/skills/import-x-history && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "import-x-history" agent skill from https://github.com/pc-style/x-md/tree/main/skills/import-x-history into .gemini/skills/import-x-history/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "import-x-history", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install pc-style/x-md import-x-historyInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add pc-style/x-md --skill import-x-history -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pc-style/x-md.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/import-x-history .github/skills/import-x-history && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "import-x-history" agent skill from https://github.com/pc-style/x-md/tree/main/skills/import-x-history into .github/skills/import-x-history/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "import-x-history", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pc-style/x-md --skill import-x-history -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pc-style/x-md import-x-history --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pc-style/x-md.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/import-x-history .opencode/skills/import-x-history && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "import-x-history" agent skill from https://github.com/pc-style/x-md/tree/main/skills/import-x-history into .opencode/skills/import-x-history/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "import-x-history", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
import-x-historyImports an X (Twitter) account's post history in bulk through x.pcstyle.dev: hundreds to thousands of posts in one request, replies and reposts included, JSON or NDJSON, with per-account archiving…
Import X History is an agent skill from pc-style/x-md. Imports an X (Twitter) account's post history in bulk through x.pcstyle.dev: hundreds to thousands of posts in one request, replies and reposts included, JSON or NDJSON, with per-account archiving for repeat requests. Use when onboarding a user from their X handle, building a writing-style or memory profile from someone's posts, or when you need more than one page of an account's timeline. No key needed; a key raises the import allowance. Read-only.
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Writing & Content, covering Brand voice and tone. It works with X (Twitter), Vercel and TypeScript. The repository describes itself as: Turn public X posts, profiles, and search into compact Markdown or JSON for agents. Hosted at x.pcstyle.dev. The licence is MIT.
Read from SKILL.md and the folder at commit 5e82627. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(curl *x.pcstyle.dev*)From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
x.pcstyle.devmdfromx.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
X_MD_API_KEYX_MD_REQUIRE_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Import X History loads about 1.6k tokens when it runs. Until then it costs about 118 tokens; SKILL.md has 700 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from pc-style/x-md at commit 5e82627, republished under its MIT licence (© pc-style). 700 words, ~1,602 tokens.
.claude/skills/import-x-history/SKILL.md (or your agent's skills folder).one request, one handle, as much history as you ask for. base URL https://x.pcstyle.dev (https://mdfromx.com is the same service). no key is needed: anonymous imports are metered per address, 10 per 15 minutes. the default keyed allowance is 60 per 15 minutes per key, but issued keys can have an override; read RateLimit-Policy; send it as:
Authorization: Bearer $X_MD_API_KEYif the key is in the environment as X_MD_API_KEY, use it and never print it. a self-hosted deployment in private mode (X_MD_REQUIRE_API_KEY) answers 401 unauthorized without one.
curl -sS -H "Authorization: Bearer $X_MD_API_KEY" \
"https://x.pcstyle.dev/api/v1/profiles/paulg/posts?since=2025-09-01&max_posts=2000"response: { "profile": {...}, "posts": [...], "meta": {...} }
posts — newest first, raw upstream fields untouched: id, text, created_at, author, replying_to, quote, reposted_by, media, poll, likes, replies, retweets, quotes, views, bookmarks, urlmeta.count, meta.oldest, meta.newest — what you gotmeta.truncated — true when capped or incomplete; continue with until=<meta.next_until>, preserving since and deduplicating IDs. If meta.warnings is present, retry the same range before advancingmeta.floor_reached — true when accessible history was exhausted, including reaching account creation. This does not prove all published posts are availablemeta.archive.served / .added — archive entries read versus entries fetched/written; added includes overlaps and updates, not just new unique IDs| param | default | use |
|---|---|---|
since | — | oldest post, 2025-01-01 / ISO datetime / unix seconds. omit for everything available |
until | now | newest post, inclusive |
max_posts | 500 | up to 5000, newest first |
with_replies | true | the account's replies (tone, opinions, short-form style) |
with_reposts | true | reposts come back as the original post with reposted_by set and the original's date |
only_replies | false | replies only |
format | json | ndjson emits the final sorted selection as {"post":…} lines, then one {"meta":…,"profile":…} line (or {"error":…}) |
concurrency | 16 | up to 32; honor Retry-After on busy or throttled responses |
refresh | false | re-walk the range for fresh engagement counts instead of serving the archive |
index | false | true returns only what is archived for the handle. free, no walk |
the service stores what it walks per handle. the next import of that handle only fetches the gap (newer than the archive, or older when since moves back), then serves everything from the archive. that is why:
since; only the extra months are walked?index=true first when you only need to know whether history exists and how far back it goes:curl -sS -H "Authorization: Bearer $X_MD_API_KEY" \
"https://x.pcstyle.dev/api/v1/profiles/paulg/posts?index=true"
# {"handle":"paulg","archive":{"count":1166,"oldest":"…","newest":"…","covered_since":"…","covered_until":"…","floor_reached":false,…},"persistent":true}archived posts keep the engagement counts from when they were stored. pass refresh=true when likes/views must be current.
curl -sN -H "Authorization: Bearer $X_MD_API_KEY" \
"https://x.pcstyle.dev/api/v1/profiles/paulg/posts?since=2026-01-01&format=ndjson"post lines are buffered until the final selection is known, newest first, matching JSON. Require the trailing meta line; an error line or missing metadata means failure. HTTP headers may already be 200, so inspect the stream error code and retry_after.
import-ip in RateLimit-Policy), 60 per 15 minutes per key by default with one (issued-key overrides are advertised in headers) (import-key); one unit per import however many posts it returns. index=true is freeRateLimit / RateLimit-Policy; pace against them instead of discovering 429code:401 unauthorized / invalid_key — missing required key or invalid/disabled key400 invalid_option — bad date, since ≥ until, or a count out of range404 not_found — unknown, suspended or protected account429 rate_limited — wait Retry-After seconds503 import_busy — fresh-walk or per-handle capacity is occupied; import allowance is refunded, ordinary request quota still applies503 upstream_rate_limited / upstream_unavailable — wait at least Retry-After, add jitter, then retry the identical request at most twicethe same base URL (and key, if you have one) works on the rest of the read API — a single post or thread (/api/v1/posts?url=…), a profile page with limit up to 100 (/api/v1/profiles/{handle}?with_replies=true&limit=100&format=json), search with since/until (/api/v1/search?q=…), followers/following. full reference: https://x.pcstyle.dev/openapi.json, guide: https://x.pcstyle.dev/docs/bulk-import.
read-only: this never posts, follows, or reads protected accounts, DMs or Lists.
© pc-style, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/import-x-history of pc-style/x-md.
Open the folder on GitHubat commit 5e82627
Import X History next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Import X History this skillpc-style/x-md | 159 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Voice Buildercharlie947/social-media-skills | 3.8k | — | ~3.3k | Automated safety check: Pass | MIT | |
| Content Writerchrispangg/deepagentsdk | 128 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Adk Style GuideBrainDAO/adk-ts | 119 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Write Like Meng On Xnirholas/three.ws | 230 | 1 repos | ~2k | Automated safety check: Pass | Apache-2.0 | |
| X Writerognjengt/founder-skills | 447 | — | ~3k | Automated safety check: Pass | MIT |
charlie947/social-media-skills
Build a personalised voice profile inside a Codex or Claude project from a short interview plus 3 to 5 sample pieces of writing.
chrispangg/deepagentsdk
Writing content across different platforms and styles. An agent skill from chrispangg/deepagentsdk.
BrainDAO/adk-ts
ADK-TS brand voice, terminology, and writing conventions. An agent skill from BrainDAO/adk-ts.
nirholas/three.ws
Write, rewrite, review, or continuously refine X/Twitter posts in Meng To's current voice using his deduplicated authored-post corpus, personal and product context, shared resources, and Content…
ognjengt/founder-skills
Creates viral X (Twitter) posts using proven formats, post templates, and creator voice matching.
garrytan/gbrain
Ghostwrite content in a specific person's voice from a VALIDATED voice profile — tweets, replies, short posts, launch copy, recruiting blurbs, emails.
pc-style/x-md
Reads public X (formerly Twitter) posts, threads, X Articles, profiles, followers, following, and search results as Markdown or JSON, with no X account and no API key.
Works with
Categories
Imports an X (Twitter) account's post history in bulk through x.pcstyle.dev: hundreds to thousands of posts in one request, replies and reposts included, JSON or NDJSON, with per-account archiving…. Import X History is an agent skill from pc-style/x-md.dev: hundreds to thousands of posts in one request, replies and reposts included, JSON or NDJSON, with per-account archiving for repeat requests.
Import X History fits situations like: onboarding a user from their X handle; building a writing-style; memory profile from someones posts; you need more than one page of an accounts timeline.
Run `npx skills add pc-style/x-md --skill import-x-history -a claude-code`. Or copy the skill folder (skills/import-x-history in pc-style/x-md) into .claude/skills/import-x-history in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pc-style/x-md --skill import-x-history -a codex`. Or copy the skill folder (skills/import-x-history in pc-style/x-md) into .agents/skills/import-x-history in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pc-style/x-md --skill import-x-history -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/import-x-history, .gemini/skills/import-x-history, .github/skills/import-x-history and .opencode/skills/import-x-history in your project.
Going by SKILL.md and its folder, Import X History needs the command-line tools its instructions call (curl) and credentials named X_MD_API_KEY and X_MD_REQUIRE_API_KEY. Our summary lists: A credential in X_MD_API_KEY; A credential in X_MD_REQUIRE_API_KEY. Its frontmatter pre-approves these tools: Bash(curl *x.pcstyle.dev*).
SKILL.md names 2 domains. In commands or code: x.pcstyle.dev and mdfromx.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Import X History is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Import X History: Voice Builder (charlie947/social-media-skills, 3.8k stars), Content Writer (chrispangg/deepagentsdk, 128 stars), Adk Style Guide (BrainDAO/adk-ts, 119 stars) and Write Like Meng On X (nirholas/three.ws, 230 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pc-style (a GitHub user) maintains it in pc-style/x-md, which has 159 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 9, 2026.
Source: pc-style/x-md on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.