Overview

Article Generator (pkg_artigen) is a Joomla extension package that uses AI to create complete, research-backed articles. It grounds the AI in the brief's Sources URLs or web-search results, generates well-structured Joomla articles with auto-rendered banner images, and surfaces a vertical Status stepper so admin always sees where each brief is in the pipeline — all from within your Joomla admin.

The package includes a component for article management and a scheduled-task plugin (plg_task_artigentasks) that runs the unified Article Generator routine — one cron-driven loop covering Hopper discovery, unattended article generation, auto-publish, and on-demand batch jobs.

Article Generator is open source software released under the GNU General Public License v3 (GPL-3.0-or-later).

AI Article Creation

Generate complete articles using OpenAI GPT or Anthropic Claude with configurable tone, reading level, target word count, content structure and citation mode. Truncated runs can be resumed with one click via Continue generation.

Source-Grounded

Paste URLs into the brief's Sources field and the pipeline fetches them and uses the bodies as grounding material — available on every tier. External web search (Serper, Tavily, Google Custom Search) is also available on every paid tier.

Hopper — topic + cadence

A Hopper is a curated list of source URLs on a topic. The scheduled task runs each Hopper on its configured cadence (daily / weekly variants) and creates one brief per run from the Good sources. Optional auto-generate + auto-publish make it fully unattended.


Installation

Step 1: Install the Package

  1. Download the latest pkg_artigen package from the extensions directory or from Multizone Limited
  2. Log into your Joomla Administrator
  3. Navigate to Extensions > Install > Install from File
  4. Upload the pkg_artigen_vx.x.x.zip file and click Install

Step 2: Verify Installation

  1. Go to Extensions > Manage > Manage
  2. Search for “Article Generator”
  3. Ensure the component and the Tasks - Article Generator plugin are both installed and enabled

Step 3: Configure API Keys

  1. Navigate to Components > Article Generator
  2. Click Options in the toolbar
  3. Pick your AI provider (OpenAI or Anthropic Claude) and paste the API key — required for article generation
  4. Optionally enter a search-provider API key (Serper, Tavily, or Google Custom Search) for automatic web research — available on every paid tier from 3.5.26 onward
  5. Pick a default banner theme and icon on the Article Banner tab
  6. Click Save & Close

Step 4: Create the Scheduled Task (recommended)

  1. Go to System > Scheduled Tasks > New
  2. Pick the Article Generator task type
  3. Set it to run every 5 minutes (recommended — covers all four phases with room to spare)
  4. Save

Without the scheduled task, Hoppers with a cadence are documented but won't fire, and auto-generate / auto-publish settings stay dormant. Manual Run Now still works regardless.

Tip: You can start generating articles with just an AI key. Paste reference URLs into the brief's Sources field and the pipeline fetches them as grounding material.

Getting Started

There are two ways to drive article generation: one-off briefs, or Hoppers that produce briefs on a cadence.

Path A — one-off briefs

Step 1
Create an Article Brief

Navigate to Article Briefs and click New. The Brief tab carries the inputs the AI uses: write a title and topic description, paste any authoritative source URLs, and pick a banner icon + theme. More options exposes tone, reading level, target word count, content structure and citation mode.

Step 2
Generate the Article

Click Generate Article in the toolbar. The pipeline gathers research (Sources URLs and, if configured, web-search), generates the body, attaches a fresh banner, and creates the Joomla article. The browser drives the tick pipeline — each step bounded under 90s so shared-host timeouts can't swallow a stage silently.

If the AI cuts off mid-article, click Continue generation to append the rest. Click Regenerate to wipe the body, banner and images, and run the whole pipeline fresh.

Step 3
Review and Publish

Click View Article on the brief's sidebar to open the generated Joomla article. Review the body, make any editorial adjustments, set the publish state when you're happy.

Need a different banner? Use the Banners submenu — every article with a banner is listed, with inline theme + icon pickers and a one-click regenerate.

Path B — Hoppers for recurring topics Premium

A Hopper watches a topic, builds a curated list of source URLs, and produces one brief per cadence cycle. See the Hoppers section below for the full setup, or jump to the dedicated Hopper setup guide.


Your Article Generator Subscription

Article Generator uses a tiered subscription model. It is freely available as a trial; paid subscriptions raise the monthly article allowance and unlock a few workflow-scale features. Gates are applied at render time and never on save — if your tier changes, no data is lost.

