从托管层看SEO与外链建设:2026年运营商视角
2026年托管服务如何影响索引与链接权重:保持页面可收录、在建站前审查老域名、无痕迹外链建设,以及关于基础设施对SEO实际能做什么和不能做什么的客观分析。
阅读文章 →知识库
Zinnector® 的每一个命令,均与 zinnector --help 所列出的完全一致——包含参数、标志和默认值、一个可运行的示例及其输出结果——全部直接生成自 CLI 本身,因此绝不会与您已安装的版本发生脱节。
<!-- generated by cli/scripts/command-reference.mjs from the CLI's own command definitions — do not edit by hand -->
Every command Zinnector® 0.1.4 understands — 43 in all, exactly as zinnector --help lists them — with its options, a runnable example, and what you should see. This page is generated from the CLI itself, so it cannot disagree with the tool you have installed; if a command here is missing on your machine, run npm install -g zinnector@latest.
Install it with npm install -g zinnector on Node 24 or newer, then check the install with zinnector --version and zinnector --help. The getting-started guide walks through the first five minutes; this page is the reference you come back to.
Every command takes -h, --help. These global options go before the command name:
| option | what it does | |---|---| | -V, --version | print the version | | --profile <name> | use a named credential profile |
zinnector newScaffold a WordPress project you can run immediately.
zinnector new [options] [name]
| argument | required | what it is | |---|---|---| | name | no | |
| option | what it does | default | |---|---|---| | -t, --template <kind> | one of: site, plugin, theme | "site" | | --php <version> | PHP version to develop against | "8.3" | | --wp <version> | WordPress version for the local runtime | "latest" | | --runtime <name> | playground or docker | "playground" | | --here | scaffold into the current directory instead of a new one | |
Example
zinnector new my-site
What you see — captured — 0.1.2 on Linux
Created my-site · site
──────────────────────────
+ .gitignore
+ README.md
+ wp-content/mu-plugins/000-zinnector-dev.php
+ wp-content/plugins/.gitkeep
+ wp-content/themes/.gitkeep
+ zinnector.json
php 8.3
wordpress latest
runtime playground
→ run it:
cd my-site
zinnector dev
→ then, when you have a hosting slot:
zinnector link # point it at a site
zinnector check # pre-flight before you push
zinnector push
zinnector devRun this project locally — no Docker required.
zinnector dev [options]
| option | what it does | default | |---|---|---| | --php <version> | PHP version to run (5.2–8.5 on playground, 7.4–8.5 on docker) | | | --wp <version> | WordPress version | | | -p, --port <port> | port to serve on | | | --runtime <name> | playground (default) or docker | | | --login | log in as admin automatically | true | | --no-login | do not log in automatically | | | --once | boot, report what is running, then stop | | | --yes | install the local runtime without asking | | | --reset-runtime | delete the installed runtime and install it again | | | -v, --verbose | show the runtime's own output | |
Example
cd my-site
zinnector dev
What you see — captured — 0.1.2. The first run asks once to download the WordPress runtime (~570 MB); pass --yes to skip the question
my-site · WordPress Playground (WASM, no Docker)
───────────────────────────────────────────────────
serving a WordPress project
from /home/you/my-site
php 8.3
wordpress latest
✔ running at http://127.0.0.1:9400
admin: http://127.0.0.1:9400/wp-admin (already signed in)
Ctrl-C to stop
zinnector loginSign in — with your own account in the browser, or with an API key.
zinnector login [options]
| option | what it does | default | |---|---|---| | --profile <name> | store under a named profile | "default" | | --api <url> | API base URL | "https://api.zinndigital.com" | | --api-key | paste a per-organisation API key instead of signing in as yourself | | | --issuer <url> | the sign-in service | "https://auth.zinndigital.com/realms/zinn" | | --no-browser | print the sign-in link without trying to open a browser | |
Example
zinnector login
What you see — the key is typed at the prompt, never on the command line. In CI, pipe it: echo "$ZINN_API_KEY" | zinnector login --profile ci
Sign in to Zinn Digital® · https://api.zinndigital.com
────────────────────────────────────────────────────
API key: ••••••••••••••••••••••••••••
✔ signed in as you@example.com (Acme Ltd) — profile “default”
→ next: zinnector sites
zinnector logoutForget a stored sign-in.
zinnector logout [options]
| option | what it does | default | |---|---|---| | --profile <name> | which profile to forget | "default" |
Example
zinnector logout
What you see
✔ signed out of profile “default”
zinnector whoamiShow who this CLI is signed in as, and what it can reach.
zinnector whoami [options]
| option | what it does | default | |---|---|---| | --profile <name> | use a named profile | | | --scopes | list the permissions an API key carries | | | --json | machine-readable output | |
Example
zinnector whoami --scopes
What you see
Signed in · https://api.zinndigital.com
─────────────────────────────────────────
key zdk_live_…3f9a
organisation Acme Ltd
profile default
· sites.read
· sites.deploy
· dns.manage
zinnector sitesList the sites this key can see.
zinnector sites [options]
| option | what it does | default | |---|---|---| | --json | machine-readable output | | | --status <status> | only sites in this status | |
Example
zinnector sites
What you see
Sites · 2
───────────
domain status php target id
example.com active php 8.3 fleet 01a03f39-730a-7dc4-84b0-5d4f7582dd04
shop.test active php 8.2 fleet 01a03f39-9c11-7b02-a7e0-2e4d0c5f1b77
zinnector statusEverything the platform knows about one site.
zinnector status [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --json | machine-readable output | |
Example
zinnector status example.com
What you see
example.com · 01a03f39-730a-7dc4-84b0-5d4f7582dd04
────────────────────────────────────────────────────
status active
product line mainstream
stack wordpress
● PHP
version 8.3
applied yes
● Quota
disk 412 MB of 10 GB
files 18,204 of 250,000
● Deploy
repository acme/example-site (main)
last 2 hours ago — success
zinnector shareGive one person access to ONE site — a developer, a designer, a client.
zinnector share [options] <site> <email>
| argument | required | what it is | |---|---|---| | site | yes | | | email | yes | |
| option | what it does | default | |---|---|---| | --role <role> | what they may do: viewer, editor, manager | | | --reason <text> | why they need it — kept with the grant for the audit trail | | | --until <date> | when access ends on its own (YYYY-MM-DD); omit for until-revoked | | | --json | machine-readable output | |
Example
zinnector share example.com dev@agency.test --role editor --reason "rebuild the checkout"
What you see — the exact shape the command prints, from the source (W40-DEVTOOL added these after this file was last captured); your domains, ids and dates will differ
Shared example.com · 01a03f39-730a-7dc4-84b0-5d4f7582dd04
────────────────────────────────────────────────────────────
✔ invited dev@agency.test as editor
They have no account yet, so an invitation has been emailed. Until they
sign in and accept it they can see nothing; the moment they do, the site is theirs.
→ what they do next, on their own machine:
npm i -g zinnector && zinnector login # sign in as themselves
zinnector clone example.com # pull the files down
zinnector collaboratorsWho has been given access to a site, and whether they have accepted.
zinnector collaborators [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --json | machine-readable output | |
Example
zinnector collaborators example.com
What you see — the exact shape the command prints, from the source (W40-DEVTOOL added these after this file was last captured); your domains, ids and dates will differ
Access to example.com · 2
────────────────────────────
who role status ends why grant
dev@agency.test editor invited — not yet accepted — rebuild the checkout 01a03f39-9c11-7b02-a7e0-2e4d0c5f1b77
ana@studio.test viewer active until 2026-12-31 quarterly audit 01a03f39-af52-7e19-93c1-6b0d2a7c4e11
zinnector unshareTake a person's access to a site back — by email or grant id.
zinnector unshare [options] <site> <who>
| argument | required | what it is | |---|---|---| | site | yes | | | who | yes | |
| option | what it does | default | |---|---|---| | --yes | do not ask | |
Example
zinnector unshare example.com dev@agency.test --yes
What you see — the exact shape the command prints, from the source (W40-DEVTOOL added these after this file was last captured); your domains, ids and dates will differ
✔ withdrew the invitation to dev@agency.test
zinnector invitationsThe invitations waiting for you, and accept one.
zinnector invitations [options] [command]
Example
zinnector invitations
What you see — the exact shape the command prints, from the source (W40-DEVTOOL added these after this file was last captured); your domains, ids and dates will differ; with no subcommand it runs list
Invitations · 1
──────────────────
Acme Ltd has shared example.com with you as editor 01a03f39-9c11-7b02-a7e0-2e4d0c5f1b77
→ accept one: zinnector invitations accept <id>
zinnector invitations listInvitations addressed to the account you are signed in as.
zinnector invitations list [options]
| option | what it does | default | |---|---|---| | --json | machine-readable output | |
Example
zinnector invitations list
What you see — the exact shape the command prints, from the source (W40-DEVTOOL added these after this file was last captured); your domains, ids and dates will differ
Invitations · 1
──────────────────
Acme Ltd has shared example.com with you as editor 01a03f39-9c11-7b02-a7e0-2e4d0c5f1b77
→ accept one: zinnector invitations accept <id>
zinnector invitations acceptAccept an invitation — the site is yours the moment this returns.
zinnector invitations accept [options] <id>
| argument | required | what it is | |---|---|---| | id | yes | |
Example
zinnector invitations accept 01a03f39-9c11-7b02-a7e0-2e4d0c5f1b77
What you see — the exact shape the command prints, from the source (W40-DEVTOOL added these after this file was last captured); your domains, ids and dates will differ
✔ you now have access to example.com
zinnector linkPoint this project at a hosting slot (and connect its repository).
zinnector link [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --repo <owner/name> | connect this repository to the site on the platform | | | --provider <github\|gitlab> | git provider, when it cannot be inferred | | | --branch <name> | branch a push deploys from | | | --no-repo | only write zinnector.json; do not touch the platform | |
Example
zinnector link example.com --repo acme/example-site --branch main
What you see
✔ this project deploys to example.com (01a03f39-730a-7dc4-84b0-5d4f7582dd04)
written to zinnector.json — commit it so everyone deploys to the same slot
✔ the platform will deploy acme/example-site (main)
→ next: zinnector check
zinnector pullPull a hosted site's files into this project for local dev — and re-run to re-sync.
zinnector pull [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --via <seam> | auto (default), git, or backup | "auto" | | --fresh | take a new backup rather than using the latest one (spends an on-demand slot) | | | --max-age <hours> | accept the latest backup if it is younger than this | "24" | | --full | the whole document root, WordPress core included (default: wp-content only) | | | --no-uploads | leave wp-content/uploads (media) behind | | | --live-config | also write wp-config.php — it holds the LIVE database credentials | | | --clean | empty wp-content before extracting, so deletions on the site are mirrored | | | --dry-run | say what would happen and stop | | | --yes | do not ask | |
Example
zinnector pull
What you see
Pull example.com · 01a03f39-730a-7dc4-84b0-5d4f7582dd04
─────────────────────────────────────────────────────────────
● via git — the site syncs to its own repository and this is a clone of it
✔ fast-forwarded 3 commits 4f1c2a9b → 9d2e7c14
● not synced, and why
✖ database the local playground has its own; the site's is not copied
✖ offloaded media objects in storage are not in the site's files
✖ anything outside the repository only wp-content syncs
→ next: zinnector dev
zinnector cloneMake a local project from a hosted site: clone its repository or pull its files.
zinnector clone [options] <site> [dir]
| argument | required | what it is | |---|---|---| | site | yes | | | dir | no | |
| option | what it does | default | |---|---|---| | --via <seam> | auto (default), git, or backup | "auto" | | --fresh | take a new backup rather than using the latest one | | | --full | the whole document root, WordPress core included | | | --no-uploads | leave wp-content/uploads (media) behind | | | --live-config | also write wp-config.php — it holds the LIVE database credentials | | | --yes | do not ask | |
Example
zinnector clone client.example.com
What you see
Clone client.example.com · client.example.com
──────────────────────────────────────────────────────
✔ wrote client.example.com/zinnector.json (php 8.3, wordpress 6.7.1)
● via backup — the site does not sync to a repository
✔ downloaded 214 MB and extracted wp-content
● not synced, and why
✖ database the local playground has its own; the site's is not copied
✖ offloaded media objects in storage are not in the site's files
✖ wp-config.php holds the live database credentials (--live-config to write it)
✖ WordPress core the runtime supplies the version the slot runs (--full to take it)
→ next: zinnector dev
→ run it:
cd client.example.com
zinnector dev
zinnector syncTwo-way sync between a site's live files and its repository.
zinnector sync [options] [command]
Example
zinnector sync --help
What you see — with no subcommand, zinnector sync <site> is sync status
Usage: zinnector sync [options] [command]
two-way sync between a site's live files and its repository
site → repository zinnector sync run commits the live files and pushes the branch
repository → site zinnector push builds the branch and publishes it
zinnector sync statusWhere two-way sync stands, and its last runs.
zinnector sync status [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --json | machine-readable output | |
Example
zinnector sync status example.com
What you see — captured from a real run of 0.1.4 against a test site on 2026-09-12; the domain and ids are replaced with example values
Two-way sync — example.com
──────────────────────────
repository acme/example-site (main)
available yes
sync on
state synced
last sync 2026-09-12T22:51:41.539832Z
note Started from acme/example-site@main.
run files commit when
synced 2 changed da85d73cef5f 2026-09-12T22:52:10.117301Z
zinnector sync onTurn two-way sync on (pushes nothing by itself).
zinnector sync on [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --subdir <path> | only sync this subdirectory of the site | | | --json | machine-readable output | |
Example
zinnector sync on example.com
What you see — needs a repository connected on your own GitHub account; it pushes nothing by itself
✔ two-way sync is on
Two-way sync — example.com
…
→ next: zinnector sync run
zinnector sync offTurn two-way sync off.
zinnector sync off [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --subdir <path> | only sync this subdirectory of the site | | | --json | machine-readable output | |
Example
zinnector sync off example.com
What you see
✔ two-way sync is off
zinnector sync runCommit the site's live files to its repository now.
zinnector sync run [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --json | machine-readable output | |
Example
zinnector sync run example.com
What you see — captured from a real run of 0.1.4 against a test site on 2026-09-12; the domain and ids are replaced with example values. A run the repository has moved past is HELD instead: nothing is pushed or overwritten, the command exits 1 and names the next step
✔ committed 2 changed files da85d73cef5f
Two-way sync — example.com
…
→ next: git pull in your clone
zinnector sync resolveClear a held sync by choosing which side wins.
zinnector sync resolve [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --keep <side> | site (commit the site on top) or repository (discard the site's unsynced changes) | | | --yes | do not ask | | | --json | machine-readable output | |
Example
zinnector sync resolve example.com --keep repository --yes
What you see — captured from a real run of 0.1.4 against a test site on 2026-09-12; the domain and ids are replaced with example values. Without --yes it asks first, and refuses outright when there is no terminal to ask in
✔ kept the repository
Two-way sync — example.com
…
state synced
zinnector checkCompare this project against the slot you are about to deploy to.
zinnector check [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --probe | boot the local runtime and MEASURE its php, rather than trusting zinnector.json | | | --all | show passing checks too | | | --strict | also fail when something could not be checked | | | --json | machine-readable output | |
Example
zinnector check
What you see — captured from a real run against a slot on PHP 7.4 — the whole point of the command
Pre-flight — example.com · 01a03f39-730a-7dc4-84b0-5d4f7582dd04
──────────────────────────────────────────────────────────────────
local php 8.3 1,284 files, 12.4 MB
slot php 7.4.33 target fleet
local php is the version DECLARED in zinnector.json — run with --probe to measure it
✖ high php 8.3 locally, 7.4 on the slot
You built against PHP 8.3, which is newer than the PHP 7.4 the
slot runs. Code that uses syntax or functions added after the
slot's version will fatal at runtime, not at deploy time.
try zinnector php 8.3
⚠ warn the slot runs php 7.4, which is past end of life
try zinnector php --list
? unknown local php extensions could not be enumerated
try zinnector dev --once
5 passed · 3 to look at · 2 could not be checked
none of this blocks a deploy — zinnector push --force proceeds anyway
zinnector pushPre-flight, push your commits, and deploy.
zinnector push [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | -f, --force | deploy even when pre-flight has findings | | | --skip-checks | do not run pre-flight at all | | | --probe | measure the local runtime during pre-flight instead of trusting zinnector.json | | | --no-wait | trigger the deploy and exit without watching it | | | --no-git | do not run git push; deploy whatever the platform already has | | | --dry-run | do everything except the deploy | |
Example
zinnector push
What you see
Deploy to example.com · 01a03f39-730a-7dc4-84b0-5d4f7582dd04
───────────────────────────────────────────────────────────────
✔ pre-flight: 8 passed · 0 to look at · 2 could not be checked
→ pushing main (4f1c2a9b add the contact form)
✔ pushed
● deploy 7c0e… started — watching
✔ deployed 4f1c2a9b in 48s
status success
commit 4f1c2a9b
url https://example.com
zinnector deployRedeploy what the platform already has, without pushing.
zinnector deploy [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --no-wait | trigger and exit | |
Example
zinnector deploy example.com
What you see
Redeploy example.com · 01a03f39-730a-7dc4-84b0-5d4f7582dd04
───────────────────────────────────────────────────────────────
● deploy 7c0e… started — watching
✔ deployed 4f1c2a9b in 41s
zinnector deploysA site's deploy history.
zinnector deploys [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --json | machine-readable output | | | -n, --limit <n> | how many to show | "10" |
Example
zinnector deploys example.com
What you see
Deploys — example.com · 3
───────────────────────────
status commit branch trigger started message
success 4f1c2a9b main cli 2 hours ago add the contact form
success b21d70e4 main push yesterday fix footer links
failed 9e8a0c13 main push 3 days ago build: composer install exited 1
zinnector phpShow or switch a site's PHP version.
zinnector php [options] [version]
| argument | required | what it is | |---|---|---| | version | no | |
| option | what it does | default | |---|---|---| | -s, --site <site> | site id or domain | | | --list | list the versions the platform offers | | | --json | machine-readable output | |
Example
zinnector php 8.3 --site example.com
What you see — with no version it shows the current one; --list shows what the platform offers for this site's product line
PHP — example.com
─────────────────
version 7.4 → 8.3
applied the machine will confirm shortly
switch example.com to php 8.3? [y/N] y
✔ php 8.3 requested
⚠ recorded, but the machine has not confirmed it yet
zinnector quotaDisk, files and database usage against what the plan grants.
zinnector quota [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --json | machine-readable output | |
Example
zinnector quota example.com
What you see
Quota — example.com
───────────────────
disk 412 MB of 10 GB (4%)
files 18,204 of 250,000 (7%)
database 38 MB of 1 GB (4%)
zinnector dbDatabase size, and single-use links into phpMyAdmin and the file manager.
zinnector db [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --json | machine-readable output | |
Example
zinnector db example.com
What you see — the phpMyAdmin and file-manager links are single-use and expire; do not paste them anywhere
Database — example.com
──────────────────────
engine mariadb 10.11
size 38 MB
phpmyadmin https://…/pma/sso?token=… (single use)
files https://…/files/sso?token=… (single use)
zinnector logsTail a site's access and error logs.
zinnector logs [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --access | only the access log | | | --error | only the error log | | | --build | the build log of the most recent deploy instead | | | --json | machine-readable output | |
Example
zinnector logs example.com --error
What you see — --access for the access log, --build for the last deploy's build log (a site not built by a build provider shows the deploy's own steps); with no flag both site logs are shown, and a log that could not be read says so instead of looking empty
Error log — example.com
───────────────────────
[06-Sep-2026 10:12:44 UTC] PHP Warning: Undefined variable $x in /wp-content/plugins/my-plugin/my-plugin.php on line 12
zinnector wpRun an allow-listed WP-CLI command on a site.
zinnector wp [options] <command...>
| argument | required | what it is | |---|---|---| | command... | yes | |
| option | what it does | default | |---|---|---| | -s, --site <site> | site id or domain | | | --commands | list what the platform will run | | | --json | machine-readable output | |
Example
zinnector wp plugin list --site example.com
What you see — the allow-list is served by the platform — zinnector wp --commands prints it
+-----------------+----------+--------+---------+
| name | status | update | version |
+-----------------+----------+--------+---------+
| my-plugin | active | none | 1.0.0 |
| zinn-cache | active | none | 2.4.1 |
+-----------------+----------+--------+---------+
zinnector backupList and take site backups.
zinnector backup [options] [command]
Example
zinnector backup list example.com
backup on its own prints its subcommands; see backup list and backup now below
zinnector backup listList a site's backups and what its plan grants.
zinnector backup list [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
| option | what it does | default | |---|---|---| | --json | machine-readable output | |
Example
zinnector backup list example.com
What you see
Backups — example.com · 3
───────────────────────────
status taken size id
complete today 03:00 412 MB bk_01a0…
complete yesterday 410 MB bk_019f…
complete 2 days ago 409 MB bk_019e…
retention 30 days
off-site yes
zinnector backup nowTake an on-demand backup.
zinnector backup now [options] [site]
| argument | required | what it is | |---|---|---| | site | no | |
Example
zinnector backup now example.com
What you see
✔ backup started — zinnector backup list example.com shows it when it completes
zinnector domainsList the domains this key can see.
zinnector domains [options]
| option | what it does | default | |---|---|---| | --json | machine-readable output | |
Example
zinnector domains
What you see
Domains · 2
─────────────
domain status registrar renewal expires
example.com active zinn auto 2027-03-14
shop.test active external — —
zinnector dnsRead and change DNS records.
zinnector dns [options] [command]
Example
zinnector dns list example.com
dns on its own prints its subcommands; see dns list, dns add and dns rm below
zinnector dns listList a domain's DNS records.
zinnector dns list [options] <domain>
| argument | required | what it is | |---|---|---| | domain | yes | |
| option | what it does | default | |---|---|---| | --type <type> | only records of this type | | | --json | machine-readable output | |
Example
zinnector dns list example.com
What you see
DNS — example.com · 4 records
───────────────────────────────
type name value ttl
A @ 203.0.113.10 300 rec_7f…
A www 203.0.113.10 300 rec_80…
MX @ 10 mail.example.com 3600 rec_81…
TXT @ "v=spf1 -all" 3600 rec_82…
zinnector dns addCreate a DNS record.
zinnector dns add [options] <domain> <type> <name> <value>
| argument | required | what it is | |---|---|---| | domain | yes | | | type | yes | | | name | yes | | | value | yes | |
| option | what it does | default | |---|---|---| | --ttl <seconds> | time to live | "3600" | | --priority <n> | priority, for MX and SRV | | | --proxied | route through the CDN | | | -y, --yes | do not ask | |
Example
zinnector dns add example.com TXT _acme "token" --ttl 300
What you see — the record is shown and confirmed before it is written; pass --yes to skip the question
Add a DNS record to example.com
───────────────────────────────
type TXT
name _acme
value "token"
ttl 300
create it? [y/N] y
✔ created TXT _acme
zinnector dns rmDelete a DNS record.
zinnector dns rm [options] <domain> <recordId>
| argument | required | what it is | |---|---|---| | domain | yes | | | recordId | yes | |
| option | what it does | default | |---|---|---| | -y, --yes | do not ask | |
Example
zinnector dns rm example.com rec_7f3a
What you see
⚠ deleting A @ 203.0.113.10 from example.com
delete it? [y/N] y
✔ deleted
zinnector mailList mail services.
zinnector mail [options]
| option | what it does | default | |---|---|---| | --json | machine-readable output | |
Example
zinnector mail
What you see
Mail services · 1
───────────────────
domain status provider mailboxes dns
example.com active zinn 3 ok
zinnector bulkRun one operation across many sites (cache_purge, malware_scan, sitemap, block_ip).
zinnector bulk [options] <operation>
| argument | required | what it is | |---|---|---| | operation | yes | |
| option | what it does | default | |---|---|---| | --all | every site this key can see | | | --site <site...> | specific sites, by id or domain | | | --status <status> | every site in this status | | | -y, --yes | do not ask | | | --json | machine-readable output | |
Example
zinnector bulk cache_purge --all
What you see — one call to the platform for the whole selection, not one per site; the selection is shown and confirmed first
Bulk cache_purge · 2 sites
────────────────────────────
· example.com
· shop.test
run cache_purge on 2 sites? [y/N] y
✔ cache_purge queued for 2 sites
zinnector aiAsk the Zinn Digital® assistant, with this project as context.
zinnector ai [options] <question...>
| argument | required | what it is | |---|---|---| | question... | yes | |
| option | what it does | default | |---|---|---| | -s, --site <site> | ask about a particular site | | | --no-context | do not send anything about the local project | | | --json | machine-readable output | |
Example
zinnector ai "why is my deploy failing?"
What you see — runs on the platform against your own account; from inside a project it sends the project's shape and site id, never file contents
Zinn Digital® assistant
──────────────────────
Your last deploy of example.com failed at the build step: `composer install` exited 1 because
`vendor/` is committed alongside a lock file that no longer matches it. Remove `vendor/` from
the repository or run `composer update` and commit the new lock file, then `zinnector push`.
zinnector mcpRun a stdio bridge to the hosted MCP server — for Claude Desktop and other local-only clients.
zinnector mcp [options]
Example
ZINN_MCP_TOKEN=zmcp_live_… zinnector mcp
What you see — started BY an AI client such as Claude Desktop, never by hand — it speaks MCP on stdin and stdout. Proven from Claude Code 2.1.270 against the live server on 2026-09-12
zinnector 0.1.4: MCP bridge to https://api.zinndigital.com/v1/mcp
| variable | effect | |---|---| | ZINNECTOR_TOKEN | an API key, used instead of a stored profile — this is how CI authenticates | | ZINNECTOR_API | API base URL (default https://api.zinndigital.com) | | ZINNECTOR_DEBUG=1 | print stack traces and the runtime installer's own output | | ZINNECTOR_CACHE_DIR | where the WordPress runtime and any managed Node are kept (default ~/.cache/zinnector) | | ZINNECTOR_CONFIG_DIR | where the API key profile file lives (default ~/.config/zinnector) | | NO_COLOR | disable colour |
0 success · 1 a finding or a refusal · 70 an internal error · 77 authentication or permission · 78 unsupported Node.
关于托管、搜索引擎优化以及大规模网站运营的最新文章。
2026年托管服务如何影响索引与链接权重:保持页面可收录、在建站前审查老域名、无痕迹外链建设,以及关于基础设施对SEO实际能做什么和不能做什么的客观分析。
阅读文章 →一份打造快速、安全 WordPress 的实用清单:服务器级缓存、按站点划分的对象缓存、值得使用的少数插件、保持技术栈更新,以及绝不能缓存的 WooCommerce 页面。
阅读文章 →真正让优质托管主机区别于带有控制面板的廉价虚拟空间的核心要素——数据迁移、备份、隔离、真正的缓存以及诚实的扩容方案——以及如何在您做出承诺前对其进行评估。
阅读文章 →