Macros
Macros
Section titled “Macros”atlcli provides extensive Confluence macro support with bidirectional conversion between markdown and Confluence Storage Format.
Prerequisites
Section titled “Prerequisites”- Basic understanding of markdown syntax
- For push operations: Edit permission on target Confluence space
Panel Macros
Section titled “Panel Macros”Info Panel
Section titled “Info Panel”::: infoThis is an informational message.:::With title:
::: info "Important Information"This is an info panel with a title.:::Note Panel
Section titled “Note Panel”::: noteThis is a note for the reader.:::Warning Panel
Section titled “Warning Panel”::: warningThis action cannot be undone!:::Tip Panel
Section titled “Tip Panel”::: tipPro tip: Use keyboard shortcuts for faster navigation.:::Custom Panel
Section titled “Custom Panel”Full control over panel styling:
::: panel title="Custom Panel" bgColor="#f0f0f0" borderColor="#ccc" borderStyle="solid"Custom styled panel content.:::Options:
| Option | Description |
|---|---|
title |
Panel title |
bgColor |
Background color (hex) |
borderColor |
Border color (hex) |
borderStyle |
solid, dashed, none |
Expand/Collapse
Section titled “Expand/Collapse”Basic Expand
Section titled “Basic Expand”::: expand "Click to expand"This content is hidden by default.:::Expanded by Default
Section titled “Expanded by Default”::: expand "Details" expanded=trueThis content is visible by default.:::Table of Contents
Section titled “Table of Contents”:::With options:
::: toc minLevel=2 maxLevel=4:::Options:
| Option | Description |
|---|---|
minLevel |
Minimum heading level (default: 1) |
maxLevel |
Maximum heading level (default: 6) |
style |
none, disc, circle, square |
Code Blocks
Section titled “Code Blocks”atlcli converts standard fenced code blocks to Confluence code macros:
```javascriptfunction hello() { console.log("Hello, world!");}```With title:
```python title="example.py"def hello(): print("Hello, world!")```With line numbers:
```typescript linenumbers=trueconst greeting: string = "Hello";console.log(greeting);```Supported Languages
Section titled “Supported Languages”JavaScript, TypeScript, Python, Java, Go, Rust, C, C++, C#, Ruby, PHP, SQL, Bash, YAML, JSON, XML, HTML, CSS, and many more.
Noformat Block
Section titled “Noformat Block”Preformatted text without syntax highlighting:
```noformatThis text preserves whitespace and formatting exactly as written.```Text Formatting
Section titled “Text Formatting”Colored Text
Section titled “Colored Text”Apply color to inline text:
This is {color:red}red text{color} and {color:#0066cc}blue text{color}.Supports CSS color names and hex codes.
Background Color
Section titled “Background Color”Highlight text with background color:
This is {bg:yellow}highlighted{bg} text.{bg:#e6f3ff}Custom background{bg}Subscript and Superscript
Section titled “Subscript and Superscript”H~2~O (subscript)E=mc^2^ (superscript)Task Lists
Section titled “Task Lists”Native checkbox support:
- [ ] Unchecked task- [x] Completed task- [ ] Another pending taskConverts to Confluence’s native task list format with proper checkboxes.
Date Macro
Section titled “Date Macro”Insert formatted dates:
{date:2025-01-15}Rendered as a Confluence date picker showing the specified date.
Emoticons
Section titled “Emoticons”Use one of the supported emoji shortcodes when authoring Markdown:
:smile: :thumbsup: :warning: :star:atlcli converts these authoring tokens to typed Confluence emoticons. During
DOCX/PDF export, only typed ADF emoji, Body Storage ac:emoticon, or typed
custom-panel icon metadata is projected to a graphical character. Ordinary
stored text such as :warning: remains literal. Unknown or site-custom emoji
also remain visible as their short name and produce an export note.
Cloud exports use ADF as their primary source. Data Center exports use the
shared Body Storage adapter. Both source paths use the same typed resolver and
catalog when no usable Unicode text is already present; existing source
Unicode remains exact.
Confluence Cloud may rewrite a typed legacy value to a product-owned short
name such as :check_mark: or :light_bulb_on: during ADF read-back. The
export adapter recognizes those spellings, but they are not additional
Markdown authoring aliases and are therefore not listed below.
The table below is the complete Markdown/legacy authoring catalog, not a limit
on Confluence Cloud’s native emoji picker. A live Cloud picker inventory on
2026-07-24 contained 50 unique entries: 44 standard emoji carried exact Unicode
in ADF emoji.attrs.text, while six product-owned assets used colon text.
Those six portable read-back projections are :check_mark: → ✓,
:warning: → ⚠, :minus: → −, :question_mark: → ❓,
:cross_mark: → ✕, and :info: → ℹ. Standard Unicode remains byte-for-byte
unchanged. The Body Storage/Data Center ac:emoticon adapter applies the same
resolver when ac:emoji-fallback contains one of those typed short names and
preserves a usable Unicode fallback exactly.
Supported Emoticons
Section titled “Supported Emoticons”| Canonical shortcode | Graphical export | Supported aliases |
|---|---|---|
:smile: |
☺ | :grinning:, :grin:, :smiley: |
:sad: |
☹ | :disappointed:, :cry: |
:cheeky: |
😛 | :stuck_out_tongue: |
:laugh: |
😄 | :joy:, :laughing: |
:wink: |
😉 | — |
:thumbs-up: |
👍 | :+1:, :thumbsup: |
:thumbs-down: |
👎 | :-1:, :thumbsdown: |
:tick: |
✓ | :check:, :white_check_mark:, :heavy_check_mark: |
:cross: |
✕ | :x:, :heavy_multiplication_x: |
:warning: |
⚠ | :warn:, :alert: |
:information: |
ℹ | :info: |
:question: |
❓ | — |
:light-on: |
💡 | :bulb:, :idea:, :lightbulb: |
:light-off: |
○ | — |
:yellow-star: |
Y★ | :star: |
:red-star: |
R★ | — |
:green-star: |
G★ | — |
:blue-star: |
B★ | — |
:heart: |
♥ | :love:, :red_heart: |
:broken-heart: |
💔 | — |
:plus: |
✚ | — |
:minus: |
− | — |
The graphical export is a portable monochrome projection, not a claim of pixel parity with Confluence’s color emoji. PDF bundles and checks the required fonts. DOCX stores the exact projected Unicode, but the receiving application still chooses the display font. Arbitrary source-provided Unicode sequences are preserved exactly; glyph availability for those sequences depends on the recipient. The 50-entry live picker corpus rendered completely in Microsoft Word; LibreOffice retained the exact DOCX text but did not provide every platform color-emoji glyph. Site-custom emoji are not fetched because Atlassian does not expose a documented, authorized portable asset contract for this export path.
User Mentions
Section titled “User Mentions”Mention users by account ID:
@[John Doe](557058:abcd-efgh-ijkl)The account ID can be found in Confluence user profiles or via the API.
Status Macro
Section titled “Status Macro”Inline status labels:
{status:green}Approved{status}{status:yellow}In Review{status}{status:red}Rejected{status}{status:blue}In Progress{status}{status:grey}Draft{status}Colors: green, yellow, red, blue, grey
Anchor Macro
Section titled “Anchor Macro”Create link anchors:
{#my-anchor}
Link to [my section](#my-anchor).Smart Links
Section titled “Smart Links”Atlassian smart links are rich links to Jira issues, Confluence pages, and other Atlassian content that display contextual information. atlcli supports bidirectional conversion of smart links.
Markdown Format
Section titled “Markdown Format”When pulling pages, atlcli converts smart links to standard markdown URLs:
# Inline link (default)[PROJ-123](https://your-site.atlassian.net/browse/PROJ-123)
# Card view - shows preview card[PROJ-123](https://your-site.atlassian.net/browse/PROJ-123)<!--card-->
# Embed view - embeds content[Page Title](https://your-site.atlassian.net/wiki/spaces/TEAM/pages/12345)<!--embed-->How It Works
Section titled “How It Works”| Direction | Process |
|---|---|
| Pull | Smart links → Full URLs with display mode annotations |
| Push | Atlassian URLs → Smart links with data-card-appearance |
Display Modes
Section titled “Display Modes”| Mode | Annotation | Description |
|---|---|---|
| Inline | (none) | Link appears inline in text |
| Card | <!--card--> |
Shows preview card with title and metadata |
| Embed | <!--embed--> |
Embeds full content preview |
Supported URL Patterns
Section titled “Supported URL Patterns”- Jira Issues:
/browse/PROJ-123 - Confluence Pages:
/wiki/spaces/SPACE/pages/12345 - Trello:
trello.com/c/...ortrello.com/b/... - Bitbucket:
bitbucket.org/user/repo
Profile-Based Conversion
Section titled “Profile-Based Conversion”atlcli converts only URLs matching your active profile’s Atlassian instance to smart links. External URLs remain as regular markdown links.
# Converted to smart link (same instance)[Issue](https://your-site.atlassian.net/browse/PROJ-123)
# Remains regular link (different instance)[External](https://other-site.atlassian.net/browse/PROJ-456)Jira Integration
Section titled “Jira Integration”Single Issue (Legacy)
Section titled “Single Issue (Legacy)”The {jira:KEY} syntax is deprecated. Use full URLs instead:
# Deprecated (still works){jira:PROJ-123}
# Recommended - use full URL[PROJ-123](https://your-site.atlassian.net/browse/PROJ-123)When pulling pages, Jira macros are automatically converted to full URLs.
JQL Query
Section titled “JQL Query”{jira:project = PROJ AND status = Open|columns=key,summary,status}Options:
| Option | Description |
|---|---|
columns |
Columns to display |
count |
Show count only |
cache |
Cache duration |
Page Structure
Section titled “Page Structure”Children Macro
Section titled “Children Macro”List child pages:
::: children:::With options:
::: children depth=2 sort=title:::Options:
| Option | Description |
|---|---|
depth |
How many levels deep |
sort |
title, created, modified |
reverse |
Reverse sort order |
style |
none, disc, circle, square |
Page Tree
Section titled “Page Tree”Display page tree navigation:
::: pagetree root=12345 depth=3:::Recently Updated
Section titled “Recently Updated”::: recently-updated spaces=TEAM,DOCS max=10:::Content by Label
Section titled “Content by Label”::: content-by-label labels=api,documentation:::Layout Macros
Section titled “Layout Macros”Section and Column
Section titled “Section and Column”::: section::: column width=50%Left column content.:::::: column width=50%Right column content.::::::Excerpt
Section titled “Excerpt”Mark content for reuse:
::: excerptThis content can be included in other pages.:::Include Excerpt
Section titled “Include Excerpt”Include excerpt from another page:
::: excerpt-include page="Page Title" nopanel=true:::Media Macros
Section titled “Media Macros”Gallery
Section titled “Gallery”Display attached images as gallery:
::: gallery columns=3:::Attachments List
Section titled “Attachments List”List page attachments:
::: attachments patterns=*.pdf,*.docx:::Multimedia
Section titled “Multimedia”Embed video or audio:
::: multimedia url="https://youtube.com/watch?v=..." width=640 height=480:::Widget/Embed
Section titled “Widget/Embed”Embed external content:
::: widget url="https://example.com/embed" width=100%:::TOC Zone
Section titled “TOC Zone”Create a table of contents for a specific section:
::: toc-zone minLevel=2 maxLevel=4## Section 1Content...## Section 2Content...:::Only headings within the zone are included in the TOC.
Page Properties
Section titled “Page Properties”Details Summary (Page Properties Panel)
Section titled “Details Summary (Page Properties Panel)”Display page metadata in a panel:
::: details| Property | Value ||----------|-------|| Status | Active || Owner | John |:::Details (Hidden Metadata)
Section titled “Details (Hidden Metadata)”Store metadata without displaying:
::: detailssummary hidden=true| Key | Value ||-----|-------|| internal-id | 12345 |:::Tasks Report
Section titled “Tasks Report”Display a summary of tasks across pages:
:::tasks-report-macro spaces="TEAM" pageSize=20:::Shows tasks from specified spaces with pagination.
Labels Macros
Section titled “Labels Macros”Labels List
Section titled “Labels List”Display labels for the current page:
:::labels-list:::Popular Labels
Section titled “Popular Labels”Show frequently used labels in a space:
:::popular-labels spaces="TEAM" count=20:::Related Labels
Section titled “Related Labels”Show labels related to current page’s labels:
:::related-labels labels="api,docs":::Blog Posts
Section titled “Blog Posts”Display recent blog posts:
:::blog-posts max=10 spaces="DEV,OPS" labels="announcement":::Options:
| Option | Description |
|---|---|
max |
Maximum posts to show |
spaces |
Comma-separated space keys |
labels |
Filter by labels |
author |
Filter by author account ID |
time |
Time period filter |
sort |
Sort order |
Spaces List
Section titled “Spaces List”List available spaces:
:::spaces-list:::Page Index
Section titled “Page Index”Display alphabetical index of pages:
:::page-index:::Contributors
Section titled “Contributors”Show page contributors:
:::contributors mode=list showCount=true:::Options:
| Option | Description |
|---|---|
mode |
list or inline |
showCount |
Show contribution count |
limit |
Max contributors to show |
order |
update or name |
showLastTime |
Show last contribution time |
Change History
Section titled “Change History”Display page change history:
:::change-history:::Options:
| Option | Description |
|---|---|
limit |
Max entries to show |
showProfilePic |
Show contributor avatars |
showSpace |
Show space name |
Lorem Ipsum
Section titled “Lorem Ipsum”Generate placeholder text:
:::loremipsum paragraphs=3:::Confluence Wiki Syntax
Section titled “Confluence Wiki Syntax”For compatibility, Confluence wiki attachment syntax is also supported:
!image.png! <!-- Inline image -->!image.png|alt=Description! <!-- Image with alt text -->!document.pdf! <!-- File download link -->Unknown Macros
Section titled “Unknown Macros”atlcli preserves unrecognized macros as-is. This ensures no information loss during sync:
::: unknown-macro param1=value1 param2=value2Content inside the unknown macro.:::On push, atlcli converts this to Confluence’s storage format and preserves it. On pull, atlcli converts it back exactly.
Conversion Details
Section titled “Conversion Details”| Direction | Process |
|---|---|
| Push | Markdown → Confluence Storage Format (XHTML) |
| Pull | Storage Format → Markdown |
Round-Trip Safety
Section titled “Round-Trip Safety”All supported macros round-trip cleanly:
- Pull page with macros → Markdown
- Edit markdown
- Push back → Identical macro rendering
Unsupported Macros
Section titled “Unsupported Macros”Some complex macros render to placeholder text with a note:
<!-- Confluence macro: roadmap - not fully supported, preserved as-is -->::: roadmap...:::Best Practices
Section titled “Best Practices”- Use standard markdown when possible (tables, code blocks, lists)
- Reserve macros for Confluence-specific features (panels, toc, jira)
- Test round-trips for complex pages before relying on sync
- Check preview with
atlcli wiki docs previewbefore pushing
Troubleshooting
Section titled “Troubleshooting”Macro Not Rendering
Section titled “Macro Not Rendering”Symptom: Macro appears as raw text in Confluence.
Cause: Unclosed macro block or incorrect syntax.
Fix: Ensure every :::macro has a matching ::: closing tag. Validate with:
atlcli wiki docs check ./docs/page.mdUnknown Macro Warning
Section titled “Unknown Macro Warning”Symptom: Warning about unrecognized macro during push.
Cause: The macro isn’t in atlcli’s supported list.
Fix: This is safe—atlcli preserves unknown macros as-is, and they render correctly in Confluence.
Related Topics
Section titled “Related Topics”- Sync - Push and pull pages with macro content
- Validation - Pre-push checks including macro syntax
- File Format - Frontmatter and markdown structure
- Pages - Create and update pages