The arXiv link is easier, since all the information are already there and it has a known format, so a simple regex show-rule is sufficient:
#show bibliography: it => {
let arxiv-magic = regex("arXiv: ((\d+\.\d+) \[.*\])")
show arxiv-magic: it => {
show link: set text(fill: blue)
let (text, arxiv-id) = it.text.matches(arxiv-magic).first().captures
"arXiv: " + link("https://arxiv.org/abs/" + arxiv-id, text)
}
}

The journal link is trickier. It’s a bit hacky, but you can adjust the CSL style to add some “magic” prefixes and suffixes, which you can find and transform into the desired link with a regex show-rule.
For example this modified CSL snipped
<group delimiter=" " prefix="<<<" suffix=">>>">
<text variable="URL" suffix="|||"/>
<text variable="container-title-short"/>
<text variable="issue" />
<text variable="volume" prefix="(" suffix=")"/>
<text variable="page"/>
</group>
would produce something like this:

Then using this show rule
#show bibliography: it => {
// first show rule transforms the original link
// into plain text, so we can match it with a regex
show link: it => {
if it.body.text == it.dest { // apply only to original link
it.body
} else {
it
}
}
// second show rule matches the magic prefixes and suffixes ...
let link-magic = regex("<<<(.*)\|\|\|\s*(.*)>>>")
show link-magic: it => {
// ... and renders it as a custom link
set text(fill: blue)
link(..it.text.matches(link-magic).first().captures)
}
it
}
You get:

Here is the full reproducible example:
main.typ
#show bibliography: it => {
// this show rule transforms the original link
// into plain text, so we can match it with a regex
show link: it => {
if it.body.text == it.dest { // link before processing
it.body
} else {
it
}
}
// this show rule matches the magic prefixes and suffixes ...
let link-magic = regex("<<<(.*)\|\|\|\s*(.*)>>>")
show link-magic: it => {
// ... and renders it as a custom link
set text(fill: blue)
link(..it.text.matches(link-magic).first().captures)
}
it
}
#bibliography("literature.bib", style: "style_mod.csl", full: true)
style_mod.csl
<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0">
<info>
<title>Example Style</title>
<id>http://www.zotero.org/styles/example</id>
</info>
<citation>
<sort>
<key variable="citation-number"/>
</sort>
<layout delimiter=", ">
<group prefix="[" suffix="]" delimiter=", ">
<text variable="citation-number"/>
<text macro="citation-locator"/>
</group>
</layout>
</citation>
<bibliography second-field-align="flush">
<layout suffix=".">
<text variable="citation-number" prefix="[" suffix="]"/>
<group delimiter=", ">
<names variable="author">
<name initialize-with="."/>
</names>
<text variable="title" font-style="italic"/>
<group delimiter=" " prefix="<<<" suffix=">>>">
<text variable="URL" suffix="|||"/>
<text variable="container-title-short"/>
<text variable="issue" />
<text variable="volume" prefix="(" suffix=")"/>
<text variable="page"/>
</group>
</group>
</layout>
</bibliography>
</style>
literature.bib
@article{Frixione_2007,
doi = {10.1088/1126-6708/2007/09/126},
url = {https://dx.doi.org/10.1088/1126-6708/2007/09/126},
year = {2007},
month = {sep},
publisher = {},
volume = {2007},
number = {09},
pages = {126},
author = {Stefano Frixione and Giovanni Ridolfi and Paolo Nason},
title = {A positive-weight next-to-leading-order Monte Carlo for heavy flavour hadroproduction},
journal = {Journal of High Energy Physics},
archivePrefix = {arXiv},
eprint = {0707.3088},
primaryClass = {hep-ph},
}
The first show rule is required, because normally regex show rules don’t match across different element types, so we need to remove the link typst automatically adds to the URL first by turning it into plain text.