
Blog Post Counter
Count how many unique blog posts a competitor or prospect publishes without hunting down their blog URL manually.
Overview
Blog Post Counter is an agent skill most often used in Idea (also Launch, Grow) that finds a company’s blog and returns an exact count of unique posts from name, domain, or sitemap input.
Install
npx skills add https://github.com/infrasity-labs/dev-gtm-claude-skills --skill blog-post-counterWhat is this skill?
- Resolves blog URLs from company name alone and counts unique posts after filtering pagination and category noise
- Handles multi-path blogs, sitemap indexes, subdomain blogs, and multiple child sitemaps on one domain
- Falls back to DataForSEO indexed URLs when sitemaps are missing or unreadable
- Activates via /dev-gtm blog-count or natural language in Claude Code after cloning dev-gtm-claude-skills
- Outputs exact unique post counts for content audits and dev-marketing benchmarking lists
Adoption & trust: 1 installs on skills.sh; 24 GitHub stars; trending (+100% hot-view momentum).
What problem does it solve?
You know a competitor’s brand but not where they publish or how many real articles they have, so content benchmarking stalls on manual sitemap archaeology.
Who is it for?
Solo founders or indie marketers comparing publishing volume across a short list of companies before positioning or content planning.
Skip if: Teams that already have full content-quality or keyword-gap analysis and only need qualitative editorial review without volume metrics.
When should I use this skill?
You have a company name, domain, or sitemap and need an exact unique blog post count for competitive or audit workflows.
What do I get? / Deliverables
You get a deduplicated blog post total plus confidence in which blog sections were crawled, so you can size editorial investment or pitch audits with a hard number.
- Resolved blog URL(s) and total count of unique blog posts
- Filtered URL list excluding pagination and category duplicates when requested
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Competitor content volume is a classic early research signal before you commit positioning or editorial strategy. The skill is built to benchmark rival publishing output from a company name, domain, or sitemap—core competitive intelligence work.
Where it fits
Benchmark how many posts three rivals published before you choose a content-led positioning angle.
Set a realistic editorial target by comparing post counts for domains you want to outrank in organic search.
Track publishing output for client or partner companies during a quarterly content performance review.
How it compares
Use instead of hand-counting sitemap URLs in a spreadsheet when you need a fast, repeatable competitor post tally.
Common Questions / FAQ
Who is blog-post-counter for?
It is for solo builders, content and SEO practitioners, developer-marketing teams, and small agencies who benchmark how much competitors publish without manual blog discovery.
When should I use blog-post-counter?
Use it during Idea competitor research to size rival content engines, during Launch SEO planning to set realistic publishing targets, and during Grow content analytics when tracking output across a portfolio of companies.
Is blog-post-counter safe to install?
Review the Security Audits panel on this Prism page and the skill repo before enabling network or third-party API usage such as DataForSEO; treat crawls and external data calls according to your data policy.
SKILL.md
READMESKILL.md - Blog Post Counter
# Blog Post Counter Finds the blog URL for any company and counts the total number of unique blog posts published. Works from a company name alone — no URL required. --- ## What this skill does Given a company name, domain, or sitemap URL, this skill finds the blog, crawls the sitemap, filters out pagination, category pages, and duplicate URLs, and returns an exact count of unique blog posts. It handles multi-section blogs (e.g. `/blog/` and `/insights/` on the same domain), sitemap indexes with multiple child sitemaps, subdomain blogs (`blog.company.com`), and falls back to DataForSEO indexed URL data when a sitemap is missing or unreadable. Built for: - **Content and SEO teams** benchmarking competitors' publishing volume - **Developer marketing** tracking content output across a list of companies - **Agencies** running content audits for clients --- ## Installation ### Claude Code (Recommended) Clone the repo — the skill activates automatically when you open it in Claude Code: ```bash git clone https://github.com/Infrasity-Labs/dev-gtm-claude-skills.git cd dev-gtm-claude-skills claude ``` Then trigger it with: ``` /dev-gtm blog-count stripe.com ``` Or just ask naturally — Claude will activate the skill automatically. ### Claude Web (Free / Pro) 1. Go to **[Settings → Capabilities](https://claude.ai/settings/capabilities)** and enable **Code execution and file creation** 2. Go to **[Customize → Skills](https://claude.ai/customize/skills)** 3. Click **+** → **Create skill** → **Upload a skill** 4. Zip this skill folder and upload it: ```bash cd dev-gtm-claude-skills/skills zip -r blog-post-counter.zip blog-post-counter/ ``` Upload `blog-post-counter.zip` and toggle it on. --- ## DataForSEO Setup (Optional) This skill uses DataForSEO as a **fallback only** — when a sitemap cannot be found or is unreadable. Most domains have a readable sitemap, so this is not needed for most runs. If you want full fallback coverage: ### Claude Code Open `.claude/settings.json` in the cloned repo and replace the placeholder credentials: ```json { "mcpServers": { "dataforseo": { "command": "npx", "args": ["-y", "@dataforseo/mcp-server"], "env": { "DATAFORSEO_USERNAME": "your-dataforseo-username", "DATAFORSEO_PASSWORD": "your-dataforseo-password" } } } } ``` ### Claude Web (Free / Pro) Go to **[Settings → Integrations](https://claude.ai/settings/integrations)**, find **DataForSEO**, and connect your account. --- ## How to use ``` How many blog posts does stripe.com have? ``` ``` Count the blog posts for these companies: vercel.com, netlify.com, railway.app ``` ``` /dev-gtm blog-count linear.app ``` For batch runs, provide a list of company names or domains and the skill returns a table. --- ## Output **Single company:** ``` Company: Stripe Blog URL: https://stripe.com/blog/ Unique posts: 312 ``` **Batch run:** | Company | Blog URL | Unique Posts | |---------|----------|-------------| | Stripe | https://stripe.com/blog/ | 312 | | Vercel | https://vercel.com/blog | 187 | | Railway | https://railway.app/blog | 94 | --- ## How it works 1. **Resolve the sitemap** — tries `/sitemap.xml`, `/sitemap_index.xml`, and `www.` variants in order. Falls back to a web search if none work. 2. **Fetch all URLs** — if the sitemap is an index, fetches every child sitemap. Blog-specific child sitemaps (`post-sitemap.xml`, `blog-sitemap.xml`) are fetched first. 3. **Filter to blog posts** — keeps only URLs matching blog path patterns (`/blog/`, `/insights/`, `/articles/`, etc.) or blog subdomains (`blog.domain.com`), with at least one path segment after the pattern. 4. **Deduplicate** — removes listing pages, pagination, category/tag/author archives, RSS feeds, and query-param duplicates. 5. **Return the count** — reports each blog section separately if the domain has more than one, then sums to a total. --- ## Notes - Sitemap data reflects what the site explici