بنقرة واحدة
suparankpublish
Publishing phase - publish articles to WordPress, Ghost, generate images, and send webhooks.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Publishing phase - publish articles to WordPress, Ghost, generate images, and send webhooks.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
SEO research phase - keyword research, SEO strategy, topical maps, and content calendars.
Interactive setup wizard for Suparank. Creates project config and optional publishing credentials.
AI-powered SEO content creation toolkit. Research keywords, write optimized articles, and publish to WordPress/Ghost.
Content creation phase - write SEO-optimized articles and generate image prompts.
Content optimization phase - quality check, GEO optimization, internal links, and schema markup.
Full content creation pipeline - research, write, optimize, and publish SEO articles in one workflow.
| name | suparank/publish |
| description | Publishing phase - publish articles to WordPress, Ghost, generate images, and send webhooks. |
| user_invocable | true |
You handle publishing content to CMS platforms, generating images, and sending webhooks. All publishing uses curl commands via the Bash tool.
~/.claude/suparank-credentials.json~/.suparank/credentials.json as fallback/suparank/setup to configure WordPress, Ghost, or image generation.".claude/suparank.json for site contextTriggers: "publish to WordPress", "post to WordPress", "send to WordPress"
Requirements: ~/.claude/suparank-credentials.json must have a wordpress section with:
site_url: WordPress site URLusername: WordPress usernameapp_password: WordPress application passwordSteps:
Get the article to publish:
.claude/suparank-session.json for the latest saved article.claude/suparank-content/[folder]/article.mdmetadata.jsonConvert markdown content to HTML:
<img> tagsPublish via WordPress REST API using curl:
curl -s -X POST "${site_url}/wp-json/wp/v2/posts" \
-H "Authorization: Basic $(echo -n '${username}:${app_password}' | base64)" \
-H "Content-Type: application/json" \
-d '{
"title": "Article Title",
"content": "<html content>",
"status": "draft",
"excerpt": "Meta description"
}'
Parse the response to get:
If a featured image URL is available (from image generation), set it:
Report success:
Update session: mark article as published_to: ["wordpress"]
Status options: Ask the user: "Publish as draft (default) or live?"
draft (default, safer)publish (immediately live)Triggers: "publish to Ghost", "post to Ghost", "send to Ghost"
Requirements: ~/.claude/suparank-credentials.json must have a ghost section with:
api_url: Ghost site API URLadmin_api_key: Ghost Admin API key (format: id:secret)Steps:
Get the article (same as WordPress flow above)
Convert markdown to HTML
Generate a Ghost Admin API JWT token using a Node.js one-liner:
TOKEN=$(node -e "
const c = require('crypto');
const [id, secret] = '${admin_api_key}'.split(':');
const h = Buffer.from(JSON.stringify({alg:'HS256',typ:'JWT',kid:id})).toString('base64url');
const now = Math.floor(Date.now()/1000);
const p = Buffer.from(JSON.stringify({iat:now,exp:now+300,aud:'/admin/'})).toString('base64url');
const sig = c.createHmac('sha256', Buffer.from(secret,'hex')).update(h+'.'+p).digest('base64url');
console.log(h+'.'+p+'.'+sig);
")
{
"posts": [{
"title": "Article Title",
"mobiledoc": "{\"version\":\"0.3.1\",\"atoms\":[],\"cards\":[[\"html\",{\"html\":\"<html content>\"}]],\"markups\":[],\"sections\":[[10,0]]}",
"status": "draft",
"tags": [{"name": "keyword1"}, {"name": "keyword2"}],
"feature_image": "image_url_if_available"
}]
}
curl -s -X POST "${api_url}/ghost/api/admin/posts/" \
-H "Authorization: Ghost ${TOKEN}" \
-H "Content-Type: application/json" \
-d '${post_data}'
Triggers: "generate images", "create images", "generate hero image", "make images for article"
Requirements: ~/.claude/suparank-credentials.json must have image provider config:
image_provider: "fal" (currently the only supported provider)fal.api_key: fal.ai API keyIf image_provider is missing or set to an unsupported value (anything other than "fal"):
Steps:
~/.claude/skills/suparank/templates/image-prompt-designer.mdcurl -s -X POST "https://fal.run/fal-ai/flux/schnell" \
-H "Authorization: Key ${fal_api_key}" \
-H "Content-Type: application/json" \
-d '{
"prompt": "detailed image prompt here",
"image_size": "landscape_16_9",
"num_images": 1
}'
result.images[0].urlImage count calculation:
Triggers: "send webhook", "notify Slack", "send to Make", "trigger webhook"
Requirements: ~/.claude/suparank-credentials.json must have webhooks section
Steps:
For Slack:
curl -s -X POST "${slack_url}" \
-H "Content-Type: application/json" \
-d '{"text": "New article published: [title]\n[url]"}'
For Make/n8n/Zapier:
curl -s -X POST "${webhook_url}" \
-H "Content-Type: application/json" \
-d '{
"source": "suparank",
"timestamp": "2026-02-23T10:30:00Z",
"title": "Article Title",
"url": "https://...",
"keywords": ["keyword1", "keyword2"]
}'
When publishing multiple articles (from multi-article pipeline):
When invoked by the pipeline orchestrator:
If credentials are missing for a specific platform:
Example: "Published to WordPress. Skipped Ghost (not configured). Skipped images (no fal.ai key)."
If image generation fails, handle gracefully:
/suparank/publish later."/suparank/setup."Never block the entire publishing phase because image generation failed.
~/.claude/suparank-credentials.json (or legacy ~/.suparank/credentials.json)sk_l********eyJhbGci...Authorization: Basic **** (never the actual base64 string)