[ 'kicker' => __( 'a long-postponed post', 'aicom' ), 'title' => __( 'Write something fresh', 'aicom' ), 'story' => __( 'On a slow Tuesday afternoon, you ask for a starter guide to be drafted and tucked into the right category — checklist at the end, friendly tone — saved as a draft for you to look over later.', 'aicom' ), 'perms' => [ __( 'Read posts and pages', 'aicom' ), __( 'Create and edit posts', 'aicom' ), __( 'Edit page settings (categories, tags)', 'aicom' ), ], 'prompt' => __( 'Draft me a 600-word starter guide about indoor plants for beginners. Friendly tone, ending with a five-point checklist. Save it as a draft under the Gardening category, and let me know when it\'s ready.', 'aicom' ), ], 'seo' => [ 'kicker' => __( 'three years of forgotten captions', 'aicom' ), 'title' => __( 'Tidy up the SEO', 'aicom' ), 'story' => __( 'You ask for a quiet audit of the last twenty posts — anything with a short title or missing description — and the helper writes new ones, applies them, and shows you a summary.', 'aicom' ), 'perms' => [ __( 'Read posts and pages', 'aicom' ), __( 'Read SEO fields (Yoast)', 'aicom' ), __( 'Update SEO fields (Yoast)', 'aicom' ), ], 'prompt' => __( 'Have a look at our last twenty published posts. Find anything with a missing meta description or a title under thirty characters. Write better ones, apply them, and show me a short summary of what changed.', 'aicom' ), ], 'a11y' => [ 'kicker' => __( 'the tab you keep meaning to open', 'aicom' ), 'title' => __( 'Help the screen readers', 'aicom' ), 'story' => __( 'You ask for a quick site report on images without descriptions, then have the ten most-viewed ones described kindly. Before and after, side by side, for your taste.', 'aicom' ), 'perms' => [ __( 'Read posts and pages', 'aicom' ), __( 'Run accessibility audits', 'aicom' ), __( 'Manage the media library', 'aicom' ), ], 'prompt' => __( 'Run a site-wide accessibility report. Find the images that are missing descriptions. Write thoughtful descriptions for the ten most-viewed ones, show me before and after, then save the changes.', 'aicom' ), ], 'elementor' => [ 'kicker' => __( 'a new page, three sentences', 'aicom' ), 'title' => __( 'Spin up a new page', 'aicom' ), 'story' => __( 'You ask for a copy of an existing page, with one headline swapped — and a new landing exists by the time the kettle is full.', 'aicom' ), 'perms' => [ __( 'Read posts and pages', 'aicom' ), __( 'Create and edit posts', 'aicom' ), __( 'Edit Elementor pages', 'aicom' ), ], 'prompt' => __( 'Make a copy of the Services page. Call the copy Pricing. Change the big headline to "Plans that grow with you." Leave everything else exactly as it was. Save it as a draft.', 'aicom' ), ], 'shop' => [ 'kicker' => __( 'the shelf that quietly emptied', 'aicom' ), 'title' => __( 'Mind the shop', 'aicom' ), 'story' => __( 'You ask for a list of products that have been out of stock for a month or more, each one quietly moved to draft with a note.', 'aicom' ), 'perms' => [ __( 'Read posts and pages', 'aicom' ), __( 'Manage WooCommerce products', 'aicom' ), ], 'prompt' => __( 'List products that have been out of stock for more than thirty days. For each one, change the status to draft and add a short note explaining why.', 'aicom' ), ], 'backup' => [ 'kicker' => __( 'a just-in-case net', 'aicom' ), 'title' => __( 'Take a snapshot first', 'aicom' ), 'story' => __( 'Before you let your helper change anything, you ask for snapshots of the pages that matter. So you can sleep — and ship.', 'aicom' ), 'perms' => [ __( 'Read posts and pages', 'aicom' ), __( 'Take and restore snapshots', 'aicom' ), ], 'prompt' => __( 'Before you touch anything: take a snapshot of the home page and our three landing pages. Save the session as "Before launch" so I can roll back the whole thing later if I need to.', 'aicom' ), ], 'skill' => [ 'kicker' => __( 'watch, then remember', 'aicom' ), 'title' => __( 'Save a routine for later', 'aicom' ), 'story' => __( 'You walk your helper through a workflow once — and ask them to save the steps as a recipe you can call back next week with one sentence.', 'aicom' ), 'perms' => [ __( 'Read posts and pages', 'aicom' ), __( 'Create and update skills', 'aicom' ), ], 'prompt' => __( 'Every Monday I publish a product review. Watch what I do this morning, then save the workflow as a skill called Weekly product review. Next time, when I ask for it by name, you\'ll know exactly what to do.', 'aicom' ), ], 'undo' => [ 'kicker' => __( 'a one-line rewind', 'aicom' ), 'title' => __( 'Undo an afternoon\'s work', 'aicom' ), 'story' => __( 'You ask for everything from a particular session to be put back as it was. Calm returns. The audit log keeps the receipts.', 'aicom' ), 'perms' => [ __( 'Read posts and pages', 'aicom' ), __( 'Take and restore snapshots', 'aicom' ), ], 'prompt' => __( 'Yesterday\'s session called "Bulk SEO update" went a little too far. Restore everything from that session to where it was before. Show me a list of what you put back.', 'aicom' ), ], ]; // ── Helper library (AI clients) ────────────────────────────────────────── // Same card→output pattern as recipes. Each card represents one AI client. $helpers = [ 'claude-code' => [ 'name' => __( 'Claude Code', 'aicom' ), 'where' => __( 'in your terminal', 'aicom' ), 'intro' => __( 'In a terminal, inside any project folder — paste this and swap in your pass.', 'aicom' ), 'snippet' => 'claude mcp add aicom ' . $mcp_url . " \\\n --transport http \\\n --header \"Authorization: Bearer YOUR_KEY_HERE\"", 'after' => __( 'Then in any chat: "Show me my last ten published posts via aicom."', 'aicom' ), ], 'claude-desktop' => [ 'name' => __( 'Claude Desktop', 'aicom' ), 'where' => __( 'in your config file', 'aicom' ), 'intro' => __( 'Open the config file (on a Mac, that\'s ~/Library/Application Support/Claude/claude_desktop_config.json) and paste this in. Restart the app.', 'aicom' ), 'snippet' => "{\n \"mcpServers\": {\n \"aicom\": {\n \"url\": \"" . $mcp_url . "\",\n \"headers\": {\n \"Authorization\": \"Bearer YOUR_KEY_HERE\"\n }\n }\n }\n}", 'after' => '', ], 'cursor' => [ 'name' => __( 'Cursor IDE', 'aicom' ), 'where' => __( 'in .cursor/mcp.json', 'aicom' ), 'intro' => __( 'Create .cursor/mcp.json in your project (or ~/.cursor/mcp.json for every project) and paste this in. Reload Cursor.', 'aicom' ), 'snippet' => "{\n \"mcpServers\": {\n \"aicom\": {\n \"url\": \"" . $mcp_url . "\",\n \"type\": \"http\",\n \"headers\": {\n \"Authorization\": \"Bearer YOUR_KEY_HERE\"\n }\n }\n }\n}", 'after' => '', ], 'chatgpt' => [ 'name' => __( 'ChatGPT', 'aicom' ), 'where' => __( 'Custom GPT · Actions', 'aicom' ), 'intro' => __( 'In the Custom GPT builder, add an Action and point it at this URL. For Authentication, pick API Key → Bearer and paste your pass.', 'aicom' ), 'snippet' => $schema_url, 'after' => __( 'All 170+ tools are discovered for you automatically.', 'aicom' ), ], 'n8n' => [ 'name' => __( 'n8n, Make, Zapier', 'aicom' ), 'where' => __( 'plain HTTP node', 'aicom' ), 'intro' => __( 'A plain HTTP node does the job — paste this template into it and swap in your pass.', 'aicom' ), 'snippet' => 'POST ' . $mcp_url . "\nContent-Type: application/json\nAuthorization: Bearer YOUR_KEY_HERE\n\n{\n \"jsonrpc\": \"2.0\",\n \"method\": \"wp.posts.list\",\n \"params\": { \"per_page\": 5 },\n \"id\": 1\n}", 'after' => '', ], 'openapi' => [ 'name' => __( 'Other OpenAPI helpers', 'aicom' ), 'where' => __( 'Dify, Flowise, LangChain…', 'aicom' ), 'intro' => __( 'Point your tool at this OpenAPI schema URL with Bearer auth, and all the tools are discovered for you.', 'aicom' ), 'snippet' => $schema_url, 'after' => __( 'Works with Dify, Flowise, LangChain, Semantic Kernel, Microsoft Copilot Studio — anything fluent in OpenAPI 3.0.', 'aicom' ), ], ]; // Serialise for JS $recipes_json = wp_json_encode( $recipes ); $helpers_json = wp_json_encode( $helpers ); ?>

