seranking/site-audit-to-social-distribution
> Find weak pages, technical issues, and content gaps in SE Ranking, then coordinate the fix end-to-end in Planable — drafting the rewritten page copy in a Universal content page for feedback and approval, and scheduling the supporting social distribution. Use this skill whenever the user wants to act on a site/SEO audit by getting content fixed and promoted, or says things like "audit the site and help us fix the weak pages", "we need to rewrite these pages and approve the new copy", "coordinate a content refresh", "turn audit findings into an action plan with social distribution", or "which pages should we fix and how do we get the updates reviewed". Always activate when SE Ranking findings need to become reviewed, approved content plus a social push.
npx skills add https://github.com/seranking/seo-skills --skill site-audit-to-social-distribution
Close the loop between *finding* SEO problems (SE Ranking) and *fixing and promoting* them (Planable). Planable's Universal content pages hold the rewritten page copy so it can be reviewed with comments and formally approved before anyone publishes it to the site; the social layer schedules posts that distribute the refreshed page.
list_pages; if the Universal page is missing, ask the user to add one.Before doing anything else, verify both MCPs are reachable:
DATA_getSubscription. If it fails or returns an auth error, stop immediately and tell the user:> "The SE Ranking connector isn't responding — please reconnect it before we continue. Setup guide: https://seranking.com/api/integrations/mcp/"
list_workspaces. If it fails or returns an auth error, stop immediately and tell the user:> "The Planable connector isn't responding — please reconnect it before we continue. Setup guide: https://help.planable.io/hc/en-us/articles/27538577098780-How-to-connect-Planable-MCP-to-your-AI-tools"
Only continue to the process steps below once both calls return a successful response.
A full crawl is slow and consumes plan crawl budget, so check for an existing audit first:
PROJECT_listAudits (or DATA_listAudits) — if a recent finished audit exists for the domain, reuse it; read it with PROJECT_getAuditReport / DATA_getAuditReport(audit_id). Note the audit date and tell the user how fresh it is — offer to re-run if it's stale (more than a month or two old).PROJECT_createAudit(domain, settings?) → poll readiness → getAuditReport. Without a project, use DATA_createStandardAudit (or createAdvancedAudit). Scope max_pages sensibly for large sites.Then list the specific pages behind each issue with DATA_getAuditPagesByIssue / getIssuesByUrl. Focus on issues that move rankings and map to page copy: duplicate/missing titles & descriptions, missing H1s, thin content, plus technical flags (broken links, indexability, redirects).
For the pages worth fixing, understand what "good" looks like:
DATA_getDomainCompetitors + DATA_getDomainKeywordsComparison — what competitors rank for on these topics that this page doesn't (discard off-brand/junk gap terms — see the seo-gaps skill's note).DATA_getSerpResults for the page's target query — the dominant content format and SERP features to match.DATA_getRelatedKeywords + DATA_getKeywordQuestions — subtopics and questions the rewrite should cover (query a few seeds; each returns only a handful).Build a ranked fix list: page URL → issue(s) → opportunity (target query, volume, gap) → effort. Lead with pages that combine a real issue and real demand. Surface this list to the user and confirm which pages to draft.
For each agreed page, write the improved copy (title, meta description, H1/H2 outline, and body or detailed section guidance grounded in steps 1–2). Create it in Planable on the Universal content page:
create_post(workspaceId, universalPageId, text) — put the live page URL in the body so reviewers know which page it maps to.
This gives the team a real review object:
create_comment(workspaceId, postId, text) for feedback and questions (teamOnly: true for internal notes).update_post(workspaceId, postId, text) to apply revisions in place.approve_post(workspaceId, postId) for sign-off.Keep the page-copy drafts separate from the social posts — create_grouped_post splits universal and non-universal pages into different sub-groups, so don't try to sync website copy and social captions in one grouped post.
For each approved page refresh, draft social posts that announce or support it — create_post per platform or create_grouped_post for synced copy across social pages (remember a grouped post shares one text, so mind the strictest platform's length). Tie them to the same campaign with a label (e.g. "content-refresh"); note labels are per-workspace, so if social lives in a different workspace than the Universal page, create the label there too.
Scheduling — ask before creating. Don't guess dates or leave everything undated by default. Ask how the user wants the batch dated and offer: spread evenly across a window (e.g. the next 7 days, one post per slot at a sensible hour), a fixed cadence/interval (e.g. every weekday at 10:00, laid out from a start date they give), manual dates per post, or no dates yet (undated drafts to place on the calendar later). Convert each chosen time to ISO 8601 and pass it as scheduledAt. Keep posts as proposed drafts — don't set publishAtScheduledDate — so nothing auto-publishes; only set it true if the user explicitly wants auto-publishing. Scheduled times are treated as UTC, so confirm the timezone or state that times are UTC.
The approved page copy is ready for whoever owns the website/CMS to publish — that step is manual and outside these MCPs. Summarise: which pages were drafted, their review/approval state, and the social posts queued to distribute them. Offer to re-audit after changes ship to confirm the issues cleared.
Keep these in mind when writing the page-rewrite copy and the supporting social content meant to target a specific keyword or close an AI-visibility gap:
max_pages when you must crawl.list_pages and run each layer where its pages live.approve_post only works if the workspace has an approval workflow; if not, use comments for sign-off and note it.Take seranking/site-audit-to-social-distribution from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.