now that I moved into DT4 with lots of my stuff and workflows, I am looking into migrating my daily DayOne usage into it as well.
I am struggling to find a convenient way to create new entries though, which I want to figure out before I will look into migrating my DayOne records into DT4, where I saw that nice howto on the forums.
The records also usually have tags, a geo location (preferrably taken from the images, not the location I am creating the entry at) and of course the current timestamp.
When I fumbled around with DT4TG I did not find an easy, convenient way to create records in such a way. Most of the time, the app got stuck and I had to force kill it, when I added some images from my phone (15 Pro Max).
What would be the best approach to create records like this?
Why keep a “dairy” that mimics DayOne if you already milk DayOne for all it’s worth? You didn’t mention any need to have your diary connected deeply to your data in DEVONthink. And some of the DayOne features will need non-trivial coding to achieve in DTTG.
So, why change. Unless, change-for-change’s-sake is the goal.
I am trying to validate if I can get rid of DayOne to eliminate another cloud based application with a yearly subscription. I don’t need the connection to my other data though, so that’s not my focus.
The local storage with full control over my data is the reason, why I am looking into it.
Depending on your needs it’s probably worth checking Apple’s newer native offering since they basically used DayOne to design their own, and it would eliminate your subscription and bring your content all under your AppleID, which you presumably use already.
However, if you’re still super-keen to set it all up in DTTG with RTF files or something, it could all be achieved with an Apple Shortcut. There have been a couple of chats over the years in here about doing this so it’s worth digging around on the forum (some key terms might be “journal”, “dayone”, “daily log”).
Apple Shortcuts shines for stuff like this with DTTG I find because you can build a long complex shortcut that pulls data from your different apps (if their devs have built good Shortcut integrations) with one click, and create a custom log just based on what you’re interested in.
My setup is different to yours as I’m using markdown and a couple of other steps, but my daily shortcut to set up the file pulls in various data from my other apps including the weather forecast. I have a separate shortcut that I can run to send the title of things I’m reading to it during the day, so I can add a couple of notes. By the time I open the daily file it’s already got the main info I want in it.
Myself, @MsLogica and a few others have laid out the Shortcuts to DTTG workflow a couple of times. I’ve posted a sharable version of my start of the day shortcut more than once. It’s worth a search to see how others do it as well. (One md doc per day with list of all events vs. one group per day with one md doc per event)
Is DT2Go a must? With the help of the DEVONthink AI integration I let Claude create an Apple script for my research diary. I bet there is a lot to improve, yet it works. The prompt was:
The script should be run outside of DEVONthink using Keyboard Maestro or a similar tool. It should check the Global Inbox to see if a file with the naming convention “YYYY-MM-DD Forschungstagebuch” already exists, where the sortable dates in ISO format (YYYY-MM-DD) must match the current date. If the file already exists in the Inbox or in the “Forschungstagebuch” group in any open database, the file should be opened as a tab and the tab activated. If a window/tab with the file is already open, the script should not open a new window, but rather activate the already open window/tab. If the file does not exist, it should be created using the “Forschungstagebuch” template in the “Data>New from Template>Academia_Writing” submenu with the tags “tp-Journal” and the current year. The file should be opened as a tab and the tab activated.
One has to change the word “Forschungstagebuch” to something more fitting or come up with their own design.
-- Neuer Eintrag ins Forschungstagebuch; neue Datei wenn nicht vorhanden, öffne Datei, wenn vorhanden
tell application id "DNtp"
activate
-- Build today's ISO date string (YYYY-MM-DD)
set theDate to current date
set yearNum to year of theDate
set monthNum to (month of theDate) as integer
set dayNum to day of theDate
set yearStr to yearNum as string
set monthStr to characters -2 thru -1 of ("0" & monthNum) as string
set dayStr to characters -2 thru -1 of ("0" & dayNum) as string
set dateString to yearStr & "-" & monthStr & "-" & dayStr
set targetName to dateString & " Forschungstagebuch"
set foundRecord to missing value
-- Step 1: Search in Global Inbox root
set theInbox to inbox
set inboxChildren to children of root of theInbox
repeat with rec in inboxChildren
if name of rec starts with targetName then
set foundRecord to rec
exit repeat
end if
end repeat
-- Step 2: Search in "Forschungstagebuch" group across all open databases
if foundRecord is missing value then
set allDatabases to databases
repeat with db in allDatabases
try
set docGroup to get record at "/Forschungstagebuch" in db
if docGroup is not missing value then
set groupChildren to children of docGroup
repeat with rec in groupChildren
if name of rec starts with targetName then
set foundRecord to rec
exit repeat
end if
end repeat
end if
end try
if foundRecord is not missing value then exit repeat
end repeat
end if
-- Step 3: Deep search across all open databases
if foundRecord is missing value then
set allDatabases to databases
repeat with db in allDatabases
try
set searchResults to search "name:" & targetName in root of db
if searchResults is not missing value and (count of searchResults) > 0 then
repeat with rec in searchResults
if name of rec starts with targetName then
set foundRecord to rec
exit repeat
end if
end repeat
end if
end try
if foundRecord is not missing value then exit repeat
end repeat
end if
if foundRecord is not missing value then
-- Check if a window/tab with this record is already open
set alreadyOpen to false
repeat with tw in think windows
try
set currentTab to current tab of tw
if currentTab is not missing value then
set tabRecord to content record of currentTab
if tabRecord is not missing value then
if uuid of tabRecord is equal to uuid of foundRecord then
set alreadyOpen to true
set index of tw to 1
exit repeat
end if
end if
end if
-- Check all tabs in the window
set allTabs to tabs of tw
repeat with aTab in allTabs
try
set tabRec to content record of aTab
if tabRec is not missing value then
if uuid of tabRec is equal to uuid of foundRecord then
set alreadyOpen to true
set current tab of tw to aTab
set index of tw to 1
exit repeat
end if
end if
end try
end repeat
if alreadyOpen then exit repeat
end try
end repeat
if not alreadyOpen then
if (count of think windows) > 0 then
open tab for record foundRecord in think window 1
else
open window for record foundRecord
end if
end if
else
-- Record does not exist: create from template
set templateBasePath to POSIX path of (path to application support from user domain) & "DEVONthink 3/Templates.noindex/"
set templateFound to false
set templatePath to ""
set possiblePaths to {templateBasePath & "Academia_Writing/Forschungstagebuch.dtTemplate", templateBasePath & "Academia_Writing/Forschungstagebuch.md", templateBasePath & "Academia_Writing/Forschungstagebuch.txt", templateBasePath & "Academia_Writing/Forschungstagebuch.rtf"}
repeat with aPath in possiblePaths
try
tell application "System Events"
if exists file aPath then
set templatePath to aPath
set templateFound to true
end if
end tell
end try
if templateFound then exit repeat
end repeat
if templateFound then
set newRecord to import template templatePath to root of theInbox
else
-- Fallback: create a Markdown document manually
set newRecord to create record with {name:targetName, type:markdown, content:"# " & targetName & return & return} in root of theInbox
end if
if newRecord is not missing value then
-- Assign tags "tp-Journal" and the current year
set tags of newRecord to {"tp-Journal", yearStr}
if (count of think windows) > 0 then
open tab for record newRecord in think window 1
else
open window for record newRecord
end if
end if
end if
end tell
Note: I accidentally didn’t specify the file format but Claude ‘anticipated’ that my preferred format is md (which is true) and set the standard format to md but also added possibility for rtf et al. in the end this is not too bad, because it gives me more flexibility if I decide to move the one particular file to rtf (at least this is what I read into the script).
Well, I have the photos on my iPhone and I do not sync them to iCloud. And its also helpful to write the entries close to the “event” I am logging. So I’d say yes, DT2Go is a must.