Company Current GTM Analysis
Composite: deterministic scripts harvest each GTM channel's public footprint; you, the
agent, grade each dimension (A–F), find white space, and write the report.
When to use
- "Run a GTM analysis for [company]." / "What is [company] doing across all of GTM?"
- Before a new client engagement or competitive strategy build.
- When you need a channel-by-channel scorecard plus prioritized white-space opportunities.
How to run
Work the ten dimensions; parallelize the independent fetches.
Content / blog
python3 ${SKILL_DIR}/scripts/fetch_feed.py --url https://company.com/blog \
--output ${WORKSPACE}/blog_feed.json # cadence, authors, recent topics
python3 ${SKILL_DIR}/scripts/fetch_pages.py \
--url https://company.com/blog https://company.com/resources \
--output ${WORKSPACE}/content_pages.json
Positioning, customers, partnerships, integrations, careers
python3 ${SKILL_DIR}/scripts/fetch_pages.py \
--url https://company.com https://company.com/about https://company.com/customers \
https://company.com/pricing https://company.com/integrations \
https://company.com/partners https://company.com/careers \
--output ${WORKSPACE}/gtm_pages.json
Pages with stats.likely_js_rendered: true (JS ATS boards, JS marketing sites): re-fetch
with node ${SKILL_DIR}/scripts/render_page.mjs --url <u> --output ....
SEO / traffic
Use the seo-traffic-analyzer skill (keyless serp + SimilarWeb) for this section, or do
site: probes with your own web search. Do not invent traffic numbers.
Founder LinkedIn, social, podcasts/press, reviews
- Founder LinkedIn posts: render a profile with
render_page.mjs --url <profile> --wait 6000
for a one-off, or use PHANTOMBUSTER_API_KEY (+ LinkedIn cookie) for scale. If neither,
mark the section "[NEEDS VERIFICATION]".
- Social/podcasts/press: your own web search per platform; render specific pages as needed.
- Reviews:
render_page.mjs on the G2/Capterra review URL (anti-bot, JS) — see Notes for
the Apify fallback.
Synthesize (you, the agent — no script)
Read all collected JSON and write current-gtm-analysis.md: executive summary, ten
dimension sections, and an A–F scorecard across ~15 dimensions, each graded with
evidence and the biggest opportunity. Grade relative to company stage. White space =
impact × effort. Save to ${WORKSPACE}/ and post as a channel attachment.
Outputs
${WORKSPACE}/blog_feed.json, gtm_pages.json, content_pages.json — collected signal.
${WORKSPACE}/current-gtm-analysis.md — the graded report (your synthesis).
Credentials / env
- Required: none — fetch/feed/render scripts are keyless; grading is the agent.
- Optional:
PHANTOMBUSTER_API_KEY (+ LinkedIn cookie) for founder-LinkedIn at scale;
APIFY_API_TOKEN for deeper Reddit/YouTube/review/LinkedIn scraping;
SUPABASE_URL/SUPABASE_KEY or AIRTABLE_API_KEY for run history;
DATAFORSEO_LOGIN/DATAFORSEO_PASSWORD or SERPER_API_KEY for the per-channel discovery
searches (if set -> paid SERP; if not -> the agent's own web search, the default). Semrush/
Ahrefs have no Robomotion package — if the team has a key, treat as optional manual enrichment.
Notes & edge cases
- Parallelize the independent research threads to cut wall-clock time.
- If
fetch_pages.py returns empty (likely_js_rendered), fall back to render_page.mjs.
- Grade relative to stage — a seed startup needs no analyst coverage; a Series-A does.
- Never invent metrics; flag unverifiable items "[NEEDS VERIFICATION]".
- Founder-LinkedIn underinvestment is usually the #1 finding — surface it explicitly when true.
- Apify degrade (when set):
curl -s "https://api.apify.com/v2/acts/<actor>/run-sync-get-dataset-items?token=$APIFY_API_TOKEN" -d '{...}'.
1---2name: company-current-gtm-analysis3description: Analyze what a target company is doing across every go-to-market dimension — content, founder thought leadership, SEO/traffic, hiring, social, acquisition channels, podcasts/press, reviews, positioning, partnerships — and grade each A–F to expose white space. Run before designing a GTM strategy so the plan fills real gaps. Keyless backbone; the agent grades and writes the report.4---56# Company Current GTM Analysis78Composite: deterministic scripts harvest each GTM channel's public footprint; **you, the9agent, grade each dimension (A–F), find white space, and write the report.**1011## When to use1213- "Run a GTM analysis for [company]." / "What is [company] doing across all of GTM?"14- Before a new client engagement or competitive strategy build.15- When you need a channel-by-channel scorecard plus prioritized white-space opportunities.1617## How to run1819Work the ten dimensions; parallelize the independent fetches.2021### Content / blog2223```bash24python3 ${SKILL_DIR}/scripts/fetch_feed.py --url https://company.com/blog \25 --output ${WORKSPACE}/blog_feed.json # cadence, authors, recent topics26python3 ${SKILL_DIR}/scripts/fetch_pages.py \27 --url https://company.com/blog https://company.com/resources \28 --output ${WORKSPACE}/content_pages.json29```3031### Positioning, customers, partnerships, integrations, careers3233```bash34python3 ${SKILL_DIR}/scripts/fetch_pages.py \35 --url https://company.com https://company.com/about https://company.com/customers \36 https://company.com/pricing https://company.com/integrations \37 https://company.com/partners https://company.com/careers \38 --output ${WORKSPACE}/gtm_pages.json39```4041Pages with `stats.likely_js_rendered: true` (JS ATS boards, JS marketing sites): re-fetch42with `node ${SKILL_DIR}/scripts/render_page.mjs --url <u> --output ...`.4344### SEO / traffic4546Use the `seo-traffic-analyzer` skill (keyless serp + SimilarWeb) for this section, or do47`site:` probes with your own web search. Do not invent traffic numbers.4849### Founder LinkedIn, social, podcasts/press, reviews5051- Founder LinkedIn posts: render a profile with `render_page.mjs --url <profile> --wait 6000`52 for a one-off, or use `PHANTOMBUSTER_API_KEY` (+ LinkedIn cookie) for scale. If neither,53 mark the section "[NEEDS VERIFICATION]".54- Social/podcasts/press: your own web search per platform; render specific pages as needed.55- Reviews: `render_page.mjs` on the G2/Capterra review URL (anti-bot, JS) — see Notes for56 the Apify fallback.5758### Synthesize (you, the agent — no script)5960Read all collected JSON and write `current-gtm-analysis.md`: executive summary, ten61dimension sections, and an A–F scorecard across ~15 dimensions, each graded **with62evidence** and the biggest opportunity. Grade relative to company stage. White space =63impact × effort. Save to `${WORKSPACE}/` and post as a channel attachment.6465## Outputs6667- `${WORKSPACE}/blog_feed.json`, `gtm_pages.json`, `content_pages.json` — collected signal.68- `${WORKSPACE}/current-gtm-analysis.md` — the graded report (your synthesis).6970## Credentials / env7172- **Required:** none — fetch/feed/render scripts are keyless; grading is the agent.73- **Optional:** `PHANTOMBUSTER_API_KEY` (+ LinkedIn cookie) for founder-LinkedIn at scale;74 `APIFY_API_TOKEN` for deeper Reddit/YouTube/review/LinkedIn scraping;75 `SUPABASE_URL`/`SUPABASE_KEY` or `AIRTABLE_API_KEY` for run history;76 `DATAFORSEO_LOGIN`/`DATAFORSEO_PASSWORD` or `SERPER_API_KEY` for the per-channel discovery77 searches (if set -> paid SERP; if not -> the agent's own web search, the default). Semrush/78 Ahrefs have no Robomotion package — if the team has a key, treat as optional manual enrichment.7980## Notes & edge cases8182- Parallelize the independent research threads to cut wall-clock time.83- If `fetch_pages.py` returns empty (`likely_js_rendered`), fall back to `render_page.mjs`.84- Grade relative to stage — a seed startup needs no analyst coverage; a Series-A does.85- Never invent metrics; flag unverifiable items "[NEEDS VERIFICATION]".86- Founder-LinkedIn underinvestment is usually the #1 finding — surface it explicitly when true.87- Apify degrade (when set): `curl -s "https://api.apify.com/v2/acts/<actor>/run-sync-get-dataset-items?token=$APIFY_API_TOKEN" -d '{...}'`.