Roam Research Docs · Help & user documentation
🔗
[slip-box]([[Zettelkasten]]) so natural prose still links to the right page. But once you've used an alias a few times, older notes are full of the same words sitting as plain text, invisible to backlinks. Finding and fixing them by hand is tedious.
[text]([[ThisPage]]) already in your graph — and uses that text as the search terms. Nothing to configure.
[text]([[ThisPage]]), preserving your original casing, and removes the row.
OKRS never matches inside weorks.
Zettel and zettel both match the alias zettel; your original casing is kept when linking.
[[page links]], ((block refs)), #tags, and existing [alias]([[page]]) links are ignored.
http(s)://… and www.… are ignored.
*) and footnote‑style numbers (1, 2, …) are never used as search terms.
Cmd+P (or Ctrl+P):
/Upload file and select your .wav or .mp3
https://firebasestorage.googleapis.com/...
?alt=media&token=... suffix — without it, Firebase returns a redirect rather than the raw audio file and playback will fail silently.
https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2FMyelin%2F-J1q4HZsEl.wav?alt=media&token=34ab3de0-1b43-4361-8c7e-141c1925011b
roam://#/app/graph and roam://#/offline/graph
[[Oura Ring]] page, one Roam day root per Oura day.
Daily summary block without creating missing Daily Notes.
Sleep Score::, In bed at::, Out of bed at::, Readiness Score::, Activity Score::, HRV::, Resting HR::, and Steps::.
/oura today, /oura yesterday, /oura sleep, and /oura callout.
ctrl-o to open the preview
cmd/ctrl-u)
ctrl-o
[[]] now sorts the exact match to the top
(()) can now search for UIDs if it's an exact match ((yPgg9DUbF))
{{table}}
🔗
'25, '24) with a full date tooltip on hover
Type:: attribute to a page and a chip appears next to the title; click it to open a sidebar panel with the fields you care about for that type.
roam-meta-type keeps the outline. It just makes the structure visible.
Type:: attribute. Multi-typed pages (Type:: #Project #Blog) get one chip per type.
🔗
—. Click and the plugin creates the missing block (e.g. Status:: ) before flipping into edit mode.
🔗
Priority:: directly in the page body, the panel updates without a re-render.
Type:: blocks (e.g., Project).
Status, Priority, Due, Topics). Each becomes a row in the sidebar panel.
typePrefix — the block prefix used to detect typed pages (default Type::).
flashColor — the RGB highlight color for the click-flash animation (default { r: 16, g: 107, b: 163 }).
types-config under this extension's settings).
Type:: attribute as a top-level block on the page, with one or more #TypeName references:
text
- Type:: #Project
- Status:: Doing
- Priority:: P1
- Due:: [[April 30th, 2026]]
- Topics:: [[Roam]] [[Productivity]]
Type::, looks each reference up in the configured types, and renders one chip per known type. Unknown types are silently skipped — no chip, no error.
🔗
Settings -> Extensions -> Roam Toolkit Vim Mode, where every binding is editable.
Tab / Shift+Tab shortcuts for Roam-style indenting and outdenting
qwerty. The Roam settings panel remains the authoritative live list, because every shortcut can be remapped there.
Keyboard Layout to colemak, these defaults change:
k
h
j
k
h
j
Cmd+Shift+K
Cmd+Shift+H
Cmd+Shift+J
Cmd+Shift+K
Ctrl+Alt+K
Ctrl+Alt+H
Ctrl+Alt+J
Ctrl+Alt+K
Ctrl+Shift+K
Ctrl+Shift+H
Ctrl+Shift+J
Ctrl+Shift+K
k
j
Shift+H
Shift+L
g g
Shift+G
Ctrl+U
Ctrl+D
Ctrl+Y
Ctrl+E
Alt+Z
Shift+Z
1
Shift+1
2
Shift+2
z
Ctrl+Shift+Z
h
l
Ctrl+W
Escape
i
a
Shift+A
Shift+O
o
Tab
Shift+Tab
v
Shift+K
Shift+J
p
Shift+P
y
Alt+Y
Shift+Y
d
Cmd+Shift+K
Cmd+Shift+J
u
Ctrl+R
q, w, e, r, t, f, b
0 through 6 inside the selected block
Shift+q, Shift+w, Shift+e, Shift+r, Shift+t, Shift+f, Shift+b
0 through 6
Ctrl+Shift+q, Ctrl+Shift+w, Ctrl+Shift+e, Ctrl+Shift+r, Ctrl+Shift+t, Ctrl+Shift+f, Ctrl+Shift+b
0 through 6
s
Shift+S
g l
Shift+I
Cmd+Enter
TODO / DONE
Ctrl+Shift+1
AGAIN
Ctrl+Shift+2
HARD
Ctrl+Shift+3
GOOD
Ctrl+Shift+4
EASY
Ctrl+Alt+Up
Ctrl+Alt+Down
Ctrl+Alt+K
Ctrl+Alt+J
Ctrl+Shift+Up
Ctrl+Shift+Down
Ctrl+Shift+K
Ctrl+Shift+J
Keyboard Layout switches layout-sensitive defaults between qwerty and colemak
Reset Shortcuts restores the default keymap for the selected layout
/table Improvements
/table Improvements
;; and select Nautilus Enhanced to insert the spiral component into today's Daily Note.
12:30-14:00 Lunch).
Read a book 30m). If no time is set, they fall into the default setup.
;; 唤出模板菜单,选择 Nautilus Enhanced 组件。
12:30-14:00 午餐会议),它就会被固定分配在表盘特定时段上。
回复邮件 30m,默认占据时长在设置里可调)。
:q
dnp/this-quarter-start, ms/this-quarter-start, ms/+1Q-start, ms/+1Q-end, ms/this-quarter-end, ms/last-quarter-start
:q
:q feature has existed since very early Roam, but we revamped it last year
:q
current/main-window-* constants — 5 new symbols to reference the page/block focused in the main window
current/main-window-page-title NEW ✨
current/main-window-page-uid NEW ✨
current/main-window-page-id NEW ✨
current/main-window-block-uid NEW ✨
current/main-window-block-id NEW ✨
in-dnp-between, refs-dnp-between, in-or-refs-dnp-between rules to :q
rules to ease writing queries
(in-dnp-between ?start-dnp ?end-dnp ?b) NEW ✨
(refs-dnp-between ?start-dnp ?end-dnp ?b) NEW ✨
(in-or-refs-dnp-between ?start-dnp ?end-dnp ?b) NEW ✨
(in-dnp ?dnp ?b) NEW ✨
(refs-dnp ?dnp ?b) NEW ✨
(in-or-refs-dnp ?dnp ?b) NEW ✨
?start-dnp ?end-dnp and ?dnp params accept dnp page titles or dnp/* style symbols (since they resolve to DNP page titles)
dnp
:node/title) for the relevant daily note page
dnp/today
dnp/yesterday
dnp/tomorrow
dnp/-1D
dnp/+1D
dnp/this-week-start
dnp/this-week-end
dnp/this-month-start
dnp/this-quarter-start
dnp/this-year-end
dnp/=2025-01-01
in-dnp-between, refs-dnp-between, in-or-refs-dnp-between enable Examples of :q query blocks
(in-dnp-between dnp/this-month-start dnp/this-month-end ?b)
(in-or-refs-dnp-between dnp/last-week-start dnp/last-week-end ?b)
(refs-dnp-between dnp/this-week-start dnp/this-week-end ?b)
ms/next-week-start or rules like (in-or-refs-dnp-between ?start-dnp ?end-dnp ?b), as well as everything else in Roam-specific :q additions
ms/* and dnp/* symbols are resolved when in daily note pages
{between: [[today]] [[tomorrow]]} in {{query: ....}} works
:q query is on a daily note page, ms/today-start (for example) resolves to the start of day for the day corresponding to that daily note page.
:q queries in any other (non-DNP) page, ms/today-start corresponds to the actual today
:q
Ctrl-O
[[> title]] in blocks, before this mistakenly displayed a block quote
isa::[[person]] [[author]]
[[restaurant]], [[park]])
Cmd+P) and run:
Queries, Projects)
TODO, Evergreens)
> lines in Markdown imports are now grouped into a single blockquote block.
> prefix, including multi-line blockquotes and cases where > is not followed by a space. Previously, the first character after > could be clipped.
<blockquote> HTML on the clipboard, so pasting into other apps preserves the quote formatting.
Cmd/Ctrl + P)
text
# Page Title- first block on the page
- nested child block
- second block
## Backlinks### [[Source Page A]]- block that references the exported page
- child of the referencing block
- another child
### [[Source Page B]]- another referencing block
[[page references]] are preserved as-is
Gemini, OpenRouter, or Manus)
dispatched, polling/streaming, writing, terminal states)
Deep Research task:: block
corsAnywhereProxyUrl). The extension will display an error if the proxy is unavailable.
Run Deep Research task
/Run Deep Research task (runs against the current block)
iziToast input modal
Gemini: polling mode via /v1beta/interactions
Manus: polling mode via /v1/tasks (through Roam CORS proxy)
OpenRouter: streaming mode via SSE (/api/v1/chat/completions)
extensionAPI.settings
results_written:: true marker for idempotency
Summary::
Key Findings::
Evidence / Citations::
Open Questions::
Suggested Next Actions::
Attachments::
References::
Provenance::
Cancel Deep Research task
window.RoamExtensionTools['deep-research']
rdr_run_research
rdr_get_jobs
rdr_cancel_job
rdr:job-dispatched
rdr:job-completed
rdr:job-failed
rdr:job-canceled
Research providerValues: gemini, openrouter, manusChanges runtime path (polling vs streaming), API auth, and provider normalisation.Provider key + model/profilegemini:Gemini API keyResearch agent (currently fixed to deep-research-pro-preview-12-2025)openrouter:OpenRouter API keyResearch model (select from curated deep-research models)manus:Manus API keyAgent profile (manus-1.6, manus-1.6-lite, manus-1.6-max)Max job duration (minutes)Upper wall-clock bound before a polling job is abandoned.Max output blocksHard cap for writeback size and truncation behaviour.Store raw output on schema errorsAdds raw provider payload blocks when structured parsing fails.Archive completed jobsMoves old terminal jobs to monthly archive pages before cleanup.Upload attachments to Roam
> [!warning] Watch out in any block./markdown
/code block slash command now inserts at the cursor position instead of replacing the entire block content
{{date}} picker now auto-focuses today's date on open, so arrow keys work immediately for keyboard navigation
{{date}} picker now refocuses the block with the cursor placed after the inserted page reference
Canvas/*)
Ctrl+click) or sidebar (Shift+click)
Canvas/*.
Canvas/Project Planning
Canvas/Ideas
> [!warning] Watch out in any block.[](<url>) for other urls which might not display right
[Mathematical theory](https://en.wikipedia.org/wiki/Theory_(mathematics))
[title ...](<special url>)
<> should always work, no matter then special characters in the URL
.bp3-dark)
Max breadcrumbs: max number of prior locations to keep
Truncate length: max label length before truncation
#like-this, images, embeds, links, and everything else you normally do in Roam.
Ctrl/Cmd + Shift + P), run "Sticky Notes: Create Sticky Note", and a new note appears.
#tags, /commands, images, and links.
roam/js/sticky-note) so they stay in your graph while they exist, but the extension is built so you can treat them as disposable: create, use, delete.
🔗
🔗
https://youtube.com/watch?v=...)
Cmd/Ctrl + P) and run Import Youtube Transcript
🔗
120px to 35vh for more scroll room
MutationObservers to react to Roam UI changes
Cmd–P / Ctrl–P)
Roam native / A → Z / Z → A
<button> elements
aria-label and aria-pressed
-> ), Better Bullets:
better-bullets/type), so the UI stays correct even after you strip the marker.
better-bullet-arrow to the block container.
= , -> , => , ?? , ...
=
=
->
→
=>
⇒
?
?
!
!
+
+
v> (configurable)
⤷
~
≠
^
▸
∴ (configurable)
∴
??
◊
<-
↤
@
↗
...
↻
->hello won’t trigger; -> hello will.
better-bullets/type prop from the focused block.
text
:root {
--bb-bullet-size: 14px;
--bb-bullet-font-size: 12px;
--bb-bullet-translate-y: 0px;
}
better-bullets/type, and (optionally) when stripping marker prefixes you explicitly enabled.
#.rm-g group css to display when a block is selected inside the group
shift+enter usually adds a new line within the current block, we adjusted when that behavior triggers so you won’t get “stuck” with shift held down and unable to create a new block.
{{table}} not sorting rows correctly in some cases
{{or: opt1 | opt2 | opt3}} component
{{word-count}} and word count in All Pages to work better with non English languages (notably Cyrillic)
cmd-shift-v (paste as plaintext) on Mac
cmd-u (find or create) search
cmd-enter afterwards would also not refocus the outline
cmd-opt-shift-v
Alt+Up/Down is good if you don't use those for something else
{{calc}} and having two in the same block which reference different blocks
cmd/ctrl-f on desktop app inside a code block triggering both the code block find and the page find
.rm-block-text css class caused the arrow keys to stop working
가[ inserting 가[가[] (duplicating the character)
[「]
option + > not inputting ≥ (on Mac)
【 【 -> [[]]
(( -> (())
;; -> ;;
:: -> ::
Export to Slack
Export to WhatsApp
Export to Google Docs
Export to RichText
Todoist: Sync backup) ou pelo ícone na topbar.
todoist/<todoist-id>, preservando histórico por item.
todoist-id::, evitando duplicidades e removendo tarefas inexistentes sem apagar concluídas.
@label) para hashtags (#label) para facilitar filtros dentro do Roam.
Roam Depot → Extension Settings → Todoist Backup. A aba exibe todos os campos configuráveis:
todoist). Cada tarefa é escrita em prefix/<todoist-id>.
1 minuto).
Todoist: Sync backup.
text
[[January 2nd, 2025]] Task title #ProjectName
todoist-id:: [123456789](https://todoist.com/showTask?id=123456789)
todoist-due:: January 2nd, 2025
todoist-desc:: Optional description
todoist-labels:: #label-1 #label-2
todoist-completed:: [[January 2nd, 2025]]
todoist-status:: ✅
comments...
todoist-comments:: 2
[todoist](https://todoist.com/app/task/123456789/comment/456) Comment text
todoist-comment-id:: 456
todoist-comment-posted:: 2025-01-02T10:00:00.000Z
MMMM Do, YYYY, aligned with Roam's daily pages standard. Labels are sanitized and prefixed with #. When comment capture is active, a comments... child block brings each Todoist comment ordered chronologically.
todoist/<todoist-id> page. Existing blocks are updated, new ones are added, and tasks removed from Todoist stop appearing (completed ones remain).
MMMM Do, YYYY format, allowing direct links with Roam's daily pages.
ouraring/YYYY-MM-DD with the header #ouraring [[Month Do, YYYY]].
pnpm install && pnpm build
extension.js via Roam's custom script loader
ouraring
prefix/YYYY-MM-DD)
7
false
roam/js/ouraring.
roamAlphaAPI.constants.corsAnywhereProxyUrl) to route API requests, adding the necessary headers automatically.
Oura: Sync daily data from the command palette (Cmd/Ctrl + P).
text
#ouraring [[November 29th, 2025]]
Sleep
Score: 85
Bedtime: 22:30 – 06:45
Total sleep: 7h 32m
...
Contributors
Deep sleep: 85
...
Readiness
Score: 78
Temperature deviation: +0.15°C
...
Activity
Score: 90
Steps: 8543
...
Heart rate
62 bpm avg / min 48 / max 145
Workouts
07:30 – Running (45m, 320 kcal, 5.20 km, moderate)
Tags
22:00 – [[No Caffeine]]
08:30 – [[Meditation]] – 15 min session
{} in them
text
{{[[TODO]]}} Write weekly newsletter
- BT_attrRepeat:: every Friday
- BT_attrDue:: [[2025-11-07]]
text
{{[[DONE]]}} Write weekly newsletter
- BT_attrRepeat:: every Friday
- BT_attrDue:: [[2025-11-07]]- completed:: [[2025-10-31]]
BT_attrStart:: (when the task becomes available) and/or defer attribute BT_attrDefer:: (when it should resurface). These labels are configurable in settings; defaults are BT_attrStart and BT_attrDefer. The completion attribute defaults to completed:: but can also be configured in Settings.
start::, defer::, or due:: to create a scheduled one-off task. It uses the same child-block storage, pills, snooze controls, and completion logic — just without spawning a follow-up block. Completing it writes completed:: [[<today>]] and hides the pill.
text
- BT_attrProject:: [[Website Refresh]]- BT_attrWaitingFor:: [[Finance Team]]- BT_attrContext:: @computer, #office
- BT_attrPriority:: high
- BT_attrEnergy:: medium
🔗
Wed, Thu); anything further out shows a short date (Feb 26), so you can scan upcoming items quickly.
BT_attrStart)
BT_attrDefer)
BT_attrDue)
BT_attrCompleted).
every 2 weeks on Sat & Sun, Mon-Fri) interpret ranges using this anchor. Default is Monday.
https://platform.openai.com/settings/organization/billing/overview).
Toggle Better Tasks Dashboard) or the icon
🔗 that appears in Roam’s top bar. The dashboard lists every Better Task (recurring or scheduled one-off) with:
🔗
Ctrl+P / Cmd+P) or block context menu:
repeat:: attribute accepts natural-language patterns. Parsing is case-insensitive, tolerates extra whitespace, and supports separators like commas, /, &, and the word and.
Mon, Tue, Thu, MWF, TTh, Mon–Fri).
due:: (preferred). If no due:: is present, the current date is used as the anchor.
every day | daily
every 2 days | every other day | every second day
every three days
every 5 days
every weekday | business days | workdays
every 2 weekdays
every monday
every mon | EVERY MON | every MOnDaY
weekly | every week
every other week | every second week | biweekly | fortnightly | every fortnight
every 3 weeks
weekly on tue, thu
weekly on tue thu
weekly on tue & thu
& supported)
weekly on tue/thu | Tu/Th | t/th
every mon, wed, fri | MWF
TTh
weekly on tue, thu and sat & sun
every mon-fri | every mon–fri | every mon—fri
every fri–sun
every su–tu
every 2 weeks on monday
every 3 weeks on fri
every 4 weeks on tue, thu
monthly
due:: day)
every month on day 15
the 1st day of each month
day 31 of each month
last day of the month | EOM
on the 1st and 15th of each month
on the 15th and last day of each month
on the 5th, 12th, 20th of each month | on the 5th/12th/20th of each month | on the 5th & 12th & 20th of each month
first monday of each month
2nd wed every month
last friday of each month
1st and 3rd monday of each month
penultimate friday of each month / second last friday ...
first weekday of each month
last weekday of each month
every month on the second tuesday
2nd Tue each month
the last thu each month
every 2 months on the 10th
every 3 months on the 2nd tuesday
quarterly
semiannual / semi-annually / twice a year
every March 10, on 10 March every year
annually, yearly (fixed-date anchor)
first Monday of May every year
every weekend | weekends
Mon/Mon./Monday, Thu/Thurs/Thursday, MWF, TTh are accepted.
Mon–Fri (or Mon-Fri) expands to all included days.
31st → Feb 28/29).
monday/mondays, week/weeks, etc.
repeat:: value automatically becomes a repeating Better Task.
🔗
🔗
🔗
text
curl http://localhost:11434/
text
ollama list
# or via the API
curl http://localhost:11434/api/tags
https://roamresearch.com.
text
# Option 1: Download from public URL
curl -fsSL https://public.qcrao.com/rr-copilot/setup_ollama_cors.sh | bash
.zshrc, .bash_profile, etc.)
text
# Download and run the test script
curl -fsSL https://public.qcrao.com/rr-copilot/test_ollama_cors.sh | bash
text
# Download and run the cleanup script
curl -fsSL https://public.qcrao.com/rr-copilot/cleanup_ollama_cors.sh | bash
Cmd+P / Ctrl+P) → Search "Roam Copilot"
🔗
🔗
alt and click and drag to select an area
{{mentions}} component not applying right
{{date}} component out of bounds, and increased the date range to 10 years from now
🔗
/upload a docx file into your graph and the extension will recognise the file, and render it in place.
🔗
🔗
{{video: }} not displaying youtu.be shortened urls
(()), [[]], etc) work to better keep the active item in view
Consider all context from our conversation thread and use that context along with any results your search may produce to inform your response.
["space.com", "nasa.gov", "-wikipedia.org"]
#F-Note - For Fleeting Notes
#L-Note - For Literature Notes
#R-Note - For Reference Notes
#Z-Note - For Permanent Notes
#Q-Note - For Question Notes
10.1088/1741-4326/ab8e8b or doi.org/10.1016/j.neuron.2021.09.035 unless they are already preceded by https://
[clipboard text](link)
[10.1088/1741-4326/ab8e8b](https://doi.org/10.1088/1741-4326/ab8e8b)
[Testing a global standard for quantifying species recovery and assessing conservation impact](https://doi.org/10.1111/cobi.13756)
[]() the extension will convert that string to a markdown link using your preferred display format from the settings.
:q
:q is)
:q queries can be used to display the results of datomic/datascript queries in your Roam graph
:q feature has existed since very early Roam, but we revamped it a few months ago in december
:q
uid in the name
:q [:find ?p :where [?p :node/title]]
:block/string or :node/title
to number
remove attribute
[:find ?e ?s
:where
[?parent :block/uid "CQjUT-rQD"]
[?parent :block/children ?e]
[?e :block/string ?s]]
[:find ?e ?s
:where
[?parent :block/uid "CQjUT-rQD"]
[?parent :block/children ?e]
[?e :block/string ?s]]
... menu
... menu
:q "Pages in the graph" [:find ?p :where [?p :node/title]]
:q (i.e. date arithmetic)
rules to ease writing queries
:q "Title" ((clojure code block with query))
:q "Number of pages in the graph" [:find (count ?page) . :where [?page :node/title _]]
[:find (count ?page) .
:where
[?page :node/title]]
:q "Number of pages in the graph" ((Zjbs1ksj0)))
[:find (count ?page) .
:where
[?page :node/title]]
text
quadrantChart
title Reach and engagement of campaigns
x-axis Low Reach --> High Reach
y-axis Low Engagement --> High Engagement
quadrant-1 We should expand
quadrant-2 Need to promote
quadrant-3 Re-evaluate
quadrant-4 May be improved
Campaign A: [0.3, 0.6]
Campaign B: [0.45, 0.23]
Campaign C: [0.57, 0.69]
Campaign D: [0.78, 0.34]
Campaign E: [0.40, 0.34]
Campaign F: [0.35, 0.78]
:root {
--mermaidjs-theme: dark;
}
/mermaid and selecting mermaid from the dropdown
:qquery that is very inefficient, it won't freeze your Roam graph indefinitely
q, pull, and variant functions in Roam Alpha API
Query and/or pull expression took too long to run. when you run into the timeout limit
/query to open a new one

cmd-p or ctrl-p) and then triggering the command "Toggle Zen Mode"
cmd-u or ctrl-u
ctrl-shift-d or alt-d
Menu Bar > View > Hide menu bar when fullscreen
:q:
⟳ appearing on the right of the AI response and choose another model. The new response will be inserted just above the first one.
AI Assistant (<model>):). It is not necessary to insert your role (such as "Me:") but more convenient in terms of readability.
Live AI Assistant: Open commands context menu command from the Command Palette (Cmd/Ctrl + p), or even better, use the shortcut (default is Cmd + Ctrl + a, which you can modify as you wish). Two other very simple options: right-click on the AI completion icon, or Cmd/Ctrl + right-click anywhere on the page where right-clicking does not have a specific function in Roam.
#liveai/prompt in some block. The content of this block will be used as title of your custom prompt and all its children will be used as a structured prompt (block references will be resolved). They will appear in the "custom prompts" section of the context menu. In the title block of your custom prompt, you can define an inline context, see the syntax [here]((https://github.com/fbgallet/roam-extension-live-ai-assistant/blob/main/docs/generative-ai.md#3-context-definition-and-inline-context).
Alt): the current page zoom where the focus block or selected blocks are inserted, or by default, the main page zoom (at the center of the display)
Ctrl): the linked references of the current page
Shift): all the content of the sidebar
Ctrl): if you are in Daily Notes, the last DNPs (7 by default, you can increase the limit in the options)
:q query syntax. The results are less reliable than with the previous agent because the syntax is much more complex. It works very well for fairly simple queries, more randomly for complex ones. See details here.
created-by: or edited-by: any user
{{[[query]]: {and: [[DONE]] {created-by: [[Conor White-Sullivan]]} {edited-by: [[Baibhav Bista]]}}}}
edited-by: matches only the user who last edited the block.
by:
by: previously used to behave like edited-by: but now matches blocks either created or edited by particular user
{{[[query]]: {by: [[API Token: Baibhav's Raycast]]}}}
[changes]([[Change Log]])
ctrl-p and ctrl-n hotkeys for navigating up/down in a number of list views
[[]]), cross graph search (cmd-shift-u), Find or create page (cmd-u) and Advanc3ed block search (ctrl-shift-9)
ctrl-k and ctrl-j for navigating up/down too
{POST} - Post content
{URL} - Post URL
{AUTHOR_NAME} - Author's display name
{AUTHOR_HANDLE} - Author's Bluesky handle
{AUTHOR_URL} - Author's Bluesky profile URL
{DATE} - Post date
{NEWLINE} - Line break
{IMAGES} - Post images (when using inline mode)
[[Page References]] are converted to #hashtags
((Block References)) are resolved to their content
 syntax are uploaded
{{date}} component
:q query blocks**
:q queries can be used to display the results of datomic/datascript queries in your Roam graph
:q you would like help with, can always ask in the Roam Slack. We have a lot of really helpful members!)
:q
{{table}}s from Microsoft Excel desktop
{search: <search query>} to search inside of your queries!
{{[[query]]: {and: {search: June} {search: mobile}}}}
(()) search
{{[[table]]}}
*italics* into Roam syntax __italics__
__italics__, which normally means bold, but passes through as italics so that Roam exports work correctly
🔗
🔗
🔗
🔗
🔗
🔗
graph-name + "-" + file-id-in-graph + "-" + original-file-name
🔗
🔗
🔗
🔗
🔗
embed, embed-path and embed-children
{{video}} components
<%NYTCROSSWORD%>
{{NYTCrossword:SmartBlock:crossword}}
[[Speak to Roam]] Captures
Shortcuts/SpeakToRoam/FailedRecordings. If it suceeds, you can find them in Shortcuts/SpeakToRoam/HandledRecordings. Behavior slightly different on Apple Watch)
cmd-shift-u on mac or ctrl-shift-u on windows
{{query}} #Query
{{table}} #Table
{{slider}}, {{word-count}}, {{character-count}}, {{embed-path}}, {{embed-children}}
((parentheticals))
{
((88lsljdkf)) could create links if that uid didn't already exist in the graph
{{embed-children: ((block ref))}}
🔗
🔗
🔗
🔗
🔗
🔗
🔗
{{video}} {{video-timestamp}} #Video Timestamps
{{sliders}}, {{excalidraw}}, {{diagram}} and other {{}} components
{{mentions}} and {{children-mentions}} components
{{children-mentions: [[page]]}}
[[page]]. you can also use it with a block reference
cmd-f or ctrl-f, you need to use the built in search component.
🔗
🔗
🔗
🔗
🔗
{{excalidraw}} drawings or {{slider}}s also updates the last edited time
{{search: }} component
enter to confirm, or escape to cancel
@, :, r: or e: in the beginning of the search, or you can also set hotkeys which takes you directly to a particular mode
#.css-level-bg
#.css-level-color
#.css-font-yellow
#.css-bg-olive-300
#.css-grid3
has() CSS selector.
cmd + [ / ] in mac, alt + left/right in windows/linux). Old shortcuts still work too.
((
cmd-p) for "Change Block View"
/excalidraw
.rm-code-block--{lang}. For example: .rm-code-block--js for javascript code blocks, .rm-code-block--clj for Clojure code blocks #CSS Changes
.rm-code-block--json, .rm-code-block--json-ld {
// colors inspired from VS Code
.cmt-propertyName {
color: #22509F;
}
.cmt-bool {
color: #0000ff;
}
.cmt-number {
color: #458A64;
}
.cmt-string {
color: #95261F
}
}
.rm-code-block--json-ld {
// json-ld seems to use cmt-atom for booleans and cmt-meta for property names that begin with @
.cmt-atom {
color: #0000ff;
}
.cmt-meta {
color: #22509fb6; // a lighter version of cmt-propertyName
}
}
🔗
🔗
🔗
#.rm-hide-for-readers css class / tag. Hides the block and it's descendants for people who only have read access to that block.
\gdef\matrix#1{\begin{bmatrix}#1\end{bmatrix}}
\matrix{1&2&4\\1&2&3}
{by: [[user's display page]]}
" or ' with text selected will wrap the text with the matching character
cmd-f / ctrl-f find in page search for the Desktop App (version 0.0.16 or higher)
{{[[streak]]: [[Daily Highlight]]}}
/streak
{{[[streak]]: [[DONE]]}}
{{[[streak]]: [[DONE]] [[Solutions]]}}
{{[[streak]]: {or: [[DONE]] [[Solutions]]}}}
cmd-shift-up/down, PC: alt-shift-up/down)
/search)
🔗
🔗
ctrl-shift-v) pasting twice on desktop app in linux and windows
https://developer.roamjs.com/, this extension is gonna transform it to [Introduction - RoamJS](https://developer.roamjs.com/)
{{maps}} in a block. When the block renders, an interactive map will render in its place!
Bedtime Start:: hh:mm:ss
Bedtime End:: hh:mm:ss
Sleep Duration:: hh:mm:ss
Total Sleep:: hh:mm:ss
Total Awake:: hh:mm:ss
Light Sleep:: hh:mm:ss
Rem Sleep:: hh:mm:ss
Deep Sleep:: hh:mm:ss
Day Start:: hh:mm:ss
Day End:: hh:mm:ss
Low Activity:: hh:mm:ss
Medium Activity:: hh:mm:ss
High Activity:: hh:mm:ss
Rest Activity:: hh:mm:ss
Readiness Score:: hh:mm:ss
{{import oura ring}} into a page and clicking the button.
ctrl-m (PC) or cmd-m (Mac) (customizable)
#.rm-E will display their immediate children next to them,
#.rm-g are hidden when they are open - revealing the children nested within them
{{calc: }} for parsing block references has changed
( ) to make sure that that each component in the calculation was evaluated independently before the values were aggregated After this update, every reference used in a calculation will be wrapped in a () automatically before calculation is applied remember PEMDAS?
() automatically before calculation is applied
{{embed-path: ((block-ref))}} - Experimental new view of block embeds where path is visible and clickable - similar to what you'd see for the block in inline-references
var(--inline-highlight-color) for the color of highlights
var(--highlight-color) for color of highlighted blocks due to zooming out in a embedded context like within backlinks, sidebar, or block refs.
escape to exit the command pallete
0.0.15
https://roamresearch.com/ we have roam://
https://roamresearch.com/#/app/help/page/hyL5OPFah
roam://#/app/help/page/hyL5OPFah
**__^^bih^^__**: bih
__**^^ibh^^**__: ibh
**^^__bhi__^^**: bhi
__**^^ibh^^**__: ibh
^^**__hbi__**^^: hbi
**__^^bih^^__**: bih
constructor keyword
1.3.9 * *
1.3.8
1.3.8
:log/id, causing daily note pages to not show up in the log
roamAlphaAPI, the API that roam extensions are built on top of.
[[5 days ago]]
[[2 weeks from now]]
[[last friday]]
[[wed]]
[[2021-11-13]]
[[11-13-2021]]
[[17 nov 2019]]
codemirror.next
latex and dart languages
cmd-p on Mac
control-p on Windows or Linux
Cmd/Ctrl+Opt+R) to toggle Youtube Videos playback while typing in a block
between contained only one date
#.style-tags-like-this now propogate to references of those blocks red #.bg-red-500 #.text-white , white and blue #.bg-blue-500 #.text-white
#.style-tags-like-this now propogate to references of those blocks red #.bg-red-500 #.text-white , white and blue #.bg-blue-500 #.text-white ))
/video timestamp or hit Cmd/Ctrl+Alt+t under a video to enter a timestamp
\r
Account panel in the Settings menu
roam/css
data.block.create and data.block.update can now be used to set alignment, heading, and the children blocks' view type. See developer docs for more info.
... menu in the top right of your screen, the Graphs and Settings page, or our home page
Settings > User Settings > International to toggle.
Cmd/Ctrl+Shift+C)
Settings > User Settings > Inline Reference Counts to activate.
text
graph TD
A[ Anyone ] -->|Can help | B( Go to github.com/yuzutech/kroki )
B --> C{ How to contribute? }
C --> D[ Reporting bugs ]
C --> E[ Sharing ideas ]
C --> F[ Advocating ]
{{[[kroki]]: TYPE_HERE: BLOCK_REF_HERE}}
{{[[kroki]]: mermaid:((13fZ8yxDr))}} will produce:
text
graph TD
A[ Anyone ] -->|Can help | B( Go to github.com/yuzutech/kroki )
B --> C{ How to contribute? }
C --> D[ Reporting bugs ]
C --> E[ Sharing ideas ]
C --> F[ Advocating ]}}
data-uid to Block References
... > Settings > Files
data-edit-time, data-create-time, and data-edit-display-name from span.rm-bullet to div.rm-block
data-edit-photo-url
Settings > Hotkeys
Settings > User Settings.
<a> (link) tags in pasted content will no longer be rendered.


Check for Updates toast
markdown version · view in Roam Research · exported 2026-07-03