Share Buttons & AI-powered Summaries
Share Buttons & AI-powered Summaries turns every post into an AI-aware destination. It generates an inline AI summary readers can expand next to the share buttons, and offers one-click sharing to every major social network and the leading AI assistants. Among the first plugins to integrate the native WordPress 7.0 AI Connectors API: configure your AI provider once in Settings > Connectors (OpenAI, Anthropic, Google) and the plugin reuses those credentials — no API keys to manage, no extra accounts. Inline AI Summary Two-tier cascade: Level A uses the WordPress 7.0 AI Client; Level C is a built-in PHP extractive fallback with zero API cost on any WP 6.1+ install. Choose your AI model and mode: pick the provider and model used to generate summaries, or leave it on Automatic to use a fast, cost-effective model instead of the newest, most expensive one. Set how generation behaves too: AI with extractive fallback, AI only, extractive only, or disabled. Paragraph or bullet-list format: show the summary as prose (one paragraph per sentence) or as a concise bullet list, with configurable length (1-5 sentences or points). Collapsible inline block with native , data-nosnippet and Schema.org CreativeWork microdata so search engines treat it as derived content, not competition. Editor controls in the block sidebar and the classic meta box: view, edit manually, regenerate on demand, hide per post (independently from the buttons). Visitor-facing “Generate AI summary” button for posts without a stored summary, restrictable to extractive-only or open to the AI Client. Async generation via WP-Cron. [ayudawp_aiss_summary] shortcode also available. Sharing Social networks: X (Twitter), LinkedIn, Facebook, Telegram, WhatsApp, Email, Raindrop, Reddit, Bluesky, LINE, Mastodon, Threads, Pinterest. AI assistants: Claude, ChatGPT, Google AI, Gemini, Grok, Perplexity, DeepSeek, Mistral, Copilot, Qwen, Meta AI — each opens with a citation-ready prompt linking back to your URL. 6 visual styles, 4 sizes, custom colors, brand SVG icons, dark-mode auto-adaptation, drag-and-drop ordering. SEO-friendly ( or , auto-exclusion on noindex content for all major SEO plugins). Analytics Click tracking per platform and per post, timeline chart with per-platform breakdown, period comparison (previous period, same period last year, custom range), CSV export. Dashboard widget with 7-day sparkline. VigIA cross-reference (clicks vs. AI crawler visits) when active. Redis/Memcached compatible. Why use it? Cite your source naturally: when readers expand the summary or share to an AI assistant, your URL travels with the content. Reach every audience: full social spectrum plus 11 AI assistants in one place. Future-proof: built on WP 7.0 Connectors and a REST API ready for agentic clients. External services This plugin connects to third-party AI providers only when the inline AI Summary feature is enabled and an AI Connector is configured (or the WP AI Client is available). All other features — social and AI share buttons, click analytics, the extractive PHP fallback summary — run entirely on your own server and do not contact any external service. AI Summary generation When a post is saved (or when the editor / a visitor explicitly clicks “Regenerate” or “Generate AI summary”), the plugin uses the WordPress 7.0 AI Client (wp_ai_client_prompt()) to request a short summary from whichever provider you configured in Settings > Connectors. The plugin never stores your API keys — they are managed centrally by WordPress core. What is sent: Post title (plain text) Post content (HTML stripped, up to ~3000 characters of plain text) A short instruction asking the provider to return a summary What is not sent: API keys (managed by core Connectors), visitor IP addresses, user accounts, analytics data, or any other personal data of your readers. Possible destinations (depending on which Connector your administrator activates): OpenAI — Terms of use · Privacy policy Anthropic — Terms of service · Privacy policy Google AI — Terms of service · Privacy policy If you do not configure any Connector, or your WordPress version is below 7.0, the plugin falls back to the local PHP extractive summarizer and no external request is made. How to opt out Set AI Summary generation to Disabled in the AI Summary tab of the plugin settings. Or choose Extractive only to keep summaries fully local — zero external requests, ever. Or choose AI only while leaving no Connector configured — no requests will be sent, and summaries simply won’t be generated. The visitor-facing “Generate AI summary” button is off by default; if enabled, you can additionally restrict it to the extractive PHP path so visitor clicks never reach an external provider. Sharing buttons The social and AI sharing buttons render as / elements that open the respective destination only when the visitor clicks them — your server does not contact those services. The plugin’s analytics endpoint that records button clicks runs locally on your own site. Advanced Usage Shortcode parameters The [ayudawp_share_buttons] shortcode accepts several parameters: buttons: Comma-separated list of buttons to display – Example: [ayudawp_share_buttons buttons="claude,chatgpt,deepseek,twitter,mastodon"] – Available: twitter, linkedin, facebook, telegram, whatsapp, email, raindrop, reddit, bluesky, line, mastodon, threads, pinterest, claude, chatgpt, google_ai, gemini, grok, perplexity, deepseek, mistral, copilot, qwen, meta_ai style: Visual style to use – Example: [ayudawp_share_buttons style="outline"] – Options: minimal, brand, outline, dark, custom, icons-only size: Button size preset – Example: [ayudawp_share_buttons size="compact"] – Options: compact, normal, large, fluid show_icons: Show icons with text (for non-icons-only styles) – Example: [ayudawp_share_buttons show_icons="true" style="brand"] – Options: true, false icon_style: Icon corner style (for icons-only mode) – Example: [ayudawp_share_buttons style="icons-only" icon_style="circular"] – Options: circular, square alignment: Button alignment – Example: [ayudawp_share_buttons alignment="center"] – Options: left, center show_title: Show or hide the section title – Example: [ayudawp_share_buttons show_title="false"] – Options: true, false title_text: Custom title text – Example: [ayudawp_share_buttons title_text="Share this content"] title_style: Title HTML element – Example: [ayudawp_share_buttons title_style="h3"] – Options: h3, h4, h5, h6, span ai_title: Section title for AI buttons group – Example: [ayudawp_share_buttons ai_title="Summarize with AI"] social_title: Section title for social buttons group – Example: [ayudawp_share_buttons social_title="Share on social media"] Combined examples: [ayudawp_share_buttons buttons="claude,deepseek,twitter" style="brand" show_icons="true"] [ayudawp_share_buttons style="icons-only" icon_style="circular"] [ayudawp_share_buttons show_title="true" title_text="Share or Summarize" title_style="h3"] [ayudawp_share_buttons ai_title="Summarize with AI" social_title="Share" style="outline" show_icons="true"] [ayudawp_share_buttons buttons="chatgpt,qwen,meta_ai,mastodon,threads" size="compact" style="brand"] [ayudawp_share_buttons style="icons-only" icon_style="square" size="large"] [ayudawp_share_buttons size="fluid" style="outline" show_icons="true"] AI summary shortcode The [ayudawp_aiss_summary] shortcode renders the AI-generated summary as a standalone collapsible block. Useful when you want to place the summary somewhere other than where the share buttons are auto-inserted, or when you have buttons disabled but still want to surface the summary. post_id: Render the summary of a specific post – Example: [ayudawp_aiss_summary post_id="123"] – Defaults to the current post in the loop when omitted The shortcode outputs nothing when the post has no stored summary, so it is safe to drop into templates without conditional wrappers. CSS Customization Guide The plugin uses CSS custom properties for all brand colors. You can override these in your theme to change any platform color globally: Override platform colors: .ayudawp-share-buttons { –ayudawp-claude: #ff0000; –ayudawp-chatgpt: #00ff00; } Main container classes: – .ayudawp-share-buttons – Main wrapper container – .ayudawp-buttons-container – Direct container for all buttons – .ayudawp-title – Title element before buttons – .ayudawp-section-title – Section title with extra top margin – .ayudawp-aiss-centered – Applied when centered alignment is enabled Button classes: – .ayudawp-share-btn – Base class for all buttons (both and elements) – .ayudawp-icon-wrapper – Container for button icons – .ayudawp-button-text – Text label inside buttons – .ayudawp-icon – SVG icon element Style modifier classes: – .brand – Brand colors style – .outline – Outline style (brand-colored borders) – .minimal – Minimal style – .dark – Dark background style – .custom – Custom colors style – .icons-only – Icons-only mode – .with-icons – Text buttons with icons – .circular – Circular icon buttons – .square – Square icon buttons Size modifier classes: – .size-compact – Compact button size – .size-large – Large button size – .size-fluid – Fluid width buttons Platform-specific classes (on buttons): – .twitter, .linkedin, .facebook, .telegram, .whatsapp – .email, .raindrop, .reddit, .bluesky, .line – .mastodon, .threads, .pinterest – .claude, .chatgpt, .google-ai, .gemini, .grok – .perplexity, .deepseek, .mistral, .copilot – .qwen, .meta-ai – .ai – Applied to all AI platform buttons Example: Change Claude button color: .ayudawp-share-buttons { –ayudawp-claude: #your-color; } Example: Change all AI buttons background: .ayudawp-share-buttons .ayudawp-share-btn.ai { background: #f0f0f0; } Example: Hide specific button: .ayudawp-share-btn.facebook { display: none; } Customize or remove separator lines: The main container has top and bottom border lines. You can hide either of them from the settings (Share Buttons → Separator lines) with no code. CSS is only needed to replace them with your own style: .ayudawp-share-buttons { border-top: 2px dashed #ccc; border-bottom: 2px dashed #ccc; } Important notes: – The use of !important is no longer needed for most overrides – Use CSS custom properties to change brand colors cleanly – Test on both desktop and mobile viewports – Icons-only buttons have fixed dimensions (44px default, 36px compact, 54px large) Technical Details System requirements WordPress 6.1 or higher (7.0+ for AI-generated summaries) PHP 7.4 or higher (compatible up to PHP 8.4) Theme compatible with wp_head() and wp_footer() Performance features Modular file structure for maximum efficiency Selective loading of resources (CSS/JS only where buttons display) No external dependencies Optimized CSS with custom properties and minimal specificity Lightweight SVG icons (under 1KB each) Minimal database impact: analytics queries are cached (5 min) and compatible with persistent object cache (Redis, Memcached) Smart responsive layouts REST API for lightweight analytics data retrieval Developer features Clean, documented code WordPress coding standards compliant Hook-based architecture Modular class structure in /includes folder Extensible icon system using Simple Icons Translation ready Comprehensive shortcode API SEO-friendly markup options Post meta for individual exclusions Centralized platform color definitions Support Need private support or custom development? Do you need one-on-one help, priority troubleshooting, or a custom feature, integration, or tweak built specifically for your site? I offer private support and custom development. Just contact me and tell me what you need. Need help or have suggestions? Official website WordPress support forum YouTube channel Documentation and tutorials Love the plugin? Please leave us a 5-star review and help spread the word! About AyudaWP We are specialists in WordPress security, SEO, AI and performance optimization plugins. We create tools that solve real problems for WordPress site owners while maintaining the highest coding standards and accessibility requirements.
Top keywords
- buttons48×2.78%
- ai47×2.72%
- share29×1.68%
- style26×1.51%
- share buttons24×1.39%
- summary24×1.39%
- ayudawp23×1.33%
- title23×1.33%
- ayudawp share19×1.10%
- ayudawp share buttons19×1.10%
- example15×0.87%
- custom12×0.70%
Alpaca Bot
Alpaca Bot is a chat screen inside WordPress admin, talking to a model you host. Conversations stay on your site, in your own database, and only their author can open them. It runs against Ollama out of the box, or any OpenAI-compatible endpoint. Features A chat screen in wp-admin: replies stream in as they are written, with a copy button on every message and code block, “Edit and resend” on your own, and an image attached from the media library for a model that can see. Your conversations, stored privately on your site (or not at all: the Privacy tab decides) and listed in the screen’s history. Switch models per conversation; where the site allows it, your pick is remembered as your default. A system prompt, per-model overrides (temperature, context window, keep-alive) and a receipt under every reply: model, tokens, time. Monthly usage caps, per site and per user, with the meter behind them. A REST API under alpaca-bot/v1 (docs/api.md) and a WP-CLI command. Requirements PHP 8.4+, WordPress 6.9+, an Ollama instance (or any provider php-agents supports) Setup Install Ollama on your localhost or server. In your WordPress admin, open Alpaca Bot > Settings and, on the Provider tab, enter the endpoint’s base URL. For Ollama it ends in /v1: http://localhost:11434/v1. Click Save Changes. The Models tab then lists what the provider serves; pick a default. ⭐️ Become a Patreon and support Alpaca Bot development. ⭐️ Usage The chat screen Click Alpaca Bot in the admin menu, below Dashboard and above Posts. The screen is open to every user who can edit posts (filter alpaca_bot/admin/menu_capability to change that). The model select in the header picks the model for this conversation; where the site allows it, your pick is saved as your default. The history select opens one of your earlier conversations, and New chat starts a fresh one. Type in the box at the foot of the screen. Enter sends, Shift+Enter adds a line, Escape clears the box. The image button attaches a picture from the media library to your next message, for a model that can see. The largest image the screen takes is set by the site’s PHP post_max_size, not its upload limit: the image travels inside the message, not as an upload. Replies stream in as they are written. Every message has a Copy button, your own have Edit and resend, and a code block has its own copy button. Under a reply is its receipt: the model, the tokens it used and how long it took. The Help tab at the top right of the screen repeats this, and documents the shortcodes. Settings Alpaca Bot > Settings (administrators) is one page in six tabs: **Provider** (the endpoint, its key, the timeout), **Models** (the default, temperature, context window, keep-alive, and per-model overrides), **Chat** (system prompt, welcome text, what users may change), **Privacy** (whether conversations and the usage log are stored, and for how long), **Limits** (monthly token caps for the site and per user) and **Tools** (what the model may do besides answer — read the next section before you leave those as they come). Every field is also readable and writable over the REST API (`GET`/`PUT /settings`). Tools, and what they let the model reach Settings > Tools switches the model's tools on and off. Three ship, **all three on by default**: `web_fetch` reads one public web page as text, `summarize` condenses text through the model, and `draft_post` writes a draft. Read this section before you leave `web_fetch` on, and before you open the chat to a role. web_fetch makes the web server send a request, and hands the reply back. Every URL is checked twice before the fetch — WordPress’s own wp_http_validate_url(), then the plugin’s own check over every address the name resolves to, on the first URL and on every redirect — and http(s) only, ports 80/443/8080 only, no private, loopback, link-local or other special-purpose address. What no check of that shape can cover is a name whose answer changes between the check and the connection: each is a separate DNS lookup, so a host under someone else’s control, with a short TTL, can answer the checks with a public address and the connection with 127.0.0.1 or a cloud metadata address. The response body then comes back as text. Closing that means pinning the resolved address into the transport, which is a compatibility project and is planned for a later 0.x release. Who can reach it, today, with no model involved: anyone who can edit posts — a Contributor included, since core grants Contributors edit_posts — can put [alpacabot_agent name="get" url="…"] in their own draft and preview it. So treat web_fetch as a capability you are granting your authors, not as something only the model uses. An egress policy is the supported mitigation, and it is the one that holds for every plugin on the site at once: stop the web server’s host from opening outbound connections to your private ranges and to 169.254.169.254, at the network or the host firewall. On a cloud instance, require IMDSv2. If you cannot do that and do not need the tool, leave web_fetch off — the chat, the drafts and the summaries all work without it. Opening a route to a role opens the tools to that role too. alpaca_bot/capability/chat (and chat/stream) can name any capability, read and exist included, and that is deliberate — it is how a site builds a subscriber-facing or public chat. But the toolkits a turn may call are chosen by the toolkits.enabled setting alone: there is no second capability check between a role that may chat and the tools that are switched on. So a role you admit only to converse gets web_fetch with it. Only draft_post checks a capability of its own (edit_posts/edit_pages) and refuses a role that lacks it. Until a later 0.x release adds a floor of its own, use the alpaca_bot/toolkits filter to take web_fetch away from the users you are opening the chat to: add_filter( 'alpaca_bot/toolkits', function ( array $toolkits, int $user_id ): array { if ( ! user_can( $user_id, 'edit_posts' ) ) { unset( $toolkits['web_fetch'] ); } return $toolkits; }, 10, 2 ); REST API and WP-CLI Everything the screen does is a route under alpaca-bot/v1: a turn (POST /chat, then its stream as server-sent events), conversations, models, settings and usage. docs/api.md is the reference, with authentication, streaming and error examples. From the command line, wp alpaca-bot chat|models|usage|settings does the same. Shortcodes Both 0.4 shortcodes are back on the new pipeline. Both are for logged-in users who can edit posts (edit_posts); anyone else sees a notice. [alpacabot prompt="…"] Puts the model’s answer to the prompt in a post or page. prompt — The message sent to the model. Without it, the shortcode is the chat screen (below). model — the viewing editor’s model — The model, where the site lets users change it (Settings › Chat); it must be one the provider lists. Without it, the answer runs on the model the editor who first views the page would chat on (their own preference where the site lets users change it, else the site’s default), and the cache does not record which. system — the site’s system prompt — The system prompt for this answer. temperature — the model’s setting — The temperature for this answer, 0 to 2. format — markdown — markdown renders the answer (raw HTML stripped, links kept); text shows it as plain, escaped text. cache — 1h — How long the answer is kept: a number with a unit (45s, 30m, 1h, 2d), a year at most. off generates on every view. Anything else keeps the default. Generating an answer costs provider tokens and counts against the monthly cap of the user viewing the page, so it is cached (a transient, per shortcode, per post and per cache duration) and served from the cache until it expires. Two identical shortcodes on two pages are two answers; changing the site’s system prompt starts a new answer, changing its default model does not (the model is part of the answer’s identity only when the shortcode names one). When a turn fails, the page shows why in the words the chat uses (the cap, a model the provider does not list, or a fixed “could not complete” message: the provider’s own error, which quotes its endpoint, goes to the debug log under WP_DEBUG), and nothing is cached. The block editor and the REST API never generate. content.rendered carries the cached answer, or a notice when there is none; an answer is generated only when the page is viewed on the site. So a client listing a hundred posts over the API spends nothing, and the editor’s preview shows what the cache holds. A generation counts against the same per-minute limit as the chat. Thirty a minute per user, shared with the chat screen, the REST routes and the abilities, and moved everywhere at once by the alpaca_bot/rate_limit filter (bucket chat). A cached answer costs nothing; a page carrying more shortcodes than the minute allows shows the rest as a “Too many requests” notice, caches nothing for them, and fills them in on a view after the minute turns over. Anyone who can write a post can write a prompt. A Contributor can put a prompt, and a system prompt, in a draft; once it is published, the first user with edit_posts to view the page generates the answer, the tokens count against that viewer’s cap, and the answer is on the page for everyone without anyone having read it first. The markdown is sanitised (no scripts, no raw HTML), but links and images the model writes reach the public page. Review a page after its answer appears. A per-site capability setting for this belongs to the admin-wide panel of a later 0.x release. A visitor never triggers a generation. A visitor, or a logged-in user who cannot edit posts, sees a notice in place of the answer. A site that wants visitors to see the answer returns true from the alpaca_bot/shortcode/allow_guests filter ((bool $allow, int $postId, string $tag)); they then see the cached answer and nothing else. When the cache has expired, visitors see the notice again until someone who can edit posts opens the page. That is the point: a page nobody with the capability opens spends nothing, whatever the model costs. add_filter('alpaca_bot/shortcode/allow_guests', '__return_true'); [alpacabot] With no prompt, the chat screen on a page, for logged-in users who can edit posts, with the same bundle and stylesheet as in wp-admin (a front-end design of its own is a later 0.x release). A visitor sees a login notice and loads nothing. The REST API and the block editor show a notice in its place, as for a prompt. The screen’s markup carries the viewing user’s REST nonce, as it does in wp-admin; it is useless without their cookies, but a full-page cache set to cache pages for logged-in users would store one editor’s page and serve it to another, so leave a page carrying the shell out of such a cache. [alpacabot_agent name="get|summarize" url="…" length="…"] (deprecated) The 0.4 form still works, under the same rules and cache: get shows the page’s readable text, summarize fetches it and asks the model for a summary (length is free text, “2 sentences”; model and cache as above). The fetch is the chat’s web_fetch tool itself, so it runs only while that tool is on under Settings › Tools, and through the same address guard: a private, local or non-http(s) address is refused. It logs a deprecation notice once per request under WP_DEBUG and goes away in a later 0.x release. Put the text to summarize in a prompt instead, or open the URL in the chat, where the fetch and summarize tools read it for you: [alpacabot prompt="Summarize https://…"] would not work, since a shortcode’s turn runs no tools and the model cannot open the URL. Support Questions and bug reports go to the WordPress.org support forum. Say which plugin, WordPress and PHP versions you run. For premium support, book a call: video calls, help setting up your Ollama instance or provider, troubleshooting, and onsite setup assistance. If the plugin has been useful, star Alpaca Bot on GitHub; a star helps other site owners find it. Made Possible By Emma Delaney’s How to Create Your Own ChatGPT in HTML CSS and JavaScript Lucide Beautiful & consistent icons – ISC license htmx High power tools for HTML – 0BSD license league/commonmark Markdown parser for PHP – BSD-3-Clause license php-agents Provider-agnostic AI agents for PHP – MIT license Ollama Get up and running with large language models locally – MIT license