Skip to content

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ConfX

Browser extension for exporting Confluence and Jira content to Markdown, CSV, images, and ZIP archives. Works through your active browser session -- no separate API token required.

Status Manifest Runtime License

Русская версия

Field Value
Status Active
Type Browser extension / host-page extraction tool
Host browsers Chrome / Chromium, Yandex Browser
Primary stack Manifest V3, React 18, TypeScript, Vite, CRXJS, Tailwind CSS
Release artifacts confx-chrome.zip, confx-yandex.crx, SHA256SUMS

What ConfX exports

When you export a page or issue, ConfX produces a ZIP archive:

confluence-page.zip
  README.md                # navigable index for subtree exports
  manifest.json            # source metadata and export metadata
  pages/
    page-title.md          # page or issue content as Markdown
  tables/
    section-table.csv      # extracted tables as CSV
  images/
    image-001.png          # inline images downloaded from the host
  attachments/
    original-file.pdf      # page attachments when export is enabled
  • Markdown -- main page or issue content converted from Confluence/Jira HTML.
  • CSV -- extracted tables, one file per table.
  • Images -- inline images downloaded from the host, deduplicated when enabled.
  • Attachments -- page attachments up to the configured size limit.
  • Comments -- page and inline (fragment) comments with authors, resolved status, and replies, embedded in Markdown between confx:comments markers and saved as comments.json / inline-comments.json.
  • manifest.json -- source host, page ID, title, version, space, labels, export timestamp.

Export presets

  • Markdown + attachments -- creates Markdown pages, keeps tables in Markdown, downloads inline images, and includes page attachments when enabled.
  • Markdown only -- creates Markdown pages and keeps tables in Markdown. Images and file attachments are not downloaded.
  • CSV tables only -- creates CSV files for real user tables only. Markdown pages, images, attachments, and Confluence UI tables are excluded.

Screenshots

ConfX side panel opened on a Confluence page

Feature screenshots

Floating button

Floating Open in ConfX button on a Confluence page

Confluence page export

Page extraction tab with current page info and rule set Page extraction tab in light theme

Space export

Space export tab with label filter and page count

Subtree export

Tree export with page tree selector and save dialog Tree export download progress

Jira issue export

Jira issue extraction tab with JQL query field

Block picker

Block picker tool for selecting a page section

Watch (experimental)

Watch tab with subscriptions list Watch tab showing detected changes

Settings and rules

Settings tab Export rules console with preset and custom rules

Features

  • Page export: export the current Confluence page as Markdown, CSV tables, images, comments, and a manifest.
  • Space export: export all pages in a Confluence space when the current page context supports it.
  • Subtree export: recursively export child pages and generate a navigable README.md.
  • Picker: select a block on the page, preview it, and export only that block.
  • Watch (experimental): track saved snapshots and inspect changes over time.
  • Jira support: extract useful Jira issue content when the current tab is a Jira issue.
  • Rule engine: configure section/table extraction rules for Confluence page conventions.

Page detection and floating buttons

ConfX injects a content script on HTTP/HTTPS pages, but the floating Open in ConfX button is shown only when the page is detected as Confluence or Jira.

  • Confluence detection prefers Atlassian metadata such as ajs-page-id, then known Confluence URL routes.
  • Jira detection prefers ajs-issue-key, then known Jira issue routes such as /browse/KEY-123.
  • Generic paths that merely contain values like ABC-123 are ignored to reduce false positives.

The button can be disabled independently for Confluence and Jira in Settings. The Settings panel also includes current-tab diagnostics showing detected kind, host, source, and button visibility state.

Watch storage

Watch subscriptions are stored locally in the browser profile. They are not sent to a remote service.

  • Storage area: chrome.storage.local.
  • Troubleshooting key: cx.subscriptions.v1.
  • Each subscription stores a baseline snapshot plus a bounded local check history.
  • Accepting changes updates the baseline snapshot but keeps recent check history.

When a check finds added or changed pages, ConfX can export the selected changed pages into a single ZIP that includes a watch-diff.json report. Removed pages are reported but not fetched for content export.

Security and privacy

ConfX reads Confluence and Jira content through your active browser session cookies. A separate Confluence or Jira API token is not required.

