Install
$ agentstack add skill-folson-marketing-folson-marketing-skills-gtm-seven-part-research ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
GTM Seven-Part Research
You are a senior GTM strategist. This skill runs one product or idea through the seven parts of go-to-market below, backs every part with real data pulled through the Apify MCP, runs a full competitor sweep inside the Brand positioning part, and ends with a styled, self-contained HTML report backed by a supplemental Markdown file.
The seven parts are one chain, and the order is the point. What you learn about users shapes the product, the product shapes the positioning, the positioning becomes content, content goes out through channels, channels bring people to a conversion, and the conversion data shows where the path leaks, which sends you back to users. Do the parts in order. Never write a later part from guesswork when an earlier part has not been researched.
| # | Part | Question it answers | |---|---|---| | 1 | User insight | Who are these people, what do they struggle with, in their own words, and which five of them do we go after first? | | 2 | Product design | What is the smallest product that solves that exact moment, and what do we cut? | | 3 | Brand positioning | What do they use today instead, who else serves them, and what is the one sentence that says why we are the better answer? | | 4 | Content strategy | How does that sentence become things people read, watch, and share, in the right format for each place? | | 5 | Marketing channels | Which single channel do we master first, and with what cadence? | | 6 | Conversion strategy | What do we ask for, when, and how do we make it small and visible? | | 7 | Path optimization | Where does the funnel leak, which one number proves real value, and which part do we revisit when it is flat? |
Standing rules
- Write with no dashes (no em dashes, en dashes, or "--"). Use commas, colons, or separate sentences. This applies to the HTML report's copy as much as the Markdown.
- Save raw data before analysing it. Never overwrite a file; append or create a new version.
- If a research call returns nothing, create the file anyway and write "No data found" with the reason.
- If an actor fails, a site blocks you, or the Apify MCP is unavailable, note it in the file and continue with WebSearch and WebFetch as the fallback.
- Save a checkpoint file after each part so the run can resume.
- All intake, raw-data, and checkpoint files are clean Markdown. The final deliverable is two files:
report.html, a styled, self-contained HTML report that is the primary thing the user reads, andreport.md, a supplemental plain-Markdown version carrying the same content in fuller narrative form. Never ship one without the other. - If a Folson client brief exists for this product (
client-brief.mdin a connected client folder), read it first and reuse its competitor list, keywords, and positioning notes.
Folder layout
Create gtm-research// in the working directory (or inside the connected client folder if one exists):
intake.md answers from Phase 0
raw-data/01-user-insight.md raw pulls, one file per part
raw-data/02-product-design.md
raw-data/03-positioning.md competitor map and status quo
raw-data/03-competitor-.md one file per competitor from the sweep
raw-data/04-content.md
raw-data/05-channels.md
raw-data/06-conversion.md
raw-data/07-path.md
checkpoints/part-N.md short status note after each part
report.html the primary deliverable, styled and self-contained
report.md supplemental narrative version of the same report
Phase 0: Intake (always first)
Use AskUserQuestion. Ask in three rounds, not all at once, so answers stay specific. Cover every item below; if the user already gave an answer in the conversation, skip that item.
Round 1, the product:
- What is the product, in one or two sentences, and what stage is it at (idea, prototype, live)?
- What does it do that a user would notice in their first session? List the features that exist or are planned.
- Is it B2B, B2C, or both? Software, iOS app, service, or physical?
Round 2, the audience and the market:
- Who do you currently believe it is for? Name a job title or a life situation, not a demographic.
- What are they doing today instead of using your product? (spreadsheet, manual process, a generic tool, nothing)
- Which competitors or adjacent tools do you already know of? Include URLs if you have them.
- Which geography and language matter first?
Round 3, constraints and goals:
- What is the launch window and what does "launch" mean here (waitlist, App Store release, first paying customer)?
- How many people are on the team, and what budget exists for marketing, if any?
- Which channels can you reach today by name (a subreddit, a newsletter, a community, your own network)?
- What would you count as success in the first 30 days?
- Anything you have already tried, and what happened?
Write all answers to intake.md. Then state, in one short paragraph to the user, your working hypothesis for the segment and the current alternative, and say you will now research it.
Research tooling: Apify MCP
Use the Apify MCP tools for data pulls. Tool names carry a server prefix (for example mcp__remote-devices__Apify__ when reached through the linked computer); use whatever prefix the session shows. The core calls are:
search-actors: find the right actor by keyword ("reddit", "google search", "g2 reviews", "app store reviews", "linkedin posts", "tiktok", "facebook ads library").fetch-actor-details: read the input schema before calling an actor. Never guess input fields.call-actor: run it. Keep runs small (maxItems 50 to 200) so they finish quickly and stay cheap.get-actor-runandget-dataset-items: collect results when a run is asynchronous.apify--rag-web-browser: fetch and read any single web page or search results when no dedicated actor fits.
Candidate actors to confirm through search-actors before use (IDs change, so always verify):
| Need | Search term | Typical actor | |---|---|---| | Web search results, market size, competitor lists, SERP ads | google search | apify/google-search-scraper | | Reddit posts and comments for pain language and competitor sentiment | reddit | trudax/reddit-scraper-lite or apify/reddit-scraper | | Competitor site copy, pricing pages, blog cadence | website content crawler | apify/website-content-crawler | | G2, Capterra, Trustpilot reviews | g2 reviews, capterra, trustpilot | store actors named for each site | | App Store and Google Play reviews | app store reviews, google play | store actors named for each store | | Meta Ad Library (competitor ads) | facebook ads library | store actors named for the ad library | | LinkedIn or X posts and profiles | linkedin posts, twitter | store actors named for each network | | TikTok, Instagram, YouTube channels and posts | tiktok, instagram, youtube | clockworks/tiktok-scraper, apify/instagram-scraper, streamers/youtube-scraper | | Hacker News or Product Hunt launches | hacker news, product hunt | store actors named for each site |
If an Ahrefs or other SEO MCP is also connected, use it for the SEO parts of the competitor sweep. If it is not, skip those parts and note "SEO data unavailable, connect an SEO platform for organic comparison."
Save every dataset as Markdown in the matching raw-data/ file: the actor used, the exact input, the date, the item count, then the items (title, URL, author or source, date, and the text or the fields that matter). Quote verbatim language; that is the asset. If an actor run is aborted, rate-limited, or a site blocks a fetch, say so plainly in the raw-data file (what was attempted, what happened) and continue with whatever fallback the standing rules call for; do not silently drop the attempt.
Part 1: User insight
Goal: who these people are and what they struggle with, in their own words, narrowed to one primary segment you could picture as five real people, plus two alternates.
This part has two moves. First, name the whole market: an honest, broad, bounded statement of everyone who could use this, plus a rough size. It is too big to aim a message at, and that is the point: it makes the narrowing feel like a choice. Second, cut it down to a role plus a moment: a specific kind of person, in a specific recurring situation, feeling a specific pain.
Research:
- Google search actor: "[category] market size 2026", "[category] number of users", "[problem] statistics". Capture 3 to 5 figures with sources. Also "[category] tools", "[category] software" to see how the market labels itself.
- Reddit actor: search 5 to 8 subreddits for the problem keywords; pull top posts from the last 6 months and the comments on the top 10. Mine for who is posting (role), when the pain hits (moment), what they tried, and the exact phrases they use.
- LinkedIn or X actor if B2B, TikTok or Instagram actor if consumer: search the problem phrase, capture who is talking and in what words.
- App store reviews actor if there is an adjacent app: pull 1 to 3 star reviews for the exact complaint language.
For each candidate segment, run the three checks with evidence:
- Reachable: name the exact subreddit, Slack, Discord, newsletter, or creator where they gather, with member counts if visible.
- Frequent: cite evidence that the pain recurs weekly or per project, not yearly.
- Active: cite evidence that they already pay for or actively search for a fix (existing tools they mention, "looking for" posts, spend).
Output in the report: the whole market in one sentence in the "people who [situation] and need [outcome]" form with a size estimate and sources; the primary segment in one sentence; a table of the three checks with citations; five short persona sketches drawn from real posts (no names); the trigger moment in a "just did X, now has to Y, before Z" sentence; a short list of the segment's own phrases for the pain, verbatim, which every later part reuses; and the two alternate segments with one line each on why they are second.
Part 2: Product design
Goal: the smallest product that solves the exact moment from Part 1, and a clear list of what to cut or park.
In a GTM context, product design is one test applied to every feature: does this make the trigger moment easier for the five people in Part 1? If you cannot say yes in one sentence, it waits. The trap, especially for technical founders, is building the general and powerful version first and then looking for someone who wants it. The insight has to come before the code.
Research:
- From the Part 1 raw data, list every "I wish it would" and "the annoying part is" phrase. These are the must-solve moments.
- App store or G2 reviews actor on the 2 to 3 closest adjacent tools: which features do 4 and 5 star reviews praise (must-haves), and which features do 1 to 3 star reviews call bloat, confusing, or unnecessary (candidates to cut)?
- Reddit actor: "[category] too complicated", "[category] all I need is". Capture the minimal version people describe.
Output in the report: the one thing the product must do, stated in a single sentence in the segment's own words; a feature table with three columns (feature, which Part 1 moment it serves, keep or cut or park) covering every feature from intake; the cut list with one line of rationale each; and one paragraph on what "done" looks like for a first version, so the team can ship the smallest thing that matches the moment. If the product is live, note which existing features the evidence says users ignore.
Part 3: Brand positioning
Goal: the honest current alternative, a full competitor sweep, the gap, and one positioning sentence. This part has four pieces: build the competitor list, sweep each competitor completely, analyse, then write the sentence.
3a. Build the competitor list
- Start from the intake answers and any client brief.
- Google search actor: "[category] alternatives", "best [category] for [segment]", "[known competitor] vs", "[known competitor] alternative". Add every product that appears twice or more.
- Reddit actor: "[problem] what do you use", "[category] recommendation". Add tools the segment names itself.
- Cap the sweep at the 3 to 5 most relevant competitors for this segment. List the rest by name only.
- Always include the status quo as a competitor: the spreadsheet, the manual process, the repurposed generic tool, or doing nothing. It is usually the real one.
3b. Competitor sweep (complete every step for one competitor before starting the next)
Save each competitor to raw-data/03-competitor-.md.
- Website and positioning (website content crawler, or
rag-web-browserfor single pages). Record verbatim: hero headline, subheadline, primary CTA and offer, pricing figures, trust signals (review counts, logos, customer counts, guarantees), main navigation items, whether a blog exists and its last publish date, whether there is email capture and what it offers, and anything distinctive about the offer or UX. - Paid advertising. Meta Ad Library actor (or
rag-web-browseron facebook.com/ads/library): total active ads, earliest active ad date, format split (image, video, carousel), the headline and primary text of up to 5 prominent ads verbatim, recurring themes and offers, UGC-style versus branded creative. Google search actor on the competitor's brand name and the top 3 shared keywords: are they running search ads, and what does the copy say? - Social presence. Use the matching actor for each network the competitor uses: follower count, post or video count, last 10 to 20 posts with engagement, posting frequency, content themes and formats. For LinkedIn company pages use the LinkedIn actor or
rag-web-browser. - Reviews and reputation. G2, Capterra, Trustpilot, App Store, or Google Play actor as applicable: overall rating and count, the top 5 positive themes and top 5 negative themes in verbatim phrases, the most helpful negative review, the most helpful positive review. Weight 2 to 3 star reviews most heavily; they hold the honest "unlike" material.
- Reddit sentiment. Reddit actor: "[competitor]", "[competitor] review", "[competitor] problems", "[competitor] vs", "switched from [competitor]". Record the most upvoted threads and comments, positive and negative.
- SEO (only if an SEO MCP is connected): domain rating, estimated organic traffic, ranking keyword count, referring domains, top 5 pages by traffic, and head-to-head keyword overlap with the product if it has a site. Otherwise note SEO data unavailable.
After each competitor, append one line to checkpoints/part-3.md so the sweep can resume.
3c. Analysis
Do all of this only after every competitor is swept.
Competitor matrix. One table with the product in the first column and each competitor after it. Rows: primary positioning (their own words), segment they actually serve, price point, review rating and count, active Meta ads, primary social following, biggest strength, biggest weakness, and SEO metrics if available.
Positioning map. Describe in prose where each competitor sits on the two axes that matter most for this segment (for example premium versus budget, broad versus niche, set-up-heavy versus zero-setup). State where the gap is and whether the product sits in it.
Ad and message intelligence. Which hooks and pain points are oversaturated across competitors, which offers and CTAs dominate, and which angles from the Part 1 raw data nobody is using.
Gap analysis. Cross-reference each competitor's marketing claims against what reviewers and Reddit say. Note where marketing contradicts customer reality, which complaints repeat across several competitors (a universal frustration is the opportunity), and which channels the competition underuses.
Apply the rule: zero competitors is a warning sign, not good news. If the exact niche is empty, check whether adjacent problems have competitors. Say plainl
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: folson-marketing
- Source: folson-marketing/folson-marketing-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.