i.

the keys drawer and pick a starter set. Tick the permissions we suggest just below. Copy the pass the moment it appears — it won\'t show its face twice.', 'aicom' ), [ 'a' => [ 'href' => true ] ] ), esc_url( $keys_url ) ); ?>

ii.

iii.

$r ) : $i++; ?>

', 'aicom' ); ?>

%s', 'aicom' ), [ 'code' => [] ] ), esc_html( $fallback ) ); ?>

$h ) : $hi++; ?>


                        
                    

the keys drawer, find the row, click the small action menu and choose Revoke. Gone in a blink. To pause it instead, pick Suspend — that one is reversible.', 'aicom' ), [ 'a' => [ 'href' => true ], 'strong' => [] ] ), esc_url( $keys_url ) ); ?>

401 usually means the pass isn\'t reaching us. Some web servers strip the greeting out — adding SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 to the site\'s .htaccess sets things right. 403 means the pass arrived but isn\'t allowed to do what you\'re asking — check what you ticked when you made it, the IP list, and whether the site is locked. The audit log tells you which.', 'aicom' ), [ 'strong' => [], 'code' => [] ] ); ?>

Snapshots → Cleanup settings. Set a maximum age (in days), a maximum size (in MB), or both. A daily routine sweeps the older ones away. You can also delete individual snapshots by hand on the Backup Snapshots tab.', 'aicom' ), [ 'a' => [ 'href' => true ] ] ), esc_url( $backups_url ) ); ?>

Safety page is your kill switch. Three clicks and the whole place freezes. Nothing destructive can happen without your explicit yes.', 'aicom' ), [ 'a' => [ 'href' => true ] ] ), esc_url( $safety_url ) ); ?>