From rephrasy
Humanize AI-generated text via the Rephrasy Humanizer API (cloud service, costs credits per call). Use when (1) the user asks to humanize text or make it pass AI detectors, (2) text flagged by the ai-detect skill needs rewriting. Defaults to model v3 with style professional. Output goes next to input as foo.txt -> foo_rephrasy.txt. Supports verify (re-detect) and iterate-until-threshold. Requires the REPHRASY_API_KEY environment variable.
How this skill is triggered — by the user, by Claude, or both
Slash command
/rephrasy:humanize <file-or-text> [--style professional|creative|journalistic] [--no-style] [--model MODEL] [--language NAME] [--verify] [--iterate] [--threshold N] [-o OUT] [--in-place]<file-or-text> [--style professional|creative|journalistic] [--no-style] [--model MODEL] [--language NAME] [--verify] [--iterate] [--threshold N] [-o OUT] [--in-place]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Drives the Rephrasy Humanizer API (`https://v2-humanizer.rephrasy.ai/api/`) through a stdlib-only Python helper bundled with this plugin. **Every call costs credits** — don't re-humanize unchanged text, and tell the user the cost after each run. (The marketing page quotes "0.1 credits flat + 0.1 per 100 words", but measured charges were far lower: 0.000726–0.002178 credits for a 41-word call. T...
Drives the Rephrasy Humanizer API (https://v2-humanizer.rephrasy.ai/api/) through a stdlib-only Python helper bundled with this plugin. Every call costs credits — don't re-humanize unchanged text, and tell the user the cost after each run. (The marketing page quotes "0.1 credits flat + 0.1 per 100 words", but measured charges were far lower: 0.000726–0.002178 credits for a 41-word call. Trust the per-call cost= the script prints, not the formula.)
v3 (Rephrasy's best model for GPTZero).professional (this plugin's standing default). The script applies it automatically; only override when the user explicitly asks for creative, journalistic, or no style (--no-style).HUMANIZE="${CLAUDE_PLUGIN_ROOT}/scripts/rephrasy_humanize.py"
DETECT="${CLAUDE_PLUGIN_ROOT}/scripts/rephrasy_detect.py"
python3 "$HUMANIZE" draft.txt # -> draft_rephrasy.txt (v3, professional)
python3 "$HUMANIZE" draft.txt -o final.txt # explicit output
python3 "$HUMANIZE" draft.txt --in-place # overwrite input (confirm with user first)
python3 "$HUMANIZE" --text "literal text" # string -> stdout (-o FILE also works)
cat draft.txt | python3 "$HUMANIZE" - # stdin -> stdout
python3 "$HUMANIZE" draft.txt --style creative # explicit style override
python3 "$HUMANIZE" draft.txt --model "Undetectable Model v2" # style auto-dropped for non-v3
The script requires the REPHRASY_API_KEY environment variable (get a key at https://www.rephrasy.ai). Cost/flesch metadata prints to stderr; humanized text or Wrote: <path> to stdout. Exit codes: 0 = success, 2 = any error. -o works with every input form (file, --text, stdin); --in-place writes atomically and conflicts with -o/--stdout.
Note: --verify, --iterate, and --threshold are skill-level directives (they shape the workflow below), not flags the humanize script accepts — don't pass them to it. --threshold belongs to the detect script.
--text (or a temp file via mktemp for long text).--in-place without the user asking for it — the default foo_rephrasy.txt output is non-destructive.python3 "$DETECT" draft_rephrasy.txt
Re-humanize until the detector score is at or under threshold (default 40), with a hard cap of 3 humanize passes total. Drive the loop yourself, one pass at a time — do not script it blind:
python3 "$HUMANIZE" <latest> -o work/passN.txt (numbered files — never --in-place — so every version survives).python3 "$DETECT" work/passN.txt --json | jq '.scores.overall'. Record the score.passN.txt into pass N+1.Both scripts exit 2 on errors and the detect script exits 1 only for threshold-exceeded, so error-vs-score is always distinguishable.
Detector scale: 0 = human, 100 = AI. Controlled single-pass comparison on the same ~40-word formal AI sample:
| Variant | Rephrasy detector score | Cost (credits) |
|---|---|---|
v3 + professional (default) | 99.87 | 0.002178 |
| v3 no style | 92.60 | 0.000726 |
Takeaways:
professional style costs ~3x the no-style call. It stays the default (GPTZero — not this detector — is the usual real target, and formal output is usually what users want), but mention the trade-off if the user is iterating on cost.ai-detect skill for the full calibration table.costs is a plain number (credits), not the {"total": ...} object the marketing page shows.new_flesch_score can be negative for dense prose — not an error.language is auto-detected when omitted; only pass it if detection gets it wrong.style is v3-only; the API may 4xx if sent to other models. The script drops the default style automatically for non-v3 models.{"error":"Invalid API Key"} in practice (the docs say 401; the script handles both). Check echo ${REPHRASY_API_KEY:+set}.422 → empty/malformed input; the script guards against empty text before calling.jq -n --rawfile t draft.txt \
'{text: $t, model: "v3", style: "professional", words: true, costs: true}' | \
curl -sS https://v2-humanizer.rephrasy.ai/api/ \
-H "Authorization: Bearer $REPHRASY_API_KEY" \
-H "Content-Type: application/json" -d @-
Response shape: {"output": "<humanized text>", "new_flesch_score": <float>, "costs": <float>}.
Always build the JSON body with jq (--rawfile/--arg) — never interpolate raw text into a shell string.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub jhubbardsf/rephrasy-skills --plugin rephrasy