3.5.26 tier restructure: every paid tier now gets the full single-article feature set including external web search, Article Refresh, banners, curated CC images, and Article Integrity. Tiers differentiate on volume and on the recurring-workflow features (Hopper, advanced campaign types).

Trial
  • 15 articles / month
  • Source URLs in the brief
  • External web search
  • Manual banner regenerate
Standard
  • 200 articles / month
  • External web search + Article Refresh
  • Batch processing (up to 10)
  • 3 permitted domains
  • Email support
Premium
  • 1,500 articles / month
  • Hoppers (curated source list + cadenced briefs)
  • Advanced Campaign Types (Content Calendar, NPI)
  • Batch up to 50, 10 domains
  • Priority support
Enterprise
  • Unlimited articles
  • All Premium features
  • Unlimited domains
  • Premium support

API Keys & Service Providers

AI Provider (Required)

An AI provider key is required to generate article bodies. Pick the one that matches your account — both can be configured side-by-side and selected per brief.

  • OpenAI — Sign up at platform.openai.com. GPT-4o Mini is the balanced default; GPT-4o for richer copy.
  • Anthropic Claude — Sign up at console.anthropic.com. Claude Sonnet is a strong long-form alternative.

Source URLs (free, default)

Every brief carries a Sources field. URLs you paste here are fetched server-side and used as research material. No API key, no extra cost — the recommended way to ground articles when you already know the references.

External Search Providers (every paid tier)

When you want the AI to find its own references, configure a web-search provider. From 3.5.26 onward this is available on every paid tier — previously a Premium-only feature.

  • Serper (recommended) — Google search results via API. Free tier at serper.dev. Hoppers prefer Serper because it also exposes a separate news endpoint.
  • Tavily — AI-optimised search. Free tier at tavily.com.
  • Google Custom Search — Direct Google API; requires a Google Cloud project and a Custom Search Engine ID.
Tip: API keys can also be set via environment variables, which take priority over values entered in the configuration form. The current state of each key (set / missing / from environment) is shown on the Setup & Tips page.

Campaign Types

Every brief picks a Campaign Type. The type tells the pipeline how to research, structure, and (for the advanced types) spawn child briefs.

Built-in types

  • Single Article — one brief, one article. Default for ad-hoc posts.
  • Topic Brief — one brief, one article, source-grounded; tuned for explainer / cornerstone content.
  • Competitive Marketing — one brief, one article; comparison-structure preset.
  • Content Calendar Premium — spawns N child briefs spaced across a date range.
  • New Product Introduction (NPI) Premium — staged sequence (Announce / Explain / Case Study) anchored to a launch date.
News Beat removed in 3.5.56. The recurring-cadence single-article campaign type was superseded by the simpler Hopper model. Existing News Beat parents are no longer scheduled; their child briefs remain editable, but the cadence won't fire. Recreate the workflow as a Hopper.

Workflow expander (Content Calendar, NPI)

Picking Content Calendar or NPI opens the Workflow expander on the Brief tab. Configure start/end dates and target count (Content Calendar), or launch date (NPI). The parent brief stays as the source of truth; child briefs are spawned with parent links so the relationship is visible on the Briefs list.


Hoppers — Curated Source List & Cadenced Briefs

A Hopper is “a curated list of source URLs on a topic, plus a scheduled brief from them”. It supersedes News Beat (removed in 3.5.56) and adds explicit verification + per-row curation. The full setup is in the Hopper setup guide — the summary below is the headline shape.

Lifecycle

  1. Create a Hopper at Components > Article Generator > Hoppers > New. Fill in the topic, keywords, editorial defaults (tone, reading level, word count etc.), and pick a watch type: Search query, RSS feed, or URL set.
  2. Open the Candidates tab and click Generate candidates. The watch type is dispatched to the appropriate handler (search provider / RSS parser / URL set) and each result is verified inline — the page is fetched and its body checked against the snippet to drop parasite-SEO and cached-spam URLs before they reach the table.
  3. Curate. Each row's Status badge reads Good (verifier OK or admin override), Bad (verifier or admin marked it bad), or Unverified. Bulk actions: Mark good, Mark bad, Delete, Verify. The Good rows are the Hopper's source list.
  4. Run Now creates ONE brief whose sources are every Good URL. The article-gen pipeline researches across them and writes a single piece that cross-references the publishers. You land on the new brief, ready to hit Generate Article.
  5. Or pick a cadence — daily / 3x weekly / 2x weekly / weekly — plus a time-of-day. The scheduled task runs the Hopper at that time each cycle, producing one brief per run.

