Is the language of TMs that halt on some string recognizable?
You can construct a recognizer following the same principle used for the recognizer for HALT. The only extra bit is how you check "all" inputs without getting stuck in a non-terminating computation.

An important technique you can use here is called dovetailing (expressed with inputs from $\mathbb{N}$):


Simulate one step of $M$ on $1$.
Simulate two steps of $M$ on $1$ and $2$ each.
Simulate three steps on $1$, $2$ and $3$ each.


$\quad\vdots$


Terminate and accept once any of the simulated computations terminates and accepts.


If there is a halting input of $M$, this dovetailed simulation certainly finds it after finite time. If there is none, it loops and is correct in doing so.

This is, in essence, your $N$ (with an explanation why it's actually a computable function). You don't need the rest of the reduction in order to show that $L$ is semi-decidable.