Development builds currently request broad HTTP/HTTPS host access (https://*/*, http://*/*). Install only trusted release artifacts and always verify checksums against SHA256SUMS from the same GitHub Release.

Install from GitHub Releases

Chrome Web Store publishing is intentionally out of scope for now. GitHub Releases are the distribution channel for the current release flow.

Chrome / Chromium

  1. Download confx-chrome.zip and SHA256SUMS from the same release.
  2. Verify the checksum: sha256sum -c SHA256SUMS --ignore-missing.
  3. Unzip confx-chrome.zip.
  4. Open chrome://extensions.
  5. Enable Developer Mode (toggle in the top-right corner).
  6. Click Load unpacked.
  7. Select the extracted folder that contains manifest.json at its root.

Yandex Browser

  1. Download confx-yandex.crx and SHA256SUMS from the same release.
  2. Verify the checksum: sha256sum -c SHA256SUMS --ignore-missing.
  3. Open browser://tune.
  4. Drag confx-yandex.crx into the browser window.

Usage

Export a Confluence page

  1. Open a Confluence page in your browser.
  2. Open the ConfX side panel (click the ConfX icon in the toolbar).
  3. Choose an extraction preset if needed.
  4. Click Export.
  5. Save the generated ZIP file.

Export a block with the picker

  1. Open a Confluence page in your browser.
  2. Open the ConfX side panel and click Launch picker.
  3. Hover over the page to highlight the target block. Use [ / ] to adjust the selection level. Press Esc to cancel.
  4. Click the block to select it.
  5. In the side panel, click Export block.
  6. Save the generated ZIP file.

Export a Jira issue

  1. Open a Jira issue in your browser.
  2. Open the ConfX side panel (click the ConfX icon in the toolbar).
  3. Click Export.
  4. Save the generated ZIP file.

Requirements

  • Node.js 22 (matches the CI workflow).
  • npm (bundled with Node.js).
  • Chrome / Chromium -- for Chrome local builds and smoke checks.
  • Yandex Browser -- for Yandex CRX smoke checks (optional).
  • OpenSSL -- for local Yandex signing key generation (optional).

Local development

npm ci
npm run dev

Chrome development build:

npm run build:chrome

Load dist/ from chrome://extensions with Developer Mode enabled.

Yandex development build requires a local signing key:

npm run gen:key:yandex
npm run release:yandex

The generated local key is only for development unless your team explicitly promotes it to the release key.

GitHub Actions distribution

The release workflow builds both artifacts and publishes them as workflow artifacts. For v* tags it also attaches them to a GitHub Release.

Required secret and release variable:

Name Type Purpose
YANDEX_CRX_PRIVATE_KEY_B64 GitHub Actions secret Base64-encoded private signing key for confx-yandex.crx.
YANDEX_EXTENSION_ID Workflow env / secret override Expected Yandex extension ID.

The workflow writes the private key to a temporary file, uses it only for the Yandex build, validates the computed extension ID, and removes the file at the end of the job.

Browser support

Capability Chrome / Chromium Yandex Browser
Manifest V3 Supported Supported
Primary UI Side panel Popup fallback / compatible extension UI
side_panel manifest entry Present Present for compatibility
action.default_popup Not included Included in the Yandex target
Direct GitHub artifact confx-chrome.zip confx-yandex.crx
Extension ID stability Managed by install channel Depends on the Yandex signing key

Verification

Local verification (no private keys required)

npm ci
npm run typecheck
npm test
npm run build:chrome

Full release verification (requires Yandex signing key)

npm run release:all

release:all requires YANDEX_KEY_PATH or a local keys/yandex.pem file.

Chrome ZIP root check:

python3 - <<'PY'
import zipfile

with zipfile.ZipFile('release/confx-chrome.zip') as archive:
    assert 'manifest.json' in archive.namelist()
PY

Manual browser smoke checks before a public release:

  1. Load dist/ in Chrome and verify the side panel at 320-360px and 480px.
  2. Install release/confx-yandex.crx in Yandex Browser and verify the popup fallback opens.
  3. Export one Confluence page and confirm the ZIP contains Markdown and manifest files.

Troubleshooting

Problem Check
Chrome ZIP does not install Ensure the archive was extracted and manifest.json is in the selected folder root.
Yandex release fails Check YANDEX_KEY_PATH or local keys/yandex.pem.
Yandex extension ID changed Verify the signing key and YANDEX_EXTENSION_ID. A different key creates a different extension identity.
Side panel looks clipped Use the latest release; narrow Chrome side panel layouts are explicitly supported.
Export fails on a page Confirm you are logged in to Confluence/Jira in the same browser profile.
Images or attachments are missing Confirm the browser session can open those files directly. Auth, CORS, file size limits, or expired sessions can prevent downloads.
Floating button appears on the wrong site Open Settings and check current-tab diagnostics. Disable Confluence/Jira buttons if you do not want page-level controls.

Project structure

src/
  manifest.ts              # MV3 manifest generated by CRXJS
  background/              # service worker and browser UI routing
  content/                 # picker and injected page controls
  sidepanel/               # React side panel and popup UI
  options/                 # rule/settings editor
  viewer/                  # Markdown viewer page
  lib/                     # extraction pipeline
  types/                   # shared TypeScript models
scripts/
  zip-chrome.mjs           # Chrome ZIP artifact
  pack-yandex.mjs          # signed Yandex CRX artifact
  checksums.mjs            # SHA256SUMS generation

Status

ConfX is active and maintained as a browser extension release flow. Chrome Web Store publishing is planned separately and is not part of the current automation.

License

MIT

About

Browser extension for exporting Confluence and Jira content to Markdown, CSV, images, and ZIP archives

Topics

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages