/noise2blog
Turns rough notes, bullet points, voice transcripts, or tweet dumps into a polished, publication-ready blog post. Optionally enriches with Tavily research to add supporting data and credibility to claims. Use when asked to write a blog post from notes, turn rough ideas into an
$ npx -y skills add Varnan-Tech/opendirectory --skill noise2blog --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/noise2blog
Context preview
The summary Claude sees to decide when to auto-load this skill.
Turns rough notes, bullet points, voice transcripts, or tweet dumps into a polished, publication-ready blog post. Optionally enriches with Tavily research to add supporting data and credibility to claims. Use when asked to write a blog post from notes, turn rough ideas into an
SKILL.md
noise2blog.SKILL.mdname: noise2blog
description: Turns rough notes, bullet points, voice transcripts, or tweet dumps into a polished, publication-ready blog post. Optionally enriches with Tavily research to add supporting data and credibility to claims. Use when asked to write a blog post from notes, turn rough ideas into an article, expand bullet points into a full post, clean up a voice transcript into a blog, or repurpose a tweet thread as an article. Trigger when a user says "write a blog post from this", "turn these notes into a post", "expand this into an article", "make this publishable", "I have rough notes write a blog", or "clean up this transcript".
compatibility: [claude-code, gemini-cli, github-copilot]
author: OpenDirectory
version: 1.0.0
Noise to Blog
Take any rough input (bullet points, voice transcripts, tweet dumps, or short drafts) and produce a polished, publication-ready blog post. Every claim traces to the source material or Tavily-verified research.
---
**Critical rule:** DO NOT INVENT SPECIFICS. Every claim, metric, and example in the blog post must come from the raw input or a Tavily search result. Never fabricate data, quotes, or outcomes.
---
Step 1: Setup Check
Confirm required env vars are set:
echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
echo "TAVILY_API_KEY: ${TAVILY_API_KEY:-not set, Tavily enrichment will be skipped}"**If GEMINI_API_KEY is missing:** Stop. Tell the user: "GEMINI_API_KEY is required. Get it at aistudio.google.com → Get API key. Add it to your .env file."
**If TAVILY_API_KEY is missing:** Continue. Note that Tavily enrichment will be skipped. The blog post will be based entirely on the provided content. This is fine for personal stories, tutorials from experience, or opinion pieces.
**Confirm input is present.** The user must provide one of:
- Pasted text (bullet points, rough notes, transcript, tweet dump, short draft)
- A URL to fetch
If no input, ask: "Share your rough notes, bullet points, or transcript. Paste them directly, or give me a URL to fetch the source."
---
Step 2: Read and Analyze Input
**If input is a URL:** Fetch the page content using WebFetch. Extract: title, author, publish date, all body text, key statistics, numbered lists, subheadings, quotes.
**If input is pasted text:** Read it directly. Identify the input type:
- **Bullet points or rough notes**: fragmented ideas, incomplete sentences, stream of consciousness
- **Voice transcript**: conversational, repetitive, filler words (um, uh, like, you know), meandering sentences
- **Tweet thread dump**: short fragments, @mentions, hashtags, "1/8" numbering
- **Short draft**: structured but thin, needs expansion and polish
**QA checkpoint:** State before continuing: 1. Input type detected 2. Core thesis or main argument in one sentence 3. The 3-5 strongest insights, facts, or ideas from the raw content 4. Any claims that need external verification (benchmarks, statistics, product comparisons, research findings)
If you cannot identify a core thesis, ask: "What's the single most important thing you want readers to take away from this?"
---
Step 3: Choose Blog Post Style
Four styles. Auto-detect from content signals. User override always respected.
| Style | When to use | Signals | |-------|-------------|---------| | Technical Tutorial | Step-by-step guide, how-to, code walkthrough | Numbered steps, commands, code snippets, "how to" in content | | Case Study | Before/after story, build log, lessons learned | Specific results, timelines, first-person journey | | Thought Leadership | Opinion, argument, counterintuitive claim | "I think", "the problem with X", contrarian position, debate framing | | Explainer | What is X, why it matters, how it works | Concept-first, comparison-heavy, "most people don't know" |
**Detection logic:**
- Content has numbered steps or commands → Technical Tutorial
- Content has before/after, specific metrics, or narrative arc → Case Study
- Content argues against common wisdom or makes a strong opinion claim → Thought Leadership
- Content explains a concept, tool, or trend for people unfamiliar with it → Explainer
State chosen style and reasoning. If ambiguous, pick one and note the choice.
---
Step 4: Enrich with Tavily Research
Skip this step silently if TAVILY_API_KEY is not set.
Search for supporting evidence for claims in the raw content that could benefit from verification or data. Good candidates:
- Product benchmarks or performance numbers
- Market statistics or industry trends
- Technical comparisons ("X is faster than Y")
- Any number the user mentioned from memory rather than a cited source
Run one Tavily search per claim that needs verification. Limit to 3 searches maximum to avoid over-sourcing:
curl -s -X POST "https://api.tavily.com/search" \
-H "Content-Type: application/json" \
-d '{
"api_key": "'"$TAVILY_API_KEY"'",
"query": "SPECIFIC_CLAIM_OR_TOPIC",
"search_depth": "advanced",
"max_results": 5,
"include_answer": true
}'Keep results with `score >= 0.65`. Extract: title, url, content snippet.
**Rules for using Tavily results:**
- Use them to support or verify claims already present in the raw input. Never introduce entirely new claims from search results.
- Attribute sources naturally in the text: "according to [Source]", "data from [X] shows"
- If no Tavily result confirms a claim, leave the claim unverified rather than substituting an unrelated result
---
Step 5: Generate the Blog Post
Read `references/blog-format.md` in full. Select the matching template from `references/output-template.md`. Internalize all rules before generating.
Write the Gemini request to a temp file to handle special characters safely:
cat > /tmp/noise2blog-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "You are a tech writer who sounds like a real person. Rules: Active voice only. Short paragraphs, 1-3 lines max, then a bRead more
name: noise2blog description: Turns rough notes, bullet points, voice transcripts, or tweet dumps into a polished, publication-ready blog post. Optionally enriches with Tavily research to add supporting data and credibility to claims. Use when asked to write a blog post from notes, turn rough ideas into an article, expand bullet points into a full post, clean up a voice transcript into a blog, or repurpose a tweet thread as an article. Trigger when a user says "write a blog post from this", "turn these notes into a post", "expand this into an article", "make this publishable", "I have rough notes write a blog", or "clean up this transcript". compatibility: [claude-code, gemini-cli, github-copilot] author: OpenDirectory version: 1.0.0
Noise to Blog
Take any rough input (bullet points, voice transcripts, tweet dumps, or short drafts) and produce a polished, publication-ready blog post. Every claim traces to the source material or Tavily-verified research.
---
**Critical rule:** DO NOT INVENT SPECIFICS. Every claim, metric, and example in the blog post must come from the raw input or a Tavily search result. Never fabricate data, quotes, or outcomes.
---
Step 1: Setup Check
Confirm required env vars are set:
echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
echo "TAVILY_API_KEY: ${TAVILY_API_KEY:-not set, Tavily enrichment will be skipped}"**If GEMINI_API_KEY is missing:** Stop. Tell the user: "GEMINI_API_KEY is required. Get it at aistudio.google.com → Get API key. Add it to your .env file."
**If TAVILY_API_KEY is missing:** Continue. Note that Tavily enrichment will be skipped. The blog post will be based entirely on the provided content. This is fine for personal stories, tutorials from experience, or opinion pieces.
**Confirm input is present.** The user must provide one of:
- Pasted text (bullet points, rough notes, transcript, tweet dump, short draft)
- A URL to fetch
If no input, ask: "Share your rough notes, bullet points, or transcript. Paste them directly, or give me a URL to fetch the source."
---
Step 2: Read and Analyze Input
**If input is a URL:** Fetch the page content using WebFetch. Extract: title, author, publish date, all body text, key statistics, numbered lists, subheadings, quotes.
**If input is pasted text:** Read it directly. Identify the input type:
- **Bullet points or rough notes**: fragmented ideas, incomplete sentences, stream of consciousness
- **Voice transcript**: conversational, repetitive, filler words (um, uh, like, you know), meandering sentences
- **Tweet thread dump**: short fragments, @mentions, hashtags, "1/8" numbering
- **Short draft**: structured but thin, needs expansion and polish
**QA checkpoint:** State before continuing: 1. Input type detected 2. Core thesis or main argument in one sentence 3. The 3-5 strongest insights, facts, or ideas from the raw content 4. Any claims that need external verification (benchmarks, statistics, product comparisons, research findings)
If you cannot identify a core thesis, ask: "What's the single most important thing you want readers to take away from this?"
---
Step 3: Choose Blog Post Style
Four styles. Auto-detect from content signals. User override always respected.
| Style | When to use | Signals | |-------|-------------|---------| | Technical Tutorial | Step-by-step guide, how-to, code walkthrough | Numbered steps, commands, code snippets, "how to" in content | | Case Study | Before/after story, build log, lessons learned | Specific results, timelines, first-person journey | | Thought Leadership | Opinion, argument, counterintuitive claim | "I think", "the problem with X", contrarian position, debate framing | | Explainer | What is X, why it matters, how it works | Concept-first, comparison-heavy, "most people don't know" |
**Detection logic:**
- Content has numbered steps or commands → Technical Tutorial
- Content has before/after, specific metrics, or narrative arc → Case Study
- Content argues against common wisdom or makes a strong opinion claim → Thought Leadership
- Content explains a concept, tool, or trend for people unfamiliar with it → Explainer
State chosen style and reasoning. If ambiguous, pick one and note the choice.
---
Step 4: Enrich with Tavily Research
Skip this step silently if TAVILY_API_KEY is not set.
Search for supporting evidence for claims in the raw content that could benefit from verification or data. Good candidates:
- Product benchmarks or performance numbers
- Market statistics or industry trends
- Technical comparisons ("X is faster than Y")
- Any number the user mentioned from memory rather than a cited source
Run one Tavily search per claim that needs verification. Limit to 3 searches maximum to avoid over-sourcing:
curl -s -X POST "https://api.tavily.com/search" \
-H "Content-Type: application/json" \
-d '{
"api_key": "'"$TAVILY_API_KEY"'",
"query": "SPECIFIC_CLAIM_OR_TOPIC",
"search_depth": "advanced",
"max_results": 5,
"include_answer": true
}'Keep results with `score >= 0.65`. Extract: title, url, content snippet.
**Rules for using Tavily results:**
- Use them to support or verify claims already present in the raw input. Never introduce entirely new claims from search results.
- Attribute sources naturally in the text: "according to [Source]", "data from [X] shows"
- If no Tavily result confirms a claim, leave the claim unverified rather than substituting an unrelated result
---
Step 5: Generate the Blog Post
Read `references/blog-format.md` in full. Select the matching template from `references/output-template.md`. Internalize all rules before generating.
Write the Gemini request to a temp file to handle special characters safely:
cat > /tmp/noise2blog-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "You are a tech writer who sounds like a real person. Rules: Active voice only. Short paragraphs, 1-3 lines max, then a bAI Agent Skills built for Founders who hate Marketing
Repo: Varnan-Tech/opendirectory
Other skills on opendirectory-gtm-skills.
- /app-store-review-arbitrage
Fetches low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and generates a ranked copy brief with positioning opportunities.
Open skill - /blog-cover-image-cli
Use when the user asks to generate a blog cover image, thumbnail, or article header. Automatically uses modern typography, brand logos, and Google Search grounding to create beautiful 16:9 images with Gemini 3.1 Flash Image Preview.
Open skill - /brand-alchemy
World-class brand strategist and naming expert. Uses an interrogation-led discovery phase to extract your brand's DNA, then applies scientific naming frameworks (Phonosemantics) and automated multi-TLD domain checking.
Open skill - /claude-md-generator
Use when the user asks to generate or update a project's CLAUDE or AGENTS context file from a codebase scan. Writes a focused file under 100 lines containing only the non-obvious build commands, conventions, and gotchas Claude Code needs.
Open skill - /cold-email-verifier
Use when the user wants to verify cold emails, enrich a lead list, or autonomously guess email addresses from a CSV using ValidEmail.co or the open-source Reacher engine.
Open skill - /company-radar
Competitive intelligence orchestrator tracking companies across 8+ platforms (GitHub, Twitter, Reddit, HN, PH, YC Jobs) with heat scores and AI briefings.
Open skill

