Hi @printperson22, this was an intriguing exercise! I've written a script that I think does what you are asking for, but it is designed to be used in a particular set up:
1. a single page document with text contained in the first text frame on the page.
2. document should have character styles for "foreground" and "background" text colors.
3. document should have paragraph style with two Grep styles (see screenshot below) that set those character styles.

The script finds all sentences and, after duplicating the first page, drops a marker character at the start and end of the current page's sentence. The paragraph style handles the formatting—all the script needs to do is drop those markers. If the script gets the sentence positions wrong—which will happen sometimes (see caveat in script)— you can just move them manually by cutting and pasting the zero width spaces (show invisibles to see them). See screenshot.

IMPORTANT: Please also download this sample indesign file (attached to this post) to see my set up.
- Mark
/*
Mark Sentences and Duplicate Pages
by m1b,
here: https://community.adobe.com/t5/indesign-discussions/help-writing-a-script/m-p/12923892
Known limitations:
Grep used to determine sentence extents
is *very basic* and will fail in many cases.
Script is designed to be used in conjunction
with an indesign document containing paragraph
style with Grep Style "\x{200B}[^\x{200B}]+\x{200B}"
*/
function main() {
var doc = app.activeDocument,
page = doc.pages[0],
textFrame = page.textFrames[0],
// NOTE: grep to find sentences is *very*
// naive and won't work in many cases
sentenceGrepString = "[^ \\r\\n][^!?\\.\\r\\n]+[\\w!?\\.]+",
// zero width space is added
// as a marker between sentences
marker = '\u200B';
// find sentences in text frame
app.findGrepPreferences = NothingEnum.NOTHING;
app.changeGrepPreferences = NothingEnum.NOTHING;
app.findGrepPreferences.findWhat = sentenceGrepString;
var found = textFrame.findGrep();
// for each sentence, duplicate page
// and set markers at start and end
for (var i = found.length - 1; i >= 0; i--) {
var pg = (i == 0)
? page
: page.duplicate(LocationOptions.AFTER, page);
var tf = pg.textFrames[0],
start = found[i].characters[0].index,
end = found[i].characters[found[i].characters.length - 1].index;
tf.characters[end + 1].insertionPoints[0].contents = marker;
tf.characters[start].insertionPoints[0].contents = marker;
}
}
app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, "Mark Sentences and Duplicate Pages");