There's two parts to this.
Firstly, running an application once in a day. I've written this in bash on linux, had someone test this. Credit where credit is due I pulled in part of this answer for invoking safari in bash
As always you'll need to tweak the bash script to your precise needs, and this probably ought to be set to hardcode a complete path or run in a specific folder for neatness. As is, the script This is a minimal, workable example though. I suspect the specific syntax of the open command may need tweaking, and you may want to completely hardcode the path of the lockfiles to be completely safe.
if [ -f $daydate.lockfile ];
echo "task already run"
rm *.lockfile; open -a safari http://www.example.com ;touch $daydate.lockfile
In english - it uses the date command and creates a environmental variable with the current day of year prefixed with an x. On first run, it'll not find the file its looking for, attempt to clear out the lockfile (and fail, since its not there), opens safari and creates a file called x
ddd.lockfile. As such, unless you run this exactly a year apart, it should work.
On every other run, it'll check for a lockfile with the current day of year. If it exists, it'll echo "task already run" (you can set this to do nothing I suppose). Else, it'll clear out previous lockfiles, open safari to example.com and create a lockfile. You could in theory have a more unique identifier than the day number (date and year?) but this works well enough.
You'd then want to run this on login. I've not tested this bit yet, and I suspect there's some more elegant way to do it.
This SO answer suggests a few ways to launch this bash file on login. The 'simplest' way I can see is using automator - borrowed from mklement0's answer
- File > New, type Application
- Add a Run Shell Script action, which adds an embedded bash script, and either paste your script code there or add a command that invokes an existing script from there.
- Save the *.app bundle and add it to the Login Items list in System Preferences > User & Groups > Login Items.
Add the bash script here and it should check each time you login and do its magic.