The link builder
The link builder is its own plan, separate from the planner and writer plan.
The link builder takes one published article and gets it links. It comes as one download holding three skills that work on the same article:
- seomantik-finder finds every site in your niche that could take a guest post or link to the article, reads each one's contact, about and write-for-us pages, and ranks them on one page.
- seomantik-outreach drafts a personal pitch for each target you keep, with follow-ups, and sends them from your own address when you say so.
- seomantik-content writes the guest article when a site says yes.
Blogs, SaaS, online shops and local service businesses all work.
What it does not do
- It does not promise links, placements, replies or rankings. It finds real openings and drafts honest pitches; the answer is the other site's.
- It never sends anything on its own and never schedules anything. You approve the campaign, and you say who to contact.
- It does not buy placements. When a site sells access, it is shown with its price and direction, and the decision is yours.
- Whitehat only. No link schemes, no private networks, no automated spamming.
What it needs
- The SEOMANTIK feed, connected (see Getting started).
- One article already published on your site.
- Node 20 or newer, for the finder's scripts (
node --version). - Python 3, for the outreach skill's plan check, its two boards and the guest article step (
python --version). - To send from your own address: your mail connected in Claude Code (Gmail, or any mail server). Without it, the drafts are still yours to send by hand.
Start with the finder
In your project folder, type:
/seomantik-finder https://yourdomain.com/the-post/Name the skill with the slash, as above: several skills understand "guest posts", and the slash makes sure the finder answers.
The questions it asks you
At the start, together: the article, three to five words that name your niche, a list of words a post title in your niche would contain (it proposes one), and your market. It then works on its own.
About ten minutes in, it asks one more thing: the smallest site worth reading, as monthly visits. It shows, for each choice, how many sites would be read and roughly how long that takes, and recommends 300. A lower floor finds more small blogs that are easier to get into, each worth less as a link, and takes longer. You can lower the floor later on the same run without using another run. With no visits floor at all, a site with no visits figure stays on the list, marked "visits not measured".
A full finder run takes about one and a half to two and a half hours, because it reads every site it proposes. You can leave it running once you have answered the visits question. Drafting the pitches afterwards takes its own time on top.
What you get
One page, report.html, published so you can open it in a browser. It is one list, a row per site; click a row and its detail opens under it: why it is there, the way in, its numbers and how to reach it.
- Proposed sites, grouped as best bet (the site invites outside articles, and the row quotes the sentence), magazines that invite writers (a larger publication whose own page asks for outside contributors; the group appears only when a run finds one), good (it publishes outside writers or collaborations), came up in a write-for-us search, and cold pitch only. Within a group, sites are ordered by how open the way in is, then how close the site is to your niche, then link value, freshness and how easy they are to reach. There is no summed score. Each row has one sentence on why it is there.
- Publishes almost anything: sites whose recent posts jump between unrelated subjects, the way sites that publish whatever is paid for look. They stay on the list, in their own group after the cold pitches, with those subjects named on the row, because a link there counts for less.
- The dump: every other site the run touched, each with its reason (off topic, no post in a year, under your visits floor, refuses guest posts, and so on). Nothing is deleted and nothing is hidden.
A site fits when it is about your niche, has a category on it, or holds an article on it.
Some sites are never proposed and sit in the dump with the reason: a site with no post in the past year, a forum, a plain business with no blog, a site whose spam reading is 50 or more, and your own site.
A giant publication is not proposed either: a magazine with a million visits a month or more, or with a hundred thousand linking sites or more, stays in the dump with that reason.
Then draft the pitches
For the same article, type:
/seomantik-outreach https://yourdomain.com/the-post/It is the same run as the finder's, not an extra one.
It drafts from the finder's list. When the finder has already run on the article, the outreach skill says so and takes the finder's best bets and good sites as its targets. It does not search the niche again. It still checks who already links to you, so nobody who links already gets a cold pitch, and it reads and measures each site before the shortlist. When a site has pages that match your article, it reads up to three of them. Only a page that is really on your subject becomes a page to ask a link from; a page that only shares words with your article does not count. Say "search again" when it starts if you want a full new search instead. Sites in the finder's other groups can be added by asking.
Where it stops for you
- The shortlist. Open
PLAN.html: one row per site; click a row and its measurements open under it. Move the six standards sliders to re-cut the list, pick the rows you want (your picks gather at the bottom of the page), and paste the line the board gives you back into the session. It then asks how many targets to draft. Nothing is drafted before you answer. - The campaign. Open
OUTREACH.html(orOUTREACH.md): every target as a row, its pitch and follow-ups under it when you open it. Edit anything, then approve the campaign as a whole. Nothing can be sent before that approval.
Every site you choose gets a written pitch. Before drafting, it reads the site's pages on your subject. Where it finds a gap, the pitch offers to fill it; where the site already covers the subject, the pitch offers a guest post from another angle and never claims the site lacks something it has. Each card says in one sentence what the read found and what the pitch offers. Drop any pitch you do not want before you approve.
The shortlist is measured against your standards. There are six of them, the six sliders on the board: the smallest audience worth pitching, how big is too big to bother, how much spam is too much, how many sites should already link to them, how many links they should have, and how many outbound links per page is too many. One more rule has no slider: a commercial publisher with no way in for outside writers is left out, and shown with that reason. Every standard has a sensible default, and you can change them later for free. Without a finder list for the article, it builds the shortlist from its own search of the niche.
What it asks sites for
Four kinds of placement, and it names which one each pitch is:
- A guest post on a site that accepts contributions.
- A link on a named page that already covers your subject.
- A place on a resource list in your niche.
- A link where they already mention you without linking.
Sending and follow-ups
With your mail connected, tell the session who to contact, for example "send the first two" or "contact these three". It sends those pitches from your own address and records each one.
- Follow-ups are suggested at five and ten business days after approval. Each one goes only when you ask, and it reads your inbox first so anyone who replied is skipped.
- Replies are read back to you when you ask.
- Without a mail connection, it says so and points to a small script in the package that you can run and schedule yourself.
It never handles your mail password.
A guest article, when a site says yes
It writes the article in the host site's voice, with its sources, using the content skill in the same download. The article is built on the missing piece your pitch named, which was checked against the site's own pages before the pitch was drafted. It can be written only for a site you drafted a pitch for; asking for a site that was never drafted is refused, and the drafted sites are named.
How it counts
Your plan gives you runs and pitches each month:
- A run is one article. It is counted the first time the finder or the outreach skill works on that article. Running both on the same article is one run. Resuming it, lowering the visits floor, re-cutting the shortlist and opening the same article again (however the address is written) are free.
- A pitch is one target drafted. Pitches are shared across all your runs of the month. Redrafting a target already drafted is free, and so is sending.
Every run starts by printing your runs and pitches used and allowed this month, and the reset date. When the month's runs or pitches are used up, the step that needs one stops, spends nothing, and says which limit was reached and when it resets. A deliberate second search on an article that already has a run counts as a new run, and the outreach skill asks you first.
Every file it writes
The finder, in its run folder (runs/<niche>-<site>-<article>/):
report.html: the page with every site, proposed and dumped.run.json: the run's settings, including your visits floor.ranked.json: the ranking behind the page.- The other
.jsonfiles andraw/: every search and page it read, saved so a run picks up where it stopped. Do not edit them.
The outreach skill, in the campaign's folder (outreach-<article>/):
PLAN.html: the shortlist board.PLAN.mdis the same as a document.OUTREACH.html: the campaign: each target with its pitch and follow-ups.OUTREACH.mdis the same as a document.project.configandRUN-NOTES.md: the campaign's settings, and what the run did and why.data/: the article's niche, every site found, the qualified sites, the chosen targets and their pitches, and every site removed along the way with the reason. Nothing is dropped silently.data/raw/holds every answer the feed returned, so a campaign resumes without paying twice. Do not edit it.send-state.jsonandreplies/: after your first send, what was sent to whom and when, and the replies read back.guestpost-<site>/: when a site accepts a guest post, the article and its sources.
When something goes wrong
"Campaigns for this period are all used." Every run of your month is in use (the message says campaigns; a campaign is a run). Resuming a run you already have stays free; new articles wait for the reset date the message gives.
"No SEOMANTIK key found." The project folder's .mcp.json has no seomantik-feed entry. Download the project folder again from your dashboard.
Every draft is blocked and shows [YOUR NAME]. The signature was left for later. Give it in the session and the drafts clear.
"Approve the campaign first." You asked to send before approving. Open OUTREACH.html, review, and approve.
A site shows "not read". It blocked automated reading. It stays on the list, marked, and is never judged on guesses.
Two articles in one folder. Each article needs its own folder, or the second campaign overwrites the first one's work.
The counts look small. Every count is a floor: search results come back in small pages, so there may be more sites than it found.