{"skill":{"slug":"serpzilla-seo-guest-posting","displayName":"Serpzilla SEO Guest Posting Skill for OpenClaw","summary":"Skill for SEO promotion by purchasing guest posts on trusted donor websites using the Serpzilla platform","description":"---\nname: serpzilla-seo-guest-posting\ndescription: Skill for SEO promotion by purchasing guest posts on trusted donor websites using the Serpzilla platform\nversion: 1.0.0\nauthor: Stanislavus\nuser-invocable: true\ntriggers:\n  - buy guest post for SEO\n  - find donor site for guest posting\n  - serpzilla search donors\n  - configure serpzilla mcp\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"🦖\",\n        \"requires\":\n          {\n            \"bins\": [\"mcporter\"],\n            \"env\": [\"SERPZILLA_LOGIN\", \"SERPZILLA_API_TOKEN\"],\n          },\n        \"primaryEnv\": \"SERPZILLA_API_TOKEN\",\n      },\n  }\n---\n\n# Serpzilla SEO Guest Posting\n\n## Description\n\nThis skill is designed for SEO specialists and webmasters who want to improve their website's backlink profile.\nIt allows you to automate the search and purchase of guest posts (article placements on donor sites \nthat pass link equity to your promoted resource) through OpenClaw. Interaction with the platform is done \nvia the Serpzilla MCP server, managed by the `mcporter` tool.\n\n## Prerequisites\n\nThe following components must be installed and configured on the server where OpenClaw runs:\n\n1. **Docker** – to run the Serpzilla MCP server in an isolated container.\n2. **Node.js and npm** – to install and run `mcporter`.\n3. **OpenClaw** – the agent runtime environment.\n\nBefore using any Serpzilla commands, verify the MCP server is already registered with `npx mcporter list serpzilla`.\n\n## Preliminary Setup\n\nTo fully use this skill, you need to register and configure the connection to the Serpzilla API.\n\n### 1. Registration and API token\n\n1. Register as an advertiser on [Serpzilla.com](https://serpzilla.com/).\n2. Go to the security section at [https://passport.serpzilla.com/security/token/](https://passport.serpzilla.com/security/token/).\n3. Copy your **API token** and remember your **login** (email) used for registration.\n\n### 2. Install mcporter and add the Serpzilla MCP server\n\n`mcporter` is a CLI tool for managing MCP servers. OpenClaw uses it to communicate with external services.\n\n**Install mcporter globally:**\n```bash\nnpm install -g mcporter\n```\n\nAdd the Serpzilla MCP server:\n\nIt is necessary to request the user to provide values for the environment variables SERPZILLA_LOGIN\n(the user's chosen login for registering with serpzilla.com, usually an email address)\nand SERPZILLA_API_TOKEN (the API token received by the user).\nRun the following command, replacing XXX and YYY with user's values:\n\n```bash\nnpx mcporter config add serpzilla --stdio \"docker run -i --rm --env SERPZILLA_LOGIN=XXX --env SERPZILLA_API_TOKEN=YYY stanislavusbest/serpzilla-mcp-stdio-server:v1.0.8\"\n```\n\n### 3. Verify the configuration\n\nCheck that the MCP server was added successfully:\n\n```bash\nnpx mcporter list serpzilla\n```\n\n## Using the skill\n\nAfter completing the preliminary setup, the skill is ready to use. The typical workflow for purchasing\na guest post is described below.\n\nThe main entities in the Serpzilla domain for purchasing Guest Posts are:\n\n- *Project* - a container for the entities listed below. To begin posting, you must create a project. A project is \n  created for a specific domain, but there are no restrictions on promoting other domains within the project.\n- *URL* - the address of the page being promoted for SEO. Guest Post placements will be purchased to promote this \n  page. The URL is linked to the project.\n- *Article* - the article to be posted on donor sites. It can be uploaded to the Serpzilla system for use when \n  purchasing placements. After uploading to Serpzilla, articles are reviewed by moderators. For this reason, Articles have statuses. Articles are linked to the project.\n- *Text* - the anchor for the link being posted on the donor page/site. If the user uploads an Article, the Text and \n  URL for the promotion are determined automatically. Text is linked to the project.\n- *Content* - a general entity for Article and Content. It also has its own system for transitioning between statuses.\n- *Placement* - the Guest Post placement being purchased. Placement has a workflow that is reflected in the status \n  transition. Placement is linked to Text and URL.\n\nDescription of placement types:\n\n| Format    | Type                              | Content Provided By          | Required Fields When Buying | Notes                                                                                                 |\n|-----------|-----------------------------------|------------------------------|-----------------------------|-------------------------------------------------------------------------------------------------------|\n| `news`    | Advertiser’s Article (Guest Post) | Advertiser (client)          | `article_id`, `url_id`      | `text_id` not required. The article is fully provided by the client.                                  |\n| `review`  | Publisher’s Article (Guest Post)  | Publisher (webmaster)        | `url_id`, `text_id`         | The webmaster writes a review article. This placement is **more expensive**.                          |\n| `link`    | In The News (Link Insertion)      | Publisher (webmaster)        | `url_id`, `text_id`         | The webmaster writes an article — not a review, but a link naturally embedded into a site news piece. |\n| `archive` | In The Archive (Link Insertion)   | N/A (article already exists) | `url_id`, `text_id`         | Placement occurs in an already existing article on the site.                                          |\n\n\nTo get current user information including account balance:\n\n```bash\nnpx mcporter call serpzilla.get_user_info\n```\n\nTo top up user's balance, refer user to visit: https://passport.serpzilla.com/deposit/\n\n### Step 1: Create a project for your promoted website\n\nCreate a project inside Serpzilla for your domain. Replace **YOUR_SITE.COM** with your actual website URL\n(without `https://`):\n\n```bash\nnpx mcporter call serpzilla.create_project domain=YOUR_SITE.COM\n```\n\n*Important:* Save the returned **PROJECT_ID** (ID field) – you will need it later.\n\nWhen a project is created, Serpzilla automatically generates:\n\n- One **URL** entity with the `domain` as the URL (e.g., https://YOUR_SITE.COM)\n- One **Text** entity with the domain name as the default anchor\n\nYou can later add more URLs and Texts for specific landing pages and anchors.\n\nTo view all your existing projects:\n\n```bash\nnpx mcporter call serpzilla.list_projects\n```\n\n### Step 2. Content preparation\n\nYou must upload an article **before** purchasing a placement. The article will be reviewed by Serpzilla moderators.\nOnly `approved` articles can be used for placements.\n\n**Add an article:**\n\n```bash\nnpx mcporter call serpzilla.add_article project_id=PROJECT_ID url='FULL_URL' title='ARTICLE_TITLE' \\\nmeta_title=\"ARTICLE_META_TITLE\" body='ARTICLE_BODY'\n```\n\nParameters:\n\n- `url` – the full promotion URL (including `https://`), e.g., https://yoursite.com/product\n- `title` – internal title of the article (visible only in Serpzilla UI)\n- `meta_title` – meta title used by the publisher when posting\n- `body` – HTML content of the article, with your backlink(s) already inserted\n\n**Article moderation:**\n\n- After upload, the article status will be `pending`.\n- Moderation usually takes 1–2 business days.\n- If approved, status changes to `approved`; you can then use it in purchases.\n- If rejected, check the reason and re-upload a corrected version.\n\nCheck article status:\n\n```bash\nnpx mcporter call serpzilla.get_project_content_list project_id=PROJECT_ID\n```\n\n**For `review`, `link`, `archive` formats**\n\nNo article upload is needed. Serpzilla will use the `text_id` (anchor) and `url_id` (promoted page).\nThe webmaster writes the content according to the format.\n\n### Step 3: Search for donor sites\n\nWith your **PROJECT_ID**, you can search for available donor sites that accept your desired placement type.\n\n**Basic search command:**\n\n```bash\nnpx mcporter call serpzilla.search_sites project_id=PROJECT_ID link_type=link\n```\n\nValid link_type values: `news`, `review`, `link`, `archive`.\n\n**See all available filters (language, price range, DR, etc.):**\n\n```bash\nnpx mcporter list serpzilla --schema --json\n```\n\n**Get detailed information about a specific donor site:**\n\n```bash\nnpx mcporter call serpzilla.get_site_info site_id=SITE_ID\n```\n\nThis returns metrics (DR, traffic, language), status, price, placement examples, and more.\n\n### Step 4. Buying Guest Posts\n\n**IMPORTANT — User confirmation required before any purchase.**\n\nBefore executing a purchase, the agent MUST:\n\n1. Call `get_user_info` to retrieve the current account balance.\n2. Call `get_site_info site_id=SITE_ID` to retrieve the price for the selected donor site.\n3. Present the following information to the user:\n   - Site URL and price\n   - Current account balance\n   - Remaining balance after purchase (balance - price)\n4. Ask the user for **explicit confirmation** to proceed with the purchase.\n5. Only execute `purchase_placement` after receiving the user's confirmation.\n\nIf the user does not confirm, do NOT proceed with the purchase.\n\nOnce you have:\n- `PROJECT_ID`\n- `SITE_ID` (from search results)\n- For `news`: `article_id` (approved) and `url_id`\n- For `review`, `link`, `archive`: `url_id` and `text_id`\n\n**Important:** The `search_history_id` parameter must always be set to an empty string `\"\"` when buying.\n\n#### Examples for each format:\n\n**4.1 Purchase a `news` placement (Advertiser’s Article)**\n\n```bash\nnpx mcporter call serpzilla.purchase_placement project_id=PROJECT_ID link_type=news \\\n  site_id=SITE_ID article_id=ARTICLE_ID url_id=URL_ID search_history_id=\"\"\n```\n\nOptional: `is_content_need_approval=true` – if set, the placement will wait for your approval before the publisher starts.\nUseful if you want to review the final context.\n\n**4.2 Purchase a `review` placement (Publisher’s Article)**\n\n```bash\nnpx mcporter call serpzilla.purchase_placement project_id=PROJECT_ID link_type=review \\\n  site_id=SITE_ID url_id=URL_ID text_id=TEXT_ID search_history_id=\"\"\n```\n\n**4.3 Purchase a `link` placement (In The News – Link Insertion)**\n\n```bash\nnpx mcporter call serpzilla.purchase_placement project_id=PROJECT_ID link_type=link \\\n  site_id=SITE_ID url_id=URL_ID text_id=TEXT_ID search_history_id=\"\"\n```\n\n**4.4 Purchase an `archive` placement (In The Archive – Link Insertion)**\n\n```bash\nnpx mcporter call serpzilla.purchase_placement project_id=PROJECT_ID link_type=archive \\\n  site_id=SITE_ID url_id=URL_ID text_id=TEXT_ID search_history_id=\"\"\n```\nTo view purchased placements use:\n\n```bash\nnpx mcporter call serpzilla.get_project_placements project_id=PROJECT_ID\n```\n\n### Step 5. Managing Purchased Placements\n\n**IMPORTANT — User confirmation required before any placement action.**\n\nMany placement actions have financial implications:\n- `approve_seo` / `approve_content_seo` — releases funds to the publisher\n- `cancel_seo` / `cancel_from_*` — may trigger refunds or forfeiture\n- `terminate_seo` — permanently removes an approved backlink\n- `approve_from_arbitration_seo` — resolves a dispute in your favour\n\nBefore executing any `perform_placement_action`, the agent MUST:\n\n1. Inform the user about the action being taken and its financial impact.\n2. Ask the user for **explicit confirmation** to proceed.\n3. Only execute the action after receiving the user's confirmation.\n\nIf the user does not confirm, do NOT proceed with the action.\n\nAfter you purchase a placement, its lifecycle is managed through a set of statuses and transitions. \nYou can perform specific actions to influence the placement's progress, request changes, cancel orders, \nor handle edge cases like billing or failed purchases.\n\nAll actions are executed using the MCP tool:\n\n```bash\nnpx mcporter call serpzilla.perform_placement_action placement_ids=PLACEMENT_ID action=ACTION_NAME\n```\n\nThe [table by link](references/placement_actions.md) lists every SEO‑available action. \nFor each action we describe its purpose, the source status(es), the target status, and any relevant notes.\n\n\n## Additional resources\n\n* [Serpzilla API Documentation](https://serpzilla.com/api/)\n","tags":{"latest":"1.0.3"},"stats":{"comments":0,"downloads":540,"installsAllTime":20,"installsCurrent":1,"stars":1,"versions":4},"createdAt":1777982640511,"updatedAt":1780422481821},"latestVersion":{"version":"1.0.3","createdAt":1780422481821,"changelog":"site_url search parameter added","license":"MIT-0"},"metadata":{"setup":[{"key":"SERPZILLA_LOGIN","required":true},{"key":"SERPZILLA_API_TOKEN","required":true}],"os":null,"systems":null},"owner":{"handle":"stanislav-reshetnev","userId":"s17b0ks60apjwnefzpywnwwhsx863h7w","displayName":"Stanislav Reshetnev","image":"https://avatars.githubusercontent.com/u/11741276?v=4"},"moderation":null}