Obsidian
filter by function ! task.isDone
path includes {{query.file.path}}
group by heading
sort by priority
https://help.obsidian.md/Editing+and+formatting/Properties
#idea #obsidian add a glossary
2025-10-10 Vault disappeared!! Resynched with cloud vesion
2024-11-21 So, realized that crostini does not have a trash folder. Send Obsidian deletion to vault trash
#tip Images in obsidian :
in terminal run the command base64 picture.png copy the output (it might be long!, thus you can use a program to copy in terminal, such as xclip or xbcopy(?))
in markdown file, type  then CTRL-SHIFT-I to open console
the Zotero data structure https://gist.githubusercontent.com/pchemguy/19fa69fb4e74ef0cca0026aa0dbf5f42/raw/e82b2367256246c5ae2db07bdc2cb595bd2e75e5/Zotero_MainDB_ERD.svg
The following only extracts attachmens
if (data.children) {
const notes = data.children
n += '## Notes' + '\n\n';
notes.forEach(c => {
n += c.itemType + ' -- ';
n += c.title + '\n\n';
});
}
2026-01-24 code for filename
added property 'Notetype : - ZoteroSync
let fp = '';
if (data.creators && data.creators.length > 0) {
fp += data.creators[0]?.lastName;
if (data.creators.length == 2) {
fp += '+';
fp += data.creators[1]?.lastName;
} else if (data.creators.length > 2) { // add a + if more than one author
fp += '+';
}
} else fp+= 'Anon' // for references with no valid author name
// add a space after author
fp += ' ';
n += '\n\n **URL** ' + data.url; /* retrieve the iten URL */
if (data.abstractNote){
n+= '\n\n' + "## Abstract" + '\n\n' + data.abstractNote + '\n\n';
}
n+= data.marker; // make sure data marker is placed at the end of the file
return n;
2026-01-23 Code for filename
let fp = '';
if (data.creators && data.creators.length > 0) {
fp += data.creators[0]?.lastName;
if (data.creators.length == 2) {
fp += '+';
fp += data.creators[1]?.lastName;
} else if (data.creators.length > 2) { // add a + if more than one author
fp += '+';
}
} else fp+= 'Anon'
if (data.date) {
let year = new Date(data.date).getFullYear();
fp += year.toString();
}
if (data.title)
return 'References/' + fp + ' ' + data.title.replace(/[^A-Za-z0-9 ]+/g, "_"); // 2026-01-21 remove special chars except space
else return 'References/Notitle'
2026-01-21 Code to generate filename
let fp = '';
if (data.creators && data.creators.length > 0) {
fp += data.creators[0]?.lastName;
if (data.creators.length == 2) {
fp += '+';
fp += data.creators[1]?.lastName;
} else if (data.creators.length > 2) { // add a + if more than one author
fp += '+';
}
if (data.date) {
let year = new Date(data.date).getFullYear();
fp += year.toString();note
}
return 'References/' + fp + ' ' +
data.title.replace(/[^A-Za-z0-9 ]+/g, "_"); // 2026-01-21 remove special chars except space
}
code to generate filename OLD
let fp = '';
if (data.creators && data.creators.length > 0) {
fp += data.creators[0]?.lastName;
if (data.creators.length == 2) {
fp += '+';
fp += data.creators[1]?.lastName;
} else if (data.creators.length > 2) {
fp += '+';
}
if (data.date) {
let year = new Date(data.date).getFullYear();
fp += year.toString();
}
return 'References/' + fp + ' ' + data.title;
}
2026-01-26 code for note
// console.log(data) // uncomment and ctrl shift i to explore the data in console
let n = '';
// generate properties
n += '---\n';
n += 'Notetype :\n - ZoteroSync\n';
if (data.abstractNote){
n += 'Description: "' +
data.abstractNote.replace ("\n"," ") +
'"\n';
}
if (data.extra){
n += 'Extra: "' +
data.extra.replace ("\n"," ") +
'"\n';
}
if (data.tags){ // find tags
n += 'Tags:\n';
n += data.tags.map(t => {
// remove spaces around hyphens and replace other spaces with underscores
let formattedTag = t.tag.replace(/\s*-\s*/g, '-').replace(/\s+/g, '_');
return '- "' + formattedTag + '"';
}).join('\n');
}
n+='\n---\n'
/* List the authors adding markdown to link to the note in vault*/
if (data.creators) {
data.creators.forEach(author => {
n += '[[People/' + author.lastName + ', ' + author.firstName + ']] ';
});
n += '\n';
}
n += '# ' + data.title;
if (data.date) {
let year = new Date(data.date).getFullYear();
n += ' (' + year.toString() + ')';
}
n += '\n\n **URL** ' + data.url; /* retrieve the iten URL */
if (data.abstractNote){
n+= '\n\n' + "## Abstract" + '\n\n' + data.abstractNote + '\n\n';
}
n += '\n\n';
if (data.children) {
const notes = data.children.filter(
c => c.itemType.toLowerCase() == 'note'
)
n += '## Notes' + '\n\n';
notes.forEach(c => {
n += c.note_markdown + '\n\n';
});
}
n+= data.marker; // make sure data marker is placed at the end of the file
return n;
2026-01-23 code to generate note
// console.log(data) // uncomment and ctrl shift i to explore the data in console
let n = '';
// generate properties
if (data.tags){ // find tags
n += '---\n';
n += 'Tags:\n';
n += data.tags.map(t => {
// remove spaces around hyphens and replace other spaces with underscores
let formattedTag = t.tag.replace(/\s*-\s*/g, '-').replace(/\s+/g, '_');
return '- "' + formattedTag + '"';
}).join('\n');
}
n+='\n---\n'
/* List the authors adding markdown to link to the note in vault*/
if (data.creators) {
data.creators.forEach(author => {
n += '[[People/' + author.lastName + ', ' + author.firstName + ']] ';
});
n += '\n';
}
n += '# ' + data.title;
if (data.date) {
let year = new Date(data.date).getFullYear();
n += ' (' + year.toString() + ')';
}
n += '\n\n **URL** ' + data.url; /* retrieve the iten URL */
if (data.abstractNote){
n+= '\n\n' + "## Abstract" + '\n\n' + data.abstractNote + '\n\n';
}
n += '\n\n';
if (data.children) {
const notes = data.children.filter(
c => c.itemType.toLowerCase() == 'note'
)
n += '## Notes' + '\n\n';
notes.forEach(c => {
n += c.note_markdown + '\n\n';
});
}
n+= data.marker; // make sure data marker is placed at the end of the file
return n;
Code to generate note 2026-01-22
correcly import tags There is still the problem tht the Z reference appears before the tags
let n = '';
// generate properties
n += '---\n';
n += 'Tags:\n';
n += data.tags.map(t => {
// remove spaces around hyphens and replace other spaces with underscores
let formattedTag = t.tag.replace(/\s*-\s*/g, '-').replace(/\s+/g, '_');
return '- "' + formattedTag + '"';
}).join('\n');
n+='\n---\n'
/* List the authors adding markdown to link to the note in vault*/
if (data.creators) {
data.creators.forEach(author => {
n += '[[People/' + author.lastName + ', ' + author.firstName + ']] ';
});
n += '\n';
}
n += '# ' + data.title;
if (data.date) {
let year = new Date(data.date).getFullYear();
n += ' (' + year.toString() + ')';
}
n += '\n\n **URL** ' + data.url; /* retrieve the iten URL */
if (data.abstractNote){
n+= '\n\n' + "## Abstract" + '\n\n' + data.abstractNote + '\n\n';
}
n += '\n\n';
if (data.children) {
const notes = data.children.filter(
c => c.itemType.toLowerCase() == 'note'
)
n += '## Notes' + '\n\n';
notes.forEach(c => {
n += c.note_markdown + '\n\n';
});
}
n+= data.marker; // make sure data marker is placed at the end of the file
return n;
javascript code to create the note 2025-10-14
Added code to capture tags from zotero
Obsidian does not allow for multi words tags
let n = '';
/* Add tags as Obsidian tags */
if (data.tags && data.tags.length > 0) {
const zoteroTags = data.tags.map(tag => `#${tag.tag}`).join(' ');
n += '\n # tags: \n\n' + zoteroTags + '\n\n --- \n';
}
/* List the authors adding markdown to link to the note in vault*/
if (data.creators) {
data.creators.forEach(author => {
n += '[[People/' + author.lastName + ', ' + author.firstName + ']] ';
});
n += '\n';
}
n += '# ' + data.title;
if (data.date) {
let year = new Date(data.date).getFullYear();
n += ' (' + year.toString() + ')';
}
n += '\n\n **URL** ' + data.url; /* retrieve the iten URL */
if (data.abstractNote){
n+= '\n\n' + "## Abstract" + '\n\n' + data.abstractNote + '\n\n';
}
n += '\n\n';
if (data.children) {
const notes = data.children.filter(
c => c.itemType.toLowerCase() == 'note'
)
n += '## Notes' + '\n\n';
notes.forEach(c => {
n += c.note_markdown + '\n\n';
});
}
return n;
javascript code to create the note OLD
let n = '';
/* List the authors adding markdown to link to the note in vault*/
if (data.creators) {
data.creators.forEach(author => {
n += '[[People/' + author.lastName + ', ' + author.firstName + ']] ';
});
n += '\n';
}
n += '# ' + data.title;
if (data.date) {
let year = new Date(data.date).getFullYear();
n += ' (' + year.toString() + ')';
}
n += '\n\n **URL** ' + data.url; /* retrieve the iten URL */
if (data.abstractNote){
n+= '\n\n' + "## Abstract" + '\n\n' + data.abstractNote + '\n\n';
}
n += '\n\n';
if (data.children) {
const notes = data.children.filter(
c => c.itemType.toLowerCase() == 'note'
)
n += '## Notes' + '\n\n';
notes.forEach(c => {
n += c.note_markdown + '\n\n';
});
}
return n;
Zotero Import
The following code creates a filename based on the reference parameters
! format("YYYY")}} {%- else %} nd {%- endif -%} {{title
Map view
https://www.youtube.com/watch?v=sZdmJdOZuSs
2024-10-01 installed
Tried and removed
Make.md
2024-10-01 Tried, could not figure it our: should be used to select for a property and et tags
https://forum.obsidian.md/t/how-can-i-add-one-tag-to-muliple-notes-that-all-have-the-same-specific-property-at-once/70677
Timeline revamped
Markwhen
Web site publishing
#idea Options for web publishing
Obsidian Publish ( 96 $/year) or
Digital Garden
Web site | The Vercel back office |Digital Garden Docs | GitHub Account
2024-11-03 Removing Quantym physics , update is ok
2024-11-03 errors are listed in GitHb, point to Vercel https://vercel.com/robertos-projects-75b2d00c/rboninodg/BsEpG9W7SKGN71CQ3rmz5csQjtjo?filter=errors
##### [Published multiple files](https://github.com/rboninoParis/rboninodg/commit/0189e580e8b3e798d1a46a66650c45a74a0c4c7c) Active
Status: Failed to deploy (completed).
Failed to deploy toProductionby
By expanding error message I find
[11ty] 1. Having trouble rendering md template ./src/site/notes/01 Projects & activities/Writing/Note Scienza/Quantum Physics.md (via TemplateContentRenderError)
22:41:35.961[11ty] 2. Cannot read properties of undefined (reading 'docId') (via TypeError)
2024-11-03 pages do not seem to update on the web
2024-10-28 An error concerning production when publishing notes on digital garden appeared. Maybe should really move to Obsidian Publishing
A free alternative to Obsidian publish
https://dg-docs.ole.dev/getting-started/01-getting-started/ free
Set up Vercel and GitHub
Custom filter to hide part of a note from publishing
See https://dg-docs.ole.dev/getting-started/05-other-settings/ and https://www.reddit.com/r/ObsidianMD/comments/18wv6gm/digital_garden_plugin_custom_filters/
The actual custom filter is: :::hidden(.*\n)*?:::
I'll try explaining the regex, but its notoriously hard to grasp and read:
The ":::hidden" part matches the literal character
A dot, "." ,means match any single character.
Putting a star, "*", behind means match any single character 0 to infinite times.
The "\n" means any new line. So the ":::hidden(.\n)" part reads: Match any text starting with ":::hidden" and followed by a single line of 0-inifinite characters. Lastly, behind the (.\n) we put ? meaning: Match the previous group, (.\n), 0 to unlimited times as few times as possible. Then, lastly, ":::" just means the literal characters.
So all in all it means whatever is inside of ":::hidden" and ":::". You can change those to whatever you like. For example ":h", "h:" for faster typing.
Hope that helps, glad to hear you're enjoying the plugin!
Flowershow
Digital garden with flowershow https://flowershow.app/#features
Review and check your Statuses
About this file
This file was created by the Obsidian Tasks plugin (version 6.1.2) to help visualise the task statuses in this vault.
If you change the Tasks status settings, you can get an updated report by:
- Going to
Settings->Tasks. - Clicking on
Review and check your Statuses.
You can delete this file any time.
Status Settings
These are the status values in the Core and Custom statuses sections.
| Status Symbol | Next Status Symbol | Status Name | Status Type | Problems (if any) |
|---|---|---|---|---|
space |
x |
Todo | TODO |
|
x |
space |
Done | DONE |
|
/ |
x |
In Progress | IN_PROGRESS |
|
- |
space |
Cancelled | CANCELLED |
Loaded Settings
These are the settings actually used by Tasks.
flowchart LR classDef TODO stroke:#f33,stroke-width:3px; classDef DONE stroke:#0c0,stroke-width:3px; classDef IN_PROGRESS stroke:#fa0,stroke-width:3px; classDef CANCELLED stroke:#ddd,stroke-width:3px; classDef NON_TASK stroke:#99e,stroke-width:3px; 1["'Todo'
[ ] -> [x]
(TODO)"]:::TODO 2["'Done'
[x] -> [ ]
(DONE)"]:::DONE 3["'In Progress'
[/] -> [x]
(IN_PROGRESS)"]:::IN_PROGRESS 4["'Cancelled'
[-] -> [ ]
(CANCELLED)"]:::CANCELLED 1 --> 2 2 --> 1 3 --> 2 4 --> 1 linkStyle default stroke:gray
Vault maintenance
Mass edit
https://forum.obsidian.md/t/mass-edit-properties-without-plugins/
https://forum.obsidian.md/t/mass-edit-properties-without-plugins/83666