Unattended end-to-end (optional)

Two switches on the Hopper edit form make the loop fully unattended:

  • Auto-generate articles — when on, the scheduled task drives every brief emitted from this Hopper through the article-gen pipeline without admin intervention.
  • Final article stateDraft (admin reviews before publishing) or Published (article goes live as soon as it's generated). Routed through Joomla's standard article state, so any workflow you have configured still applies.

Time of day uses your Joomla site timezone. Daily fires AT the configured time each day; weekly variants use it as a not-before floor on the gap. The scheduled task itself must be running at or before the configured time of day — every 5 minutes is the recommended cadence.


Article Generator Scheduled Task

One scheduled task drives the whole unattended loop. Create it once at System > Scheduled Tasks > New and pick the Article Generator task type. Recommended cadence: every 5 minutes.

What the task does on each tick

Four phases run in order, each wall-clock-budgeted so a stuck phase can't starve the rest:

  1. Hopper discovery — for every published Hopper whose cadence is due, calls produceBriefs() — one brief out per Hopper, sources = every Good URL on the Hopper. Manual-cadence Hoppers are skipped (they fire from the Run Now button on the Candidates tab).
  2. Auto-generation — picks draft briefs whose parent Hopper has Auto-generate articles on, and ticks each one forward through the article-gen pipeline one step at a time. The same step machine the browser drives, just headless.
  3. Auto-publish — for briefs that have completed generation with the Hopper's Final article state set to Published, flips the resulting Joomla article's state to live.
  4. Batch queue — services on-demand jobs queued by the Generate All Steps button on the Briefs list.
Upgrade note (3.5.56). Pre-3.5.56 scheduled task rows pointing at artigen.batch_queue, artigen.news_beat, or artigen.hopper_sweep become no-ops on upgrade. Delete them and recreate one scheduled task with the new Article Generator type.

Logs

Per-task logs live at administrator/logs/task_{id}.log.php. Phase-level events also mirror to administrator/logs/com_artigen.error.php so you can trace what happened on a quiet site without enabling Joomla's individual-task logs.


Every generated article gets a procedurally-rendered banner image. The Banners submenu lists every article that has one, with a category filter at the top, an inline preview thumbnail per row, and inline pickers for icon + theme.

  • Banner Icon — the Font Awesome icon name (e.g. joomla, apple). Two icons can be combined by separating them with a comma (e.g. joomla,bolt).
  • Banner Theme — one of roughly 140 named CSS colours plus a curated Computing Classics palette. Text colour is selected automatically by luminance so dark themes get white text and light themes get black text.
  • Use Default — pre-filled with the component default colour swatch so you can see at a glance what “default” means on this site.
  • Regenerate — toolbar button on each row re-renders the banner with the current icon + theme. Available on every tier.

Setup & Tips

The Setup & Tips submenu is the at-a-glance health page for your install. Use it after configuration or whenever generation is misbehaving.

  • API key status — live check of OpenAI, Claude, and the configured search provider. Shows set, missing, or from environment variable per slot.
  • Completeness Tips — checklist of common readiness items: default category, banner theme, image upload path, scheduled task created.
  • Research Quality alerts — warns when briefs are running without source URLs and without an external search provider (i.e. the AI is operating from training data only).

Troubleshooting

Check that your AI provider key (OpenAI or Claude) is valid and has available credit. On shared hosting, lower claude_max_tokens to 4000 if you see “Server returned a non-JSON response (HTTP 500)” — the PHP-FPM termination timeout is capping the call. If the AI cuts off mid-article, use the Continue generation button on the brief to append the rest. The 3.5.23 tick pipeline bounds every step under 90s — if you see a step stuck longer than that, the watchdog will surface a “Retry from this step” affordance.

Three things have to be true:

  1. The Article Generator scheduled task exists at System > Scheduled Tasks. The Hopper edit form shows a yellow warning if it's missing, with a one-click link to create it.
  2. The scheduled task is published AND running often enough to hit the Hopper's Time of day. Every 5 minutes is the recommended cadence.
  3. The Hopper has at least one Good candidate row. Click Generate candidates on the Candidates tab, verify them, then mark the ones you want to source from.

Hopper is a Premium feature; on lower tiers it's hidden from the menu and the scheduled task's Hopper-discovery phase silently no-ops.

The curated pool is empty. Click Run Now's warning — it breaks down the rows: total / Good / Bad / Unverified. Common causes: (a) all candidates are still Unverified — click Verify to convert them; (b) the verifier marked them all Bad because their pages don't actually match the search snippets — override with Mark good if you trust the URL; (c) the Hopper has run already and rows are still pending verification — click Refresh candidates to grow the pool.

Open the Hopper that emitted the brief and check Final article state is set to Published. Auto-publish only acts on briefs whose pipeline_state is completed AND the inherited auto_publish_state is published. Briefs created before 3.5.56 inherit nothing — set the value on the Hopper, regenerate the brief, and the auto-publish phase will catch it on the next tick.

External search is available on every paid tier from 3.5.26 onward. Verify your search provider API key is correct, your server can make outbound HTTPS requests, and try a different provider to rule out provider-specific issues. Hopper runs log per-query results to com_artigen.error.php — check there for “0 results” or HTTP error lines.

News Beat was removed in 3.5.56. The recurring-cadence single-article workflow is now handled by Hoppers, which add explicit URL curation and the same daily/weekly cadences. Existing News Beat parent briefs are still editable as plain briefs; their cadence won't fire any more. Recreate the workflow as a Hopper — same shape, with a verified source list as a bonus.

Article Generator uses the standard Joomla update system. Check for updates via Extensions > Update in your Joomla administrator.

If updates are not appearing, verify your server can reach the Multizone update server. If the update site is missing, reinstall the package to restore it.


Get support

Contact us

Questions, bug reports, feature requests — get in touch.

  • Website: multizone.co.uk
  • Email: This email address is being protected from spambots. You need JavaScript enabled to view it.
  • In-app help: Each Multizone component has a setup checklist on its dashboard and contextual descriptions on every form field.

What support covers

All Multizone extensions are freely downloadable as trials.

  • Trial — community support via the documentation and changelog.
  • Standard / Premium / Enterprise — direct email support; response priority and depth scale with tier.

Documentation and changelogs for every extension live at multizone.co.uk/extensions.

Licences, trademarks, source code licences and attributions

928uk® is a trademark of Multizone Limited, registered in the UK. Multizone and this site is not affiliated with or endorsed by The Joomla! Project™. Any products and services provided through this site are not supported or warrantied by The Joomla! Project or Open Source Matters, Inc. Use of the Joomla!® name, symbol, logo and related trademarks is permitted under a limited licence granted by Open Source Matters, Inc. AdMob™, AdSense™, AdWords™, Android™, Chrome OS™, Chromebook™, Chrome™, DART™, Flutter™, Firebase™, Firestore™, Fuchsia™, Gmail™, Google Maps™, Google Pixel™, Google Play™, Pixelbook Go™, and Pixel™ and other trademarks listed at the Google Brand Resource center are trademarks of Google LLC and this site is not endorsed by or affiliated with Google in any way. Apple and the Apple logo are trademarks of Apple Inc., registered in the U.S. and other countries. App Store is a service mark of Apple Inc. The OSI logo trademark is the trademark of Open Source Initiative. Any other product or company names may be trademarks™ or registered® trademarks of their respective holders. Use of these trademarks in articles here does not apply affiliation or endorsement by any of them.

Where the source code is published here on multizone.co.uk or on our GitHub by Angus Fox, Multizone Limited it is licenced according to the open source practice for the project concerned.

BSD 3-Clause "New" or "Revised" Licence
Original source code for mobile apps are licenced using the same licence as the one used by "The Flutter Authors". This Licence, the BSD 3-Clause "New" or "Revised" Licence (bsd-3-clause) is a permissive licence with a clause that prohibits others from using the name of the project or its contributors to promote derived products without written consent.
GNU General Public Licence v3.0 or later
Original source code for Joomla! published here on multizone.co.uk by Angus Fox, Multizone Limited is licenced using the GNU General Public Licence. This Licence, the GNU General Public Licence Version 3 or later (gpl-3.0+) is the most widely used free software licence and has a strong copyleft requirement. When distributing derived works, the source code of the work must be made available under the same licence.

Please respect the licences and dont use the name of this site or our company to promote derived products without written consent. I mean, why would you? You're not us!

Amazon Associate
As an Amazon Associate we earn from qualifying purchases.
Logo
Our Logo Image is by Freepik. We chose it because its an M and also the letter A twice - and that represents us.
Graphics
Our images representing user experience and interface design are from Freepik here and here and here and here and here.