Transform AI-generated content into natural, human-sounding writing with proper tone and style
Overall
score
18%
Does it follow best practices?
If you maintain this skill, you can automatically optimize it using the tessl CLI to improve its score:
npx tessl skill review --optimize ./path/to/skillValidation for skill structure
Transform AI-generated content into natural, human-sounding writing. Uses Exa to research author voice/tone and stores refined content in Notion.
{
"mcpServers": {
"notion": {
"command": "npx",
"args": ["-y", "@makenotion/mcp-server"],
"env": { "NOTION_API_KEY": "${NOTION_API_KEY}" }
},
"exa": {
"command": "npx",
"args": ["-y", "@exa/mcp-server"],
"env": { "EXA_API_KEY": "${EXA_API_KEY}" }
}
}
}// 1. Load source content
const content = await notion.pages.retrieve({ pageId: draftId });
const text = content.blocks.map(b => b.paragraph.rich_text[0]?.plain_text).join("\n");
// 2. Analyze for AI patterns
const patterns = detectAIPatterns(text);
// Returns: ["significance_inflation", "copula_avoidance", "formulaic_challenges", "ai_vocabulary"]
// 3. Research target voice (optional)
const targetVoice = "tech journalist"; // or retrieve from Notion
const samples = await exa.search(targetVoice, {
category: "content",
numResults: 5
});
const voiceProfile = extractVoiceFromSamples(samples);
// 4. Rewrite with LLM
const humanized = await rewrite(text, {
patternsToFix: patterns,
tone: voiceProfile || "professional",
preserveMeaning: true
});
// 5. Store in Notion
const refinedPage = await notion.pages.create({
parent: { databaseId: refinedContentDbId },
properties: {
"Title": { "title": [{ "text": { "content": `Refined: ${content.title}` } }] },
"Source": { "url": content.url },
"Patterns Fixed": { "multi_select": patterns.map(p => ({ "name": p })) }
},
children: [
{
"object": "block",
"type": "heading_2",
"heading_2": { "rich_text": [{ "text": { "content": "Original" } }] }
},
{
"object": "block",
"type": "paragraph",
"paragraph": { "rich_text": [{ "text": { "content": text } }] }
},
{
"object": "block",
"type": "heading_2",
"heading_2": { "rich_text": [{ "text": { "content": "Humanized" } }] }
},
{
"object": "block",
"type": "paragraph",
"paragraph": { "rich_text": [{ "text": { "content": humanized } }] }
}
]
});function detectAIPatterns(text: string): string[] {
const patterns: string[] = [];
// Significance inflation
if (text.match(/pivotal|groundbreaking|unprecedented|transformative/gi)) {
patterns.push("significance_inflation");
}
// Copula avoidance (serves as, acts as)
if (text.match(/\b(serves as|acts as|functions as)\b/gi)) {
patterns.push("copula_avoidance");
}
// Formulaic challenges
if (text.match(/despite (challenges|difficulties|obstacles)/gi)) {
patterns.push("formulaic_challenges");
}
// AI vocabulary
const aiWords = ["additionally", "moreover", "furthermore", "testament", "landscape", "realm"];
if (aiWords.some(w => text.toLowerCase().includes(w))) {
patterns.push("ai_vocabulary");
}
// Em dash overuse
if ((text.match(/—/g) || []).length > 2) {
patterns.push("em_dash_overuse");
}
// Filler phrases
if (text.match(/\b(in order to|due to the fact that|it is important to note)\b/gi)) {
patterns.push("filler_phrases");
}
return patterns;
}| Pattern | AI Version | Human Version |
|---|---|---|
| Significance inflation | "marking a pivotal moment" | specific facts |
| Copula avoidance | "serves as" | "is" |
| Formulaic challenges | "Despite challenges..." | direct statement |
| AI vocabulary | "Additionally..." | "Also..." or start new thought |
| Em dash overuse | Multiple "—" in one paragraph | Use sparingly |
| Filler phrases | "In order to" | "To" |
Skill v2.0 - Humanizer
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.