This just takes one extra step from what you already have. You can search for the string "written by john smith" in all of the text files. If that "find" _fails_, then you can execute the addition of text to the file.
for %f in (*.txt) do find /i "Written by John Smith" "%f" || copy %f+mytext.txt %f /y
The double pipe symbol || (that's the other symbol on the backslash key) basically says "if the command before me fails, then do the command after me".
So, if the "find" command doesn't find your text in a text file, it fails, and the copy command takes place.
NOTE: If you need to do this for all text files throughout your subdirectories, then you need to get a little more advanced on the "for /f" options, like this, (all on one line)
for /f "tokens=*" %f in ('dir *.txt /b /s') do find /i "Written by John Smith" "%f" || copy "%f"+mytext.txt "%f" /y
This will search your entire subdirectory structure for *.txt files and try to find "Written by John Smith" in them. If it doesn't find that text in the file, then it will append your mytext.txt file to them.
Finally, you don't actually need to do a copy command to tag your files. You could just echo your text into the file, like this, (all on one line),
for /f "tokens=*" %f in ('dir *.txt /b /s') do find /i "Written by John Smith" "%f" || echo Written by John Smith>>